comparison src/testdir/test_blob.vim @ 24484:bc1a533148d7 v8.2.2782

patch 8.2.2782: Vim9: blob operations not fully tested Commit: https://github.com/vim/vim/commit/39211cba723a2cb58a97c7e08826713164b86efc Author: Bram Moolenaar <Bram@vim.org> Date: Sun Apr 18 15:48:04 2021 +0200 patch 8.2.2782: Vim9: blob operations not fully tested Problem: Vim9: blob operations not fully tested. Solution: Make more blob tests run in Vim9 script. Fix filter(). Make insert() give an error for a null blob, like add().
author Bram Moolenaar <Bram@vim.org>
date Sun, 18 Apr 2021 16:00:06 +0200
parents 3d5a66e478f8
children 5e0db87e5184
comparison
equal deleted inserted replaced
24483:798fcf242d48 24484:bc1a533148d7
377 call assert_true(empty(test_null_blob())) 377 call assert_true(empty(test_null_blob()))
378 endfunc 378 endfunc
379 379
380 " Test removing items in blob 380 " Test removing items in blob
381 func Test_blob_func_remove() 381 func Test_blob_func_remove()
382 " Test removing 1 element 382 let lines =<< trim END
383 let b = 0zDEADBEEF 383 #" Test removing 1 element
384 call assert_equal(0xDE, remove(b, 0)) 384 VAR b = 0zDEADBEEF
385 call assert_equal(0zADBEEF, b) 385 call assert_equal(0xDE, remove(b, 0))
386 386 call assert_equal(0zADBEEF, b)
387 let b = 0zDEADBEEF 387
388 call assert_equal(0xEF, remove(b, -1)) 388 LET b = 0zDEADBEEF
389 call assert_equal(0zDEADBE, b) 389 call assert_equal(0xEF, remove(b, -1))
390 390 call assert_equal(0zDEADBE, b)
391 let b = 0zDEADBEEF 391
392 call assert_equal(0xAD, remove(b, 1)) 392 LET b = 0zDEADBEEF
393 call assert_equal(0zDEBEEF, b) 393 call assert_equal(0xAD, remove(b, 1))
394 394 call assert_equal(0zDEBEEF, b)
395 " Test removing range of element(s) 395
396 let b = 0zDEADBEEF 396 #" Test removing range of element(s)
397 call assert_equal(0zBE, remove(b, 2, 2)) 397 LET b = 0zDEADBEEF
398 call assert_equal(0zDEADEF, b) 398 call assert_equal(0zBE, remove(b, 2, 2))
399 399 call assert_equal(0zDEADEF, b)
400 let b = 0zDEADBEEF 400
401 call assert_equal(0zADBE, remove(b, 1, 2)) 401 LET b = 0zDEADBEEF
402 call assert_equal(0zDEEF, b) 402 call assert_equal(0zADBE, remove(b, 1, 2))
403 call assert_equal(0zDEEF, b)
404 END
405 call CheckLegacyAndVim9Success(lines)
403 406
404 " Test invalid cases 407 " Test invalid cases
405 let b = 0zDEADBEEF 408 let lines =<< trim END
406 call assert_fails("call remove(b, 5)", 'E979:') 409 VAR b = 0zDEADBEEF
407 call assert_fails("call remove(b, 1, 5)", 'E979:') 410 call remove(b, 5)
408 call assert_fails("call remove(b, 3, 2)", 'E979:') 411 END
409 call assert_fails("call remove(1, 0)", 'E896:') 412 call CheckLegacyAndVim9Failure(lines, 'E979:')
410 call assert_fails("call remove(b, b)", 'E974:') 413
411 call assert_fails("call remove(b, 1, [])", 'E745:') 414 let lines =<< trim END
412 call assert_fails("call remove(test_null_blob(), 1, 2)", 'E979:') 415 VAR b = 0zDEADBEEF
416 call remove(b, 1, 5)
417 END
418 call CheckLegacyAndVim9Failure(lines, 'E979:')
419
420 let lines =<< trim END
421 VAR b = 0zDEADBEEF
422 call remove(b, 3, 2)
423 END
424 call CheckLegacyAndVim9Failure(lines, 'E979:')
425
426 let lines =<< trim END
427 VAR b = 0zDEADBEEF
428 call remove(1, 0)
429 END
430 call CheckLegacyAndVim9Failure(lines, 'E896:')
431
432 let lines =<< trim END
433 VAR b = 0zDEADBEEF
434 call remove(b, b)
435 END
436 call CheckLegacyAndVim9Failure(lines, 'E974:')
437
438 let lines =<< trim END
439 VAR b = 0zDEADBEEF
440 call remove(b, 1, [])
441 END
442 call CheckLegacyAndVim9Failure(lines, 'E745:')
443
444 let lines =<< trim END
445 VAR b = 0zDEADBEEF
446 call remove(test_null_blob(), 1, 2)
447 END
448 call CheckLegacyAndVim9Failure(lines, 'E979:')
413 endfunc 449 endfunc
414 450
415 func Test_blob_read_write() 451 func Test_blob_read_write()
416 let b = 0zDEADBEEF 452 let lines =<< trim END
417 call writefile(b, 'Xblob') 453 VAR b = 0zDEADBEEF
418 let br = readfile('Xblob', 'B') 454 call writefile(b, 'Xblob')
419 call assert_equal(b, br) 455 VAR br = readfile('Xblob', 'B')
420 call delete('Xblob') 456 call assert_equal(b, br)
457 call delete('Xblob')
458 END
459 call CheckLegacyAndVim9Success(lines)
421 460
422 " This was crashing when calling readfile() with a directory. 461 " This was crashing when calling readfile() with a directory.
423 call assert_fails("call readfile('.', 'B')", 'E17: "." is a directory') 462 call assert_fails("call readfile('.', 'B')", 'E17: "." is a directory')
424 endfunc 463 endfunc
425 464
426 " filter() item in blob 465 " filter() item in blob
427 func Test_blob_filter() 466 func Test_blob_filter()
428 call assert_equal(test_null_blob(), filter(test_null_blob(), '0')) 467 let lines =<< trim END
429 call assert_equal(0z, filter(0zDEADBEEF, '0')) 468 call assert_equal(test_null_blob(), filter(test_null_blob(), '0'))
430 call assert_equal(0zADBEEF, filter(0zDEADBEEF, 'v:val != 0xDE')) 469 call assert_equal(0z, filter(0zDEADBEEF, '0'))
431 call assert_equal(0zDEADEF, filter(0zDEADBEEF, 'v:val != 0xBE')) 470 call assert_equal(0zADBEEF, filter(0zDEADBEEF, 'v:val != 0xDE'))
432 call assert_equal(0zDEADBE, filter(0zDEADBEEF, 'v:val != 0xEF')) 471 call assert_equal(0zDEADEF, filter(0zDEADBEEF, 'v:val != 0xBE'))
433 call assert_equal(0zDEADBEEF, filter(0zDEADBEEF, '1')) 472 call assert_equal(0zDEADBE, filter(0zDEADBEEF, 'v:val != 0xEF'))
434 call assert_equal(0z01030103, filter(0z010203010203, 'v:val != 0x02')) 473 call assert_equal(0zDEADBEEF, filter(0zDEADBEEF, '1'))
435 call assert_equal(0zADEF, filter(0zDEADBEEF, 'v:key % 2')) 474 call assert_equal(0z01030103, filter(0z010203010203, 'v:val != 0x02'))
475 call assert_equal(0zADEF, filter(0zDEADBEEF, 'v:key % 2'))
476 END
477 call CheckLegacyAndVim9Success(lines)
436 endfunc 478 endfunc
437 479
438 " map() item in blob 480 " map() item in blob
439 func Test_blob_map() 481 func Test_blob_map()
440 call assert_equal(0zDFAEBFF0, map(0zDEADBEEF, 'v:val + 1')) 482 let lines =<< trim END
441 call assert_equal(0z00010203, map(0zDEADBEEF, 'v:key')) 483 call assert_equal(0zDFAEBFF0, map(0zDEADBEEF, 'v:val + 1'))
442 call assert_equal(0zDEAEC0F2, map(0zDEADBEEF, 'v:key + v:val')) 484 call assert_equal(0z00010203, map(0zDEADBEEF, 'v:key'))
443 485 call assert_equal(0zDEAEC0F2, map(0zDEADBEEF, 'v:key + v:val'))
444 call assert_fails("call map(0z00, '[9]')", 'E978:') 486 END
487 call CheckLegacyAndVim9Success(lines)
488
489 let lines =<< trim END
490 call map(0z00, '[9]')
491 END
492 call CheckLegacyAndVim9Failure(lines, 'E978:')
445 endfunc 493 endfunc
446 494
447 func Test_blob_index() 495 func Test_blob_index()
448 call assert_equal(2, index(0zDEADBEEF, 0xBE)) 496 let lines =<< trim END
449 call assert_equal(-1, index(0zDEADBEEF, 0)) 497 call assert_equal(2, index(0zDEADBEEF, 0xBE))
450 call assert_equal(2, index(0z11111111, 0x11, 2)) 498 call assert_equal(-1, index(0zDEADBEEF, 0))
451 call assert_equal(3, 0z11110111->index(0x11, 2)) 499 call assert_equal(2, index(0z11111111, 0x11, 2))
452 call assert_equal(2, index(0z11111111, 0x11, -2)) 500 call assert_equal(3, 0z11110111->index(0x11, 2))
453 call assert_equal(3, index(0z11110111, 0x11, -2)) 501 call assert_equal(2, index(0z11111111, 0x11, -2))
454 call assert_equal(0, index(0z11110111, 0x11, -10)) 502 call assert_equal(3, index(0z11110111, 0x11, -2))
455 call assert_fails("echo index(0z11110111, 0x11, [])", 'E745:') 503 call assert_equal(0, index(0z11110111, 0x11, -10))
456 call assert_equal(-1, index(test_null_blob(), 1)) 504 call assert_equal(-1, index(test_null_blob(), 1))
457 505 END
458 call assert_fails('call index("asdf", 0)', 'E897:') 506 call CheckLegacyAndVim9Success(lines)
507
508 let lines =<< trim END
509 echo index(0z11110111, 0x11, [])
510 END
511 call CheckLegacyAndVim9Failure(lines, 'E745:')
512
513 let lines =<< trim END
514 call index("asdf", 0)
515 END
516 call CheckLegacyAndVim9Failure(lines, 'E897:')
459 endfunc 517 endfunc
460 518
461 func Test_blob_insert() 519 func Test_blob_insert()
462 let b = 0zDEADBEEF 520 let lines =<< trim END
463 call insert(b, 0x33) 521 VAR b = 0zDEADBEEF
464 call assert_equal(0z33DEADBEEF, b) 522 call insert(b, 0x33)
465 523 call assert_equal(0z33DEADBEEF, b)
466 let b = 0zDEADBEEF 524
467 call insert(b, 0x33, 2) 525 LET b = 0zDEADBEEF
468 call assert_equal(0zDEAD33BEEF, b) 526 call insert(b, 0x33, 2)
469 527 call assert_equal(0zDEAD33BEEF, b)
470 call assert_fails('call insert(b, -1)', 'E475:') 528 END
471 call assert_fails('call insert(b, 257)', 'E475:') 529 call CheckLegacyAndVim9Success(lines)
472 call assert_fails('call insert(b, 0, [9])', 'E745:') 530
473 call assert_fails('call insert(b, 0, -20)', 'E475:') 531 " only works in legacy script
474 call assert_fails('call insert(b, 0, 20)', 'E475:')
475 call assert_fails('call insert(b, [])', 'E745:')
476 call assert_equal(0, insert(test_null_blob(), 0x33)) 532 call assert_equal(0, insert(test_null_blob(), 0x33))
533
534 let lines =<< trim END
535 VAR b = 0zDEADBEEF
536 call insert(b, -1)
537 END
538 call CheckLegacyAndVim9Failure(lines, 'E475:')
539
540 let lines =<< trim END
541 VAR b = 0zDEADBEEF
542 call insert(b, 257)
543 END
544 call CheckLegacyAndVim9Failure(lines, 'E475:')
545
546 let lines =<< trim END
547 VAR b = 0zDEADBEEF
548 call insert(b, 0, [9])
549 END
550 call CheckLegacyAndVim9Failure(lines, ['E745:', 'E1013:', 'E745:'])
551
552 let lines =<< trim END
553 VAR b = 0zDEADBEEF
554 call insert(b, 0, -20)
555 END
556 call CheckLegacyAndVim9Failure(lines, 'E475:')
557
558 let lines =<< trim END
559 VAR b = 0zDEADBEEF
560 call insert(b, 0, 20)
561 END
562 call CheckLegacyAndVim9Failure(lines, 'E475:')
563
564 let lines =<< trim END
565 VAR b = 0zDEADBEEF
566 call insert(b, [])
567 END
568 call CheckLegacyAndVim9Failure(lines, ['E745:', 'E1013:', 'E745:'])
569
570 let lines =<< trim END
571 insert(test_null_blob(), 0x33)
572 END
573 call CheckDefExecAndScriptFailure(lines, 'E1131:')
477 endfunc 574 endfunc
478 575
479 func Test_blob_reverse() 576 func Test_blob_reverse()
480 call assert_equal(0zEFBEADDE, reverse(0zDEADBEEF)) 577 let lines =<< trim END
481 call assert_equal(0zBEADDE, reverse(0zDEADBE)) 578 call assert_equal(0zEFBEADDE, reverse(0zDEADBEEF))
482 call assert_equal(0zADDE, reverse(0zDEAD)) 579 call assert_equal(0zBEADDE, reverse(0zDEADBE))
483 call assert_equal(0zDE, reverse(0zDE)) 580 call assert_equal(0zADDE, reverse(0zDEAD))
484 call assert_equal(0z, reverse(test_null_blob())) 581 call assert_equal(0zDE, reverse(0zDE))
582 call assert_equal(0z, reverse(test_null_blob()))
583 END
584 call CheckLegacyAndVim9Success(lines)
485 endfunc 585 endfunc
486 586
487 func Test_blob_json_encode() 587 func Test_blob_json_encode()
488 call assert_equal('[222,173,190,239]', json_encode(0zDEADBEEF)) 588 let lines =<< trim END
489 call assert_equal('[]', json_encode(0z)) 589 call assert_equal('[222,173,190,239]', json_encode(0zDEADBEEF))
590 call assert_equal('[]', json_encode(0z))
591 END
592 call CheckLegacyAndVim9Success(lines)
490 endfunc 593 endfunc
491 594
492 func Test_blob_lock() 595 func Test_blob_lock()
493 let b = 0z112233 596 let lines =<< trim END
494 lockvar b 597 let b = 0z112233
495 call assert_fails('let b = 0z44', 'E741:') 598 lockvar b
496 unlockvar b 599 unlockvar b
497 let b = 0z44 600 let b = 0z44
601 END
602 call CheckScriptSuccess(lines)
603
604 let lines =<< trim END
605 vim9script
606 var b = 0z112233
607 lockvar b
608 unlockvar b
609 b = 0z44
610 END
611 call CheckScriptSuccess(lines)
612
613 let lines =<< trim END
614 let b = 0z112233
615 lockvar b
616 let b = 0z44
617 END
618 call CheckScriptFailure(lines, 'E741:')
619
620 let lines =<< trim END
621 vim9script
622 var b = 0z112233
623 lockvar b
624 b = 0z44
625 END
626 call CheckScriptFailure(lines, 'E741:')
498 endfunc 627 endfunc
499 628
500 func Test_blob_sort() 629 func Test_blob_sort()
501 if has('float') 630 if has('float')
502 call assert_fails('call sort([1.0, 0z11], "f")', 'E975:') 631 call CheckLegacyAndVim9Failure(['call sort([1.0, 0z11], "f")'], 'E975:')
503 else
504 call assert_fails('call sort(["abc", 0z11], "f")', 'E702:')
505 endif 632 endif
633 call CheckLegacyAndVim9Failure(['call sort(["abc", 0z11], "f")'], 'E892:')
506 endfunc 634 endfunc
507 635
508 " vim: shiftwidth=2 sts=2 expandtab 636 " vim: shiftwidth=2 sts=2 expandtab