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