Mercurial > vim
comparison src/testdir/test_vim9_script.vim @ 19892:5feb426d2ea1 v8.2.0502
patch 8.2.0502: Vim9: some code is not tested
Commit: https://github.com/vim/vim/commit/e8c4abbbd711af8fd3ed85ea69e9ac3d63a0d879
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Apr 2 21:13:25 2020 +0200
patch 8.2.0502: Vim9: some code is not tested
Problem: Vim9: some code is not tested.
Solution: Add more tests. Fix uncovered problems.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 02 Apr 2020 21:15:04 +0200 |
parents | 2b117844f784 |
children | ea4f8e789627 |
comparison
equal
deleted
inserted
replaced
19891:e1168788aa04 | 19892:5feb426d2ea1 |
---|---|
466 seq ..= 'x' | 466 seq ..= 'x' |
467 catch /some/ | 467 catch /some/ |
468 seq ..= 'b' | 468 seq ..= 'b' |
469 catch /asdf/ | 469 catch /asdf/ |
470 seq ..= 'x' | 470 seq ..= 'x' |
471 catch ?a\?sdf? | |
472 seq ..= 'y' | |
471 finally | 473 finally |
472 seq ..= 'c' | 474 seq ..= 'c' |
473 endtry | 475 endtry |
474 assert_equal('abc', seq) | 476 assert_equal('abc', seq) |
477 enddef | |
478 | |
479 def Test_try_catch_fails() | |
480 call CheckDefFailure(['catch'], 'E603:') | |
481 call CheckDefFailure(['try', 'echo 0', 'catch','catch'], 'E1033:') | |
482 call CheckDefFailure(['try', 'echo 0', 'catch /pat'], 'E1067:') | |
475 enddef | 483 enddef |
476 | 484 |
477 let s:export_script_lines =<< trim END | 485 let s:export_script_lines =<< trim END |
478 vim9script | 486 vim9script |
479 let name: string = 'bob' | 487 let name: string = 'bob' |
924 assert_equal('one', IfElse(1)) | 932 assert_equal('one', IfElse(1)) |
925 assert_equal('two', IfElse(2)) | 933 assert_equal('two', IfElse(2)) |
926 assert_equal('three', IfElse(3)) | 934 assert_equal('three', IfElse(3)) |
927 enddef | 935 enddef |
928 | 936 |
937 def Test_if_elseif_else_fails() | |
938 call CheckDefFailure(['elseif true'], 'E582:') | |
939 call CheckDefFailure(['else'], 'E581:') | |
940 call CheckDefFailure(['endif'], 'E580:') | |
941 call CheckDefFailure(['if true', 'elseif xxx'], 'E1001:') | |
942 enddef | |
943 | |
929 let g:bool_true = v:true | 944 let g:bool_true = v:true |
930 let g:bool_false = v:false | 945 let g:bool_false = v:false |
931 | 946 |
932 def Test_if_const_expr() | 947 def Test_if_const_expr() |
933 let res = false | 948 let res = false |
971 res = true | 986 res = true |
972 endif | 987 endif |
973 assert_equal(false, res) | 988 assert_equal(false, res) |
974 | 989 |
975 res = false | 990 res = false |
991 if has('xyz') ? true : false | |
992 res = true | |
993 endif | |
994 assert_equal(false, res) | |
995 | |
996 res = false | |
976 if true && true | 997 if true && true |
977 res = true | 998 res = true |
978 endif | 999 endif |
979 assert_equal(true, res) | 1000 assert_equal(true, res) |
980 | 1001 |
1028 enddef | 1049 enddef |
1029 | 1050 |
1030 def Test_if_const_expr_fails() | 1051 def Test_if_const_expr_fails() |
1031 call CheckDefFailure(['if "aaa" == "bbb'], 'E114:') | 1052 call CheckDefFailure(['if "aaa" == "bbb'], 'E114:') |
1032 call CheckDefFailure(["if 'aaa' == 'bbb"], 'E115:') | 1053 call CheckDefFailure(["if 'aaa' == 'bbb"], 'E115:') |
1054 call CheckDefFailure(["if has('aaa'"], 'E110:') | |
1055 call CheckDefFailure(["if has('aaa') ? true false"], 'E109:') | |
1033 enddef | 1056 enddef |
1034 | 1057 |
1035 def Test_delfunc() | 1058 def Test_delfunc() |
1036 let lines =<< trim END | 1059 let lines =<< trim END |
1037 vim9script | 1060 vim9script |
1094 writefile(lines, 'Xvim9for.vim') | 1117 writefile(lines, 'Xvim9for.vim') |
1095 source Xvim9for.vim | 1118 source Xvim9for.vim |
1096 delete('Xvim9for.vim') | 1119 delete('Xvim9for.vim') |
1097 enddef | 1120 enddef |
1098 | 1121 |
1122 def Test_for_loop() | |
1123 let result = '' | |
1124 for cnt in range(7) | |
1125 if cnt == 4 | |
1126 break | |
1127 endif | |
1128 if cnt == 2 | |
1129 continue | |
1130 endif | |
1131 result ..= cnt .. '_' | |
1132 endfor | |
1133 assert_equal('0_1_3_', result) | |
1134 enddef | |
1135 | |
1136 def Test_for_loop_fails() | |
1137 call CheckDefFailure(['for # in range(5)'], 'E690:') | |
1138 call CheckDefFailure(['for i In range(5)'], 'E690:') | |
1139 call CheckDefFailure(['let x = 5', 'for x in range(5)'], 'E1023:') | |
1140 call CheckScriptFailure(['def Func(arg)', 'for arg in range(5)', 'enddef'], 'E1006:') | |
1141 call CheckDefFailure(['for i in "text"'], 'E1024:') | |
1142 call CheckDefFailure(['for i in xxx'], 'E1001:') | |
1143 call CheckDefFailure(['endfor'], 'E588:') | |
1144 enddef | |
1145 | |
1099 def Test_while_loop() | 1146 def Test_while_loop() |
1100 let result = '' | 1147 let result = '' |
1101 let cnt = 0 | 1148 let cnt = 0 |
1102 while cnt < 555 | 1149 while cnt < 555 |
1103 if cnt == 3 | 1150 if cnt == 3 |
1110 result ..= cnt .. '_' | 1157 result ..= cnt .. '_' |
1111 endwhile | 1158 endwhile |
1112 assert_equal('1_3_', result) | 1159 assert_equal('1_3_', result) |
1113 enddef | 1160 enddef |
1114 | 1161 |
1115 def Test_for_loop_fails() | 1162 def Test_while_loop_fails() |
1116 call CheckDefFailure(['for # in range(5)'], 'E690:') | 1163 call CheckDefFailure(['while xxx'], 'E1001:') |
1117 call CheckDefFailure(['for i In range(5)'], 'E690:') | 1164 call CheckDefFailure(['endwhile'], 'E588:') |
1118 call CheckDefFailure(['let x = 5', 'for x in range(5)'], 'E1023:') | 1165 call CheckDefFailure(['continue'], 'E586:') |
1119 call CheckScriptFailure(['def Func(arg)', 'for arg in range(5)', 'enddef'], 'E1006:') | 1166 call CheckDefFailure(['if true', 'continue'], 'E586:') |
1120 call CheckDefFailure(['for i in "text"'], 'E1024:') | 1167 call CheckDefFailure(['break'], 'E587:') |
1168 call CheckDefFailure(['if true', 'break'], 'E587:') | |
1121 enddef | 1169 enddef |
1122 | 1170 |
1123 def Test_interrupt_loop() | 1171 def Test_interrupt_loop() |
1124 let caught = false | 1172 let caught = false |
1125 let x = 0 | 1173 let x = 0 |