Mercurial > vim
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 |