1" Tests for various eval things. 2 3function s:foo() abort 4 try 5 return [] == 0 6 catch 7 return 1 8 endtry 9endfunction 10 11func Test_catch_return_with_error() 12 call assert_equal(1, s:foo()) 13endfunc 14 15func Test_nocatch_restore_silent_emsg() 16 silent! try 17 throw 1 18 catch 19 endtry 20 echoerr 'wrong' 21 let c1 = nr2char(screenchar(&lines, 1)) 22 let c2 = nr2char(screenchar(&lines, 2)) 23 let c3 = nr2char(screenchar(&lines, 3)) 24 let c4 = nr2char(screenchar(&lines, 4)) 25 let c5 = nr2char(screenchar(&lines, 5)) 26 call assert_equal('wrong', c1 . c2 . c3 . c4 . c5) 27endfunc 28 29func Test_mkdir_p() 30 call mkdir('Xmkdir/nested', 'p') 31 call assert_true(isdirectory('Xmkdir/nested')) 32 try 33 " Trying to make existing directories doesn't error 34 call mkdir('Xmkdir', 'p') 35 call mkdir('Xmkdir/nested', 'p') 36 catch /E739:/ 37 call assert_report('mkdir(..., "p") failed for an existing directory') 38 endtry 39 " 'p' doesn't suppress real errors 40 call writefile([], 'Xfile') 41 call assert_fails('call mkdir("Xfile", "p")', 'E739') 42 call delete('Xfile') 43 call delete('Xmkdir', 'rf') 44 call assert_equal(0, mkdir(test_null_string())) 45 call assert_fails('call mkdir([])', 'E730') 46 call assert_fails('call mkdir("abc", [], [])', 'E745') 47endfunc 48 49func Test_line_continuation() 50 let array = [5, 51 "\ ignore this 52 \ 6, 53 "\ more to ignore 54 "\ more moreto ignore 55 \ ] 56 "\ and some more 57 call assert_equal([5, 6], array) 58endfunc 59 60func Test_E963() 61 " These commands used to cause an internal error prior to vim 8.1.0563 62 let v_e = v:errors 63 let v_o = v:oldfiles 64 call assert_fails("let v:errors=''", 'E963:') 65 call assert_equal(v_e, v:errors) 66 call assert_fails("let v:oldfiles=''", 'E963:') 67 call assert_equal(v_o, v:oldfiles) 68endfunc 69 70func Test_for_invalid() 71 call assert_fails("for x in 99", 'E714:') 72 call assert_fails("for x in 'asdf'", 'E714:') 73 call assert_fails("for x in {'a': 9}", 'E714:') 74endfunc 75 76func Test_readfile_binary() 77 new 78 call setline(1, ['one', 'two', 'three']) 79 setlocal ff=dos 80 silent write XReadfile 81 let lines = 'XReadfile'->readfile() 82 call assert_equal(['one', 'two', 'three'], lines) 83 let lines = readfile('XReadfile', '', 2) 84 call assert_equal(['one', 'two'], lines) 85 let lines = readfile('XReadfile', 'b') 86 call assert_equal(["one\r", "two\r", "three\r", ""], lines) 87 let lines = readfile('XReadfile', 'b', 2) 88 call assert_equal(["one\r", "two\r"], lines) 89 90 bwipe! 91 call delete('XReadfile') 92endfunc 93 94func Test_let_errmsg() 95 call assert_fails('let v:errmsg = []', 'E730:') 96 let v:errmsg = '' 97 call assert_fails('let v:errmsg = []', 'E730:') 98 let v:errmsg = '' 99endfunc 100 101func Test_string_concatenation() 102 call assert_equal('ab', 'a'.'b') 103 call assert_equal('ab', 'a' .'b') 104 call assert_equal('ab', 'a'. 'b') 105 call assert_equal('ab', 'a' . 'b') 106 107 call assert_equal('ab', 'a'..'b') 108 call assert_equal('ab', 'a' ..'b') 109 call assert_equal('ab', 'a'.. 'b') 110 call assert_equal('ab', 'a' .. 'b') 111 112 let a = 'a' 113 let b = 'b' 114 let a .= b 115 call assert_equal('ab', a) 116 117 let a = 'a' 118 let a.=b 119 call assert_equal('ab', a) 120 121 let a = 'a' 122 let a ..= b 123 call assert_equal('ab', a) 124 125 let a = 'a' 126 let a..=b 127 call assert_equal('ab', a) 128endfunc 129 130" Test fix for issue #4507 131func Test_skip_after_throw() 132 try 133 throw 'something' 134 let x = wincol() || &ts 135 catch /something/ 136 endtry 137endfunc 138 139scriptversion 2 140func Test_string_concat_scriptversion2() 141 call assert_true(has('vimscript-2')) 142 let a = 'a' 143 let b = 'b' 144 145 call assert_fails('echo a . b', 'E15:') 146 call assert_fails('let a .= b', 'E985:') 147 call assert_fails('let vers = 1.2.3', 'E15:') 148 149 if has('float') 150 let f = .5 151 call assert_equal(0.5, f) 152 endif 153endfunc 154 155scriptversion 1 156func Test_string_concat_scriptversion1() 157 call assert_true(has('vimscript-1')) 158 let a = 'a' 159 let b = 'b' 160 161 echo a . b 162 let a .= b 163 let vers = 1.2.3 164 call assert_equal('123', vers) 165 166 if has('float') 167 call assert_fails('let f = .5', 'E15:') 168 endif 169endfunc 170 171scriptversion 3 172func Test_vvar_scriptversion3() 173 call assert_true(has('vimscript-3')) 174 call assert_fails('echo version', 'E121:') 175 call assert_false(exists('version')) 176 let version = 1 177 call assert_equal(1, version) 178endfunc 179 180scriptversion 2 181func Test_vvar_scriptversion2() 182 call assert_true(exists('version')) 183 echo version 184 call assert_fails('let version = 1', 'E46:') 185 call assert_equal(v:version, version) 186 187 call assert_equal(v:version, v:versionlong / 10000) 188 call assert_true(v:versionlong > 8011525) 189endfunc 190 191func Test_dict_access_scriptversion2() 192 let l:x = {'foo': 1} 193 194 call assert_false(0 && l:x.foo) 195 call assert_true(1 && l:x.foo) 196endfunc 197 198scriptversion 4 199func Test_vvar_scriptversion4() 200 call assert_true(has('vimscript-4')) 201 call assert_equal(17, 017) 202 call assert_equal(18, 018) 203 call assert_equal(64, 0b1'00'00'00) 204 call assert_equal(1048576, 0x10'00'00) 205 call assert_equal(1000000, 1'000'000) 206 call assert_equal("1234", execute("echo 1'234")->trim()) 207 call assert_equal('1 234', execute("echo 1''234")->trim()) 208 call assert_fails("echo 1'''234", 'E115:') 209endfunc 210 211scriptversion 1 212func Test_vvar_scriptversion1() 213 call assert_equal(15, 017) 214 call assert_equal(18, 018) 215endfunc 216 217func Test_scriptversion_fail() 218 call writefile(['scriptversion 9'], 'Xversionscript') 219 call assert_fails('source Xversionscript', 'E999:') 220 call delete('Xversionscript') 221endfunc 222 223func Test_execute_cmd_with_null() 224 call assert_fails('execute test_null_list()', 'E730:') 225 call assert_fails('execute test_null_dict()', 'E731:') 226 call assert_fails('execute test_null_blob()', 'E976:') 227 execute test_null_string() 228 call assert_fails('execute test_null_partial()', 'E729:') 229 call assert_fails('execute test_unknown()', 'E908:') 230 if has('job') 231 call assert_fails('execute test_null_job()', 'E908:') 232 call assert_fails('execute test_null_channel()', 'E908:') 233 endif 234endfunc 235 236func Test_numbersize() 237 " This will fail on systems without 64 bit int support or when not configured 238 " correctly. 239 call assert_equal(64, v:numbersize) 240endfunc 241 242func Assert_reg(name, type, value, valuestr, expr, exprstr) 243 call assert_equal(a:type, getregtype(a:name)) 244 call assert_equal(a:value, getreg(a:name)) 245 call assert_equal(a:valuestr, string(getreg(a:name, 0, 1))) 246 call assert_equal(a:expr, getreg(a:name, 1)) 247 call assert_equal(a:exprstr, string(getreg(a:name, 1, 1))) 248endfunc 249 250func Test_let_register() 251 let @" = 'abc' 252 call Assert_reg('"', 'v', "abc", "['abc']", "abc", "['abc']") 253 let @" = "abc\n" 254 call Assert_reg('"', 'V', "abc\n", "['abc']", "abc\n", "['abc']") 255 let @" = "abc\<C-m>" 256 call Assert_reg('"', 'V', "abc\r\n", "['abc\r']", "abc\r\n", "['abc\r']") 257 let @= = '"abc"' 258 call Assert_reg('=', 'v', "abc", "['abc']", '"abc"', "['\"abc\"']") 259endfunc 260 261func Assert_regput(name, result) 262 new 263 execute "silent normal! o==\n==\e\"" . a:name . "P" 264 call assert_equal(a:result, getline(2, line('$'))) 265 bwipe! 266endfunc 267 268func Test_setreg_basic() 269 call setreg('a', 'abcA', 'c') 270 call Assert_reg('a', 'v', "abcA", "['abcA']", "abcA", "['abcA']") 271 call Assert_regput('a', ['==', '=abcA=']) 272 273 call setreg('A', 'abcAc', 'c') 274 call Assert_reg('A', 'v', "abcAabcAc", "['abcAabcAc']", "abcAabcAc", "['abcAabcAc']") 275 call Assert_regput('a', ['==', '=abcAabcAc=']) 276 277 call setreg('A', 'abcAl', 'l') 278 call Assert_reg('A', 'V', "abcAabcAcabcAl\n", "['abcAabcAcabcAl']", "abcAabcAcabcAl\n", "['abcAabcAcabcAl']") 279 call Assert_regput('a', ['==', 'abcAabcAcabcAl', '==']) 280 281 call setreg('A', 'abcAc2','c') 282 call Assert_reg('A', 'v', "abcAabcAcabcAl\nabcAc2", "['abcAabcAcabcAl', 'abcAc2']", "abcAabcAcabcAl\nabcAc2", "['abcAabcAcabcAl', 'abcAc2']") 283 call Assert_regput('a', ['==', '=abcAabcAcabcAl', 'abcAc2=']) 284 285 call setreg('b', 'abcB', 'v') 286 call Assert_reg('b', 'v', "abcB", "['abcB']", "abcB", "['abcB']") 287 call Assert_regput('b', ['==', '=abcB=']) 288 289 call setreg('b', 'abcBc', 'ca') 290 call Assert_reg('b', 'v', "abcBabcBc", "['abcBabcBc']", "abcBabcBc", "['abcBabcBc']") 291 call Assert_regput('b', ['==', '=abcBabcBc=']) 292 293 call setreg('b', 'abcBb', 'ba') 294 call Assert_reg('b', "\<C-V>5", "abcBabcBcabcBb", "['abcBabcBcabcBb']", "abcBabcBcabcBb", "['abcBabcBcabcBb']") 295 call Assert_regput('b', ['==', '=abcBabcBcabcBb=']) 296 297 call setreg('b', 'abcBc2','ca') 298 call Assert_reg('b', "v", "abcBabcBcabcBb\nabcBc2", "['abcBabcBcabcBb', 'abcBc2']", "abcBabcBcabcBb\nabcBc2", "['abcBabcBcabcBb', 'abcBc2']") 299 call Assert_regput('b', ['==', '=abcBabcBcabcBb', 'abcBc2=']) 300 301 call setreg('b', 'abcBb2','b50a') 302 call Assert_reg('b', "\<C-V>50", "abcBabcBcabcBb\nabcBc2abcBb2", "['abcBabcBcabcBb', 'abcBc2abcBb2']", "abcBabcBcabcBb\nabcBc2abcBb2", "['abcBabcBcabcBb', 'abcBc2abcBb2']") 303 call Assert_regput('b', ['==', '=abcBabcBcabcBb =', ' abcBc2abcBb2']) 304 305 call setreg('c', 'abcC', 'l') 306 call Assert_reg('c', 'V', "abcC\n", "['abcC']", "abcC\n", "['abcC']") 307 call Assert_regput('c', ['==', 'abcC', '==']) 308 309 call setreg('C', 'abcCl', 'l') 310 call Assert_reg('C', 'V', "abcC\nabcCl\n", "['abcC', 'abcCl']", "abcC\nabcCl\n", "['abcC', 'abcCl']") 311 call Assert_regput('c', ['==', 'abcC', 'abcCl', '==']) 312 313 call setreg('C', 'abcCc', 'c') 314 call Assert_reg('C', 'v', "abcC\nabcCl\nabcCc", "['abcC', 'abcCl', 'abcCc']", "abcC\nabcCl\nabcCc", "['abcC', 'abcCl', 'abcCc']") 315 call Assert_regput('c', ['==', '=abcC', 'abcCl', 'abcCc=']) 316 317 call setreg('d', 'abcD', 'V') 318 call Assert_reg('d', 'V', "abcD\n", "['abcD']", "abcD\n", "['abcD']") 319 call Assert_regput('d', ['==', 'abcD', '==']) 320 321 call setreg('D', 'abcDb', 'b') 322 call Assert_reg('d', "\<C-V>5", "abcD\nabcDb", "['abcD', 'abcDb']", "abcD\nabcDb", "['abcD', 'abcDb']") 323 call Assert_regput('d', ['==', '=abcD =', ' abcDb']) 324 325 call setreg('e', 'abcE', 'b') 326 call Assert_reg('e', "\<C-V>4", "abcE", "['abcE']", "abcE", "['abcE']") 327 call Assert_regput('e', ['==', '=abcE=']) 328 329 call setreg('E', 'abcEb', 'b') 330 call Assert_reg('E', "\<C-V>5", "abcE\nabcEb", "['abcE', 'abcEb']", "abcE\nabcEb", "['abcE', 'abcEb']") 331 call Assert_regput('e', ['==', '=abcE =', ' abcEb']) 332 333 call setreg('E', 'abcEl', 'l') 334 call Assert_reg('E', "V", "abcE\nabcEb\nabcEl\n", "['abcE', 'abcEb', 'abcEl']", "abcE\nabcEb\nabcEl\n", "['abcE', 'abcEb', 'abcEl']") 335 call Assert_regput('e', ['==', 'abcE', 'abcEb', 'abcEl', '==']) 336 337 call setreg('f', 'abcF', "\<C-v>") 338 call Assert_reg('f', "\<C-V>4", "abcF", "['abcF']", "abcF", "['abcF']") 339 call Assert_regput('f', ['==', '=abcF=']) 340 341 call setreg('F', 'abcFc', 'c') 342 call Assert_reg('F', "v", "abcF\nabcFc", "['abcF', 'abcFc']", "abcF\nabcFc", "['abcF', 'abcFc']") 343 call Assert_regput('f', ['==', '=abcF', 'abcFc=']) 344 345 call setreg('g', 'abcG', 'b10') 346 call Assert_reg('g', "\<C-V>10", "abcG", "['abcG']", "abcG", "['abcG']") 347 call Assert_regput('g', ['==', '=abcG =']) 348 349 call setreg('h', 'abcH', "\<C-v>10") 350 call Assert_reg('h', "\<C-V>10", "abcH", "['abcH']", "abcH", "['abcH']") 351 call Assert_regput('h', ['==', '=abcH =']) 352 353 call setreg('I', 'abcI') 354 call Assert_reg('I', "v", "abcI", "['abcI']", "abcI", "['abcI']") 355 call Assert_regput('I', ['==', '=abcI=']) 356 357 " Appending NL with setreg() 358 call setreg('a', 'abcA2', 'c') 359 call setreg('b', 'abcB2', 'v') 360 call setreg('c', 'abcC2', 'l') 361 call setreg('d', 'abcD2', 'V') 362 call setreg('e', 'abcE2', 'b') 363 call setreg('f', 'abcF2', "\<C-v>") 364 call setreg('g', 'abcG2', 'b10') 365 call setreg('h', 'abcH2', "\<C-v>10") 366 call setreg('I', 'abcI2') 367 368 call setreg('A', "\n") 369 call Assert_reg('A', 'V', "abcA2\n", "['abcA2']", "abcA2\n", "['abcA2']") 370 call Assert_regput('A', ['==', 'abcA2', '==']) 371 372 call setreg('B', "\n", 'c') 373 call Assert_reg('B', 'v', "abcB2\n", "['abcB2', '']", "abcB2\n", "['abcB2', '']") 374 call Assert_regput('B', ['==', '=abcB2', '=']) 375 376 call setreg('C', "\n") 377 call Assert_reg('C', 'V', "abcC2\n\n", "['abcC2', '']", "abcC2\n\n", "['abcC2', '']") 378 call Assert_regput('C', ['==', 'abcC2', '', '==']) 379 380 call setreg('D', "\n", 'l') 381 call Assert_reg('D', 'V', "abcD2\n\n", "['abcD2', '']", "abcD2\n\n", "['abcD2', '']") 382 call Assert_regput('D', ['==', 'abcD2', '', '==']) 383 384 call setreg('E', "\n") 385 call Assert_reg('E', 'V', "abcE2\n\n", "['abcE2', '']", "abcE2\n\n", "['abcE2', '']") 386 call Assert_regput('E', ['==', 'abcE2', '', '==']) 387 388 call setreg('F', "\n", 'b') 389 call Assert_reg('F', "\<C-V>0", "abcF2\n", "['abcF2', '']", "abcF2\n", "['abcF2', '']") 390 call Assert_regput('F', ['==', '=abcF2=', ' ']) 391 392 " Setting lists with setreg() 393 call setreg('a', ['abcA3'], 'c') 394 call Assert_reg('a', 'v', "abcA3", "['abcA3']", "abcA3", "['abcA3']") 395 call Assert_regput('a', ['==', '=abcA3=']) 396 397 call setreg('b', ['abcB3'], 'l') 398 call Assert_reg('b', 'V', "abcB3\n", "['abcB3']", "abcB3\n", "['abcB3']") 399 call Assert_regput('b', ['==', 'abcB3', '==']) 400 401 call setreg('c', ['abcC3'], 'b') 402 call Assert_reg('c', "\<C-V>5", "abcC3", "['abcC3']", "abcC3", "['abcC3']") 403 call Assert_regput('c', ['==', '=abcC3=']) 404 405 call setreg('d', ['abcD3']) 406 call Assert_reg('d', 'V', "abcD3\n", "['abcD3']", "abcD3\n", "['abcD3']") 407 call Assert_regput('d', ['==', 'abcD3', '==']) 408 409 call setreg('e', [1, 2, 'abc', 3]) 410 call Assert_reg('e', 'V', "1\n2\nabc\n3\n", "['1', '2', 'abc', '3']", "1\n2\nabc\n3\n", "['1', '2', 'abc', '3']") 411 call Assert_regput('e', ['==', '1', '2', 'abc', '3', '==']) 412 413 call setreg('f', [1, 2, 3]) 414 call Assert_reg('f', 'V', "1\n2\n3\n", "['1', '2', '3']", "1\n2\n3\n", "['1', '2', '3']") 415 call Assert_regput('f', ['==', '1', '2', '3', '==']) 416 417 " Appending lists with setreg() 418 call setreg('A', ['abcA3c'], 'c') 419 call Assert_reg('A', 'v', "abcA3\nabcA3c", "['abcA3', 'abcA3c']", "abcA3\nabcA3c", "['abcA3', 'abcA3c']") 420 call Assert_regput('A', ['==', '=abcA3', 'abcA3c=']) 421 422 call setreg('b', ['abcB3l'], 'la') 423 call Assert_reg('b', 'V', "abcB3\nabcB3l\n", "['abcB3', 'abcB3l']", "abcB3\nabcB3l\n", "['abcB3', 'abcB3l']") 424 call Assert_regput('b', ['==', 'abcB3', 'abcB3l', '==']) 425 426 call setreg('C', ['abcC3b'], 'lb') 427 call Assert_reg('C', "\<C-V>6", "abcC3\nabcC3b", "['abcC3', 'abcC3b']", "abcC3\nabcC3b", "['abcC3', 'abcC3b']") 428 call Assert_regput('C', ['==', '=abcC3 =', ' abcC3b']) 429 430 call setreg('D', ['abcD32']) 431 call Assert_reg('D', 'V', "abcD3\nabcD32\n", "['abcD3', 'abcD32']", "abcD3\nabcD32\n", "['abcD3', 'abcD32']") 432 call Assert_regput('D', ['==', 'abcD3', 'abcD32', '==']) 433 434 call setreg('A', ['abcA32']) 435 call Assert_reg('A', 'V', "abcA3\nabcA3c\nabcA32\n", "['abcA3', 'abcA3c', 'abcA32']", "abcA3\nabcA3c\nabcA32\n", "['abcA3', 'abcA3c', 'abcA32']") 436 call Assert_regput('A', ['==', 'abcA3', 'abcA3c', 'abcA32', '==']) 437 438 call setreg('B', ['abcB3c'], 'c') 439 call Assert_reg('B', 'v', "abcB3\nabcB3l\nabcB3c", "['abcB3', 'abcB3l', 'abcB3c']", "abcB3\nabcB3l\nabcB3c", "['abcB3', 'abcB3l', 'abcB3c']") 440 call Assert_regput('B', ['==', '=abcB3', 'abcB3l', 'abcB3c=']) 441 442 call setreg('C', ['abcC3l'], 'l') 443 call Assert_reg('C', 'V', "abcC3\nabcC3b\nabcC3l\n", "['abcC3', 'abcC3b', 'abcC3l']", "abcC3\nabcC3b\nabcC3l\n", "['abcC3', 'abcC3b', 'abcC3l']") 444 call Assert_regput('C', ['==', 'abcC3', 'abcC3b', 'abcC3l', '==']) 445 446 call setreg('D', ['abcD3b'], 'b') 447 call Assert_reg('D', "\<C-V>6", "abcD3\nabcD32\nabcD3b", "['abcD3', 'abcD32', 'abcD3b']", "abcD3\nabcD32\nabcD3b", "['abcD3', 'abcD32', 'abcD3b']") 448 call Assert_regput('D', ['==', '=abcD3 =', ' abcD32', ' abcD3b']) 449 450 " Appending lists with NL with setreg() 451 call setreg('A', ["\n", 'abcA3l2'], 'l') 452 call Assert_reg('A', "V", "abcA3\nabcA3c\nabcA32\n\n\nabcA3l2\n", "['abcA3', 'abcA3c', 'abcA32', '\n', 'abcA3l2']", "abcA3\nabcA3c\nabcA32\n\n\nabcA3l2\n", "['abcA3', 'abcA3c', 'abcA32', '\n', 'abcA3l2']") 453 call Assert_regput('A', ['==', 'abcA3', 'abcA3c', 'abcA32', "\n", 'abcA3l2', '==']) 454 455 call setreg('B', ["\n", 'abcB3c2'], 'c') 456 call Assert_reg('B', "v", "abcB3\nabcB3l\nabcB3c\n\n\nabcB3c2", "['abcB3', 'abcB3l', 'abcB3c', '\n', 'abcB3c2']", "abcB3\nabcB3l\nabcB3c\n\n\nabcB3c2", "['abcB3', 'abcB3l', 'abcB3c', '\n', 'abcB3c2']") 457 call Assert_regput('B', ['==', '=abcB3', 'abcB3l', 'abcB3c', "\n", 'abcB3c2=']) 458 459 call setreg('C', ["\n", 'abcC3b2'], 'b') 460 call Assert_reg('C', "7", "abcC3\nabcC3b\nabcC3l\n\n\nabcC3b2", "['abcC3', 'abcC3b', 'abcC3l', '\n', 'abcC3b2']", "abcC3\nabcC3b\nabcC3l\n\n\nabcC3b2", "['abcC3', 'abcC3b', 'abcC3l', '\n', 'abcC3b2']") 461 call Assert_regput('C', ['==', '=abcC3 =', ' abcC3b', ' abcC3l', " \n", ' abcC3b2']) 462 463 call setreg('D', ["\n", 'abcD3b50'],'b50') 464 call Assert_reg('D', "50", "abcD3\nabcD32\nabcD3b\n\n\nabcD3b50", "['abcD3', 'abcD32', 'abcD3b', '\n', 'abcD3b50']", "abcD3\nabcD32\nabcD3b\n\n\nabcD3b50", "['abcD3', 'abcD32', 'abcD3b', '\n', 'abcD3b50']") 465 call Assert_regput('D', ['==', '=abcD3 =', ' abcD32', ' abcD3b', " \n", ' abcD3b50']) 466 467 " Setting lists with NLs with setreg() 468 call setreg('a', ['abcA4-0', "\n", "abcA4-2\n", "\nabcA4-3", "abcA4-4\nabcA4-4-2"]) 469 call Assert_reg('a', "V", "abcA4-0\n\n\nabcA4-2\n\n\nabcA4-3\nabcA4-4\nabcA4-4-2\n", "['abcA4-0', '\n', 'abcA4-2\n', '\nabcA4-3', 'abcA4-4\nabcA4-4-2']", "abcA4-0\n\n\nabcA4-2\n\n\nabcA4-3\nabcA4-4\nabcA4-4-2\n", "['abcA4-0', '\n', 'abcA4-2\n', '\nabcA4-3', 'abcA4-4\nabcA4-4-2']") 470 call Assert_regput('a', ['==', 'abcA4-0', "\n", "abcA4-2\n", "\nabcA4-3", "abcA4-4\nabcA4-4-2", '==']) 471 472 call setreg('b', ['abcB4c-0', "\n", "abcB4c-2\n", "\nabcB4c-3", "abcB4c-4\nabcB4c-4-2"], 'c') 473 call Assert_reg('b', "v", "abcB4c-0\n\n\nabcB4c-2\n\n\nabcB4c-3\nabcB4c-4\nabcB4c-4-2", "['abcB4c-0', '\n', 'abcB4c-2\n', '\nabcB4c-3', 'abcB4c-4\nabcB4c-4-2']", "abcB4c-0\n\n\nabcB4c-2\n\n\nabcB4c-3\nabcB4c-4\nabcB4c-4-2", "['abcB4c-0', '\n', 'abcB4c-2\n', '\nabcB4c-3', 'abcB4c-4\nabcB4c-4-2']") 474 call Assert_regput('b', ['==', '=abcB4c-0', "\n", "abcB4c-2\n", "\nabcB4c-3", "abcB4c-4\nabcB4c-4-2="]) 475 476 call setreg('c', ['abcC4l-0', "\n", "abcC4l-2\n", "\nabcC4l-3", "abcC4l-4\nabcC4l-4-2"], 'l') 477 call Assert_reg('c', "V", "abcC4l-0\n\n\nabcC4l-2\n\n\nabcC4l-3\nabcC4l-4\nabcC4l-4-2\n", "['abcC4l-0', '\n', 'abcC4l-2\n', '\nabcC4l-3', 'abcC4l-4\nabcC4l-4-2']", "abcC4l-0\n\n\nabcC4l-2\n\n\nabcC4l-3\nabcC4l-4\nabcC4l-4-2\n", "['abcC4l-0', '\n', 'abcC4l-2\n', '\nabcC4l-3', 'abcC4l-4\nabcC4l-4-2']") 478 call Assert_regput('c', ['==', 'abcC4l-0', "\n", "abcC4l-2\n", "\nabcC4l-3", "abcC4l-4\nabcC4l-4-2", '==']) 479 480 call setreg('d', ['abcD4b-0', "\n", "abcD4b-2\n", "\nabcD4b-3", "abcD4b-4\nabcD4b-4-2"], 'b') 481 call Assert_reg('d', "19", "abcD4b-0\n\n\nabcD4b-2\n\n\nabcD4b-3\nabcD4b-4\nabcD4b-4-2", "['abcD4b-0', '\n', 'abcD4b-2\n', '\nabcD4b-3', 'abcD4b-4\nabcD4b-4-2']", "abcD4b-0\n\n\nabcD4b-2\n\n\nabcD4b-3\nabcD4b-4\nabcD4b-4-2", "['abcD4b-0', '\n', 'abcD4b-2\n', '\nabcD4b-3', 'abcD4b-4\nabcD4b-4-2']") 482 call Assert_regput('d', ['==', '=abcD4b-0 =', " \n", " abcD4b-2\n", " \nabcD4b-3", " abcD4b-4\nabcD4b-4-2"]) 483 484 call setreg('e', ['abcE4b10-0', "\n", "abcE4b10-2\n", "\nabcE4b10-3", "abcE4b10-4\nabcE4b10-4-2"], 'b10') 485 call Assert_reg('e', "10", "abcE4b10-0\n\n\nabcE4b10-2\n\n\nabcE4b10-3\nabcE4b10-4\nabcE4b10-4-2", "['abcE4b10-0', '\n', 'abcE4b10-2\n', '\nabcE4b10-3', 'abcE4b10-4\nabcE4b10-4-2']", "abcE4b10-0\n\n\nabcE4b10-2\n\n\nabcE4b10-3\nabcE4b10-4\nabcE4b10-4-2", "['abcE4b10-0', '\n', 'abcE4b10-2\n', '\nabcE4b10-3', 'abcE4b10-4\nabcE4b10-4-2']") 486 call Assert_regput('e', ['==', '=abcE4b10-0=', " \n", " abcE4b10-2\n", " \nabcE4b10-3", " abcE4b10-4\nabcE4b10-4-2"]) 487 488 " Search and expressions 489 call setreg('/', ['abc/']) 490 call Assert_reg('/', 'v', "abc/", "['abc/']", "abc/", "['abc/']") 491 call Assert_regput('/', ['==', '=abc/=']) 492 493 call setreg('/', ["abc/\n"]) 494 call Assert_reg('/', 'v', "abc/\n", "['abc/\n']", "abc/\n", "['abc/\n']") 495 call Assert_regput('/', ['==', "=abc/\n="]) 496 497 call setreg('=', ['"abc/"']) 498 call Assert_reg('=', 'v', "abc/", "['abc/']", '"abc/"', "['\"abc/\"']") 499 500 call setreg('=', ["\"abc/\n\""]) 501 call Assert_reg('=', 'v', "abc/\n", "['abc/\n']", "\"abc/\n\"", "['\"abc/\n\"']") 502 503 " System clipboard 504 if has('clipboard') 505 new | only! 506 call setline(1, ['clipboard contents', 'something else']) 507 " Save and restore system clipboard. 508 " If no connection to X-Server is possible, test should succeed. 509 let _clipreg = ['*', getreg('*'), getregtype('*')] 510 let _clipopt = &cb 511 let &cb='unnamed' 512 1y 513 call Assert_reg('*', 'V', "clipboard contents\n", "['clipboard contents']", "clipboard contents\n", "['clipboard contents']") 514 tabdo :windo :echo "hi" 515 2y 516 call Assert_reg('*', 'V', "something else\n", "['something else']", "something else\n", "['something else']") 517 let &cb=_clipopt 518 call call('setreg', _clipreg) 519 enew! 520 endif 521 522 " Error cases 523 call assert_fails('call setreg()', 'E119:') 524 call assert_fails('call setreg(1)', 'E119:') 525 call assert_fails('call setreg(1, 2, 3, 4)', 'E118:') 526 call assert_fails('call setreg([], 2)', 'E730:') 527 call assert_fails('call setreg(1, {})', 'E731:') 528 call assert_fails('call setreg(1, 2, [])', 'E730:') 529 call assert_fails('call setreg("/", ["1", "2"])', 'E883:') 530 call assert_fails('call setreg("=", ["1", "2"])', 'E883:') 531 call assert_fails('call setreg(1, ["", "", [], ""])', 'E730:') 532endfunc 533 534" vim: shiftwidth=2 sts=2 expandtab 535