From c0f5a78c15b194f23bedb82e6825e34f481e6532 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 13 Jan 2019 15:16:13 +0100 Subject: patch 8.1.0736: code for Blob not sufficiently tested Problem: Code for Blob not sufficiently tested. Solution: Add more tests. Fix uncovered crash. Add test_null_blob(). --- src/testdir/test49.vim | 6 ++-- src/testdir/test_assign.vim | 12 ++++++-- src/testdir/test_blob.vim | 63 ++++++++++++++++++++++++++++++++++++++++- src/testdir/test_eval_stuff.vim | 6 ++++ src/testdir/test_lambda.vim | 4 +-- 5 files changed, 83 insertions(+), 8 deletions(-) (limited to 'src/testdir') diff --git a/src/testdir/test49.vim b/src/testdir/test49.vim index 0f825a255..97088f01e 100644 --- a/src/testdir/test49.vim +++ b/src/testdir/test49.vim @@ -1,6 +1,6 @@ " Vim script language tests " Author: Servatius Brandt -" Last Change: 2019 Jan 09 +" Last Change: 2019 Jan 13 "------------------------------------------------------------------------------- " Test environment {{{1 @@ -3694,7 +3694,7 @@ endif if ExtraVim(msgfile) try Xpath 4194304 " X: 4194304 - let x = novar " error E121/E15; exception: E121 + let x = novar " error E121; exception: E121 catch /E15:/ " should not catch Xpath 8388608 " X: 0 endtry @@ -3702,7 +3702,7 @@ if ExtraVim(msgfile) endif Xpath 33554432 " X: 33554432 -if !MESSAGES('E121', "Undefined variable", 'E15', "Invalid expression") +if !MESSAGES('E121', "Undefined variable") Xpath 67108864 " X: 0 endif diff --git a/src/testdir/test_assign.vim b/src/testdir/test_assign.vim index 317d45867..1715a3f03 100644 --- a/src/testdir/test_assign.vim +++ b/src/testdir/test_assign.vim @@ -23,11 +23,11 @@ func Test_let_termcap() let &t_k1 = old_t_k1 endif - call assert_fails('let x = &t_xx', 'E15') + call assert_fails('let x = &t_xx', 'E113') let &t_xx = "yes" call assert_equal("yes", &t_xx) let &t_xx = "" - call assert_fails('let x = &t_xx', 'E15') + call assert_fails('let x = &t_xx', 'E113') endfunc func Test_let_option_error() @@ -43,3 +43,11 @@ func Test_let_option_error() call assert_equal("vert:|", &fillchars) let &fillchars = _w endfunc + +func Test_let_errors() + let s = 'abcd' + call assert_fails('let s[1] = 5', 'E689:') + + let l = [1, 2, 3] + call assert_fails('let l[:] = 5', 'E709:') +endfunc diff --git a/src/testdir/test_blob.vim b/src/testdir/test_blob.vim index 4ab28eb4f..550b8f1b9 100644 --- a/src/testdir/test_blob.vim +++ b/src/testdir/test_blob.vim @@ -21,6 +21,12 @@ func Test_blob_create() call assert_equal(0xDE, get(b, 0)) call assert_equal(0xEF, get(b, 3)) call assert_fails('let x = get(b, 4)') + + call assert_fails('let b = 0z1', 'E973:') + call assert_fails('let b = 0z1x', 'E973:') + call assert_fails('let b = 0z12345', 'E973:') + + call assert_equal(0z, test_null_blob()) endfunc " assignment to a blob @@ -32,6 +38,45 @@ func Test_blob_assign() let bcopy = b[:] call assert_equal(b, bcopy) call assert_false(b is bcopy) + + let b = 0zDEADBEEF + let b2 = b + call assert_true(b is b2) + let b[:] = 0z11223344 + call assert_equal(0z11223344, b) + call assert_equal(0z11223344, b2) + call assert_true(b is b2) + + let b = 0zDEADBEEF + let b[3:] = 0z66 + call assert_equal(0zDEADBE66, b) + let b[:1] = 0z8899 + call assert_equal(0z8899BE66, b) + + call assert_fails('let b[2:3] = 0z112233', 'E972:') + call assert_fails('let b[2:3] = 0z11', 'E972:') + call assert_fails('let b[3:2] = 0z', 'E979:') + + let b = 0zDEADBEEF + let b += 0z99 + call assert_equal(0zDEADBEEF99, b) + + call assert_fails('let b .= 0z33', 'E734:') + call assert_fails('let b .= "xx"', 'E734:') + call assert_fails('let b += "xx"', 'E734:') + call assert_fails('let b[1:1] .= 0z55', 'E734:') +endfunc + +func Test_blob_get_range() + let b = 0z0011223344 + call assert_equal(0z2233, b[2:3]) + call assert_equal(0z223344, b[2:-1]) + call assert_equal(0z00, b[0:-5]) + call assert_equal(0z, b[0:-11]) + call assert_equal(0z44, b[-1:]) + call assert_equal(0z0011223344, b[:]) + call assert_equal(0z0011223344, b[:-1]) + call assert_equal(0z, b[5:6]) endfunc func Test_blob_to_string() @@ -44,8 +89,12 @@ endfunc func Test_blob_compare() let b1 = 0z0011 let b2 = 0z1100 + let b3 = 0z001122 + call assert_true(b1 == b1) call assert_false(b1 == b2) + call assert_false(b1 == b3) call assert_true(b1 != b2) + call assert_true(b1 != b3) call assert_true(b1 == 0z0011) call assert_false(b1 is b2) @@ -65,7 +114,7 @@ func Test_blob_range_assign() let b[1] = 0x11 let b[2] = 0x22 call assert_equal(0z001122, b) - call assert_fails('let b[4] = 0x33') + call assert_fails('let b[4] = 0x33', 'E979:') endfunc func Test_blob_for_loop() @@ -177,3 +226,15 @@ func Test_blob_json_encode() call assert_equal('[222,173,190,239]', json_encode(0zDEADBEEF)) call assert_equal('[]', json_encode(0z)) endfunc + +func Test_blob_lock() + let b = 0z112233 + lockvar b + call assert_fails('let b = 0z44', 'E741:') + unlockvar b + let b = 0z44 +endfunc + +func Test_blob_sort() + call assert_fails('call sort([1.0, 0z11], "f")', 'E975:') +endfunc diff --git a/src/testdir/test_eval_stuff.vim b/src/testdir/test_eval_stuff.vim index a1aa78878..dc3cb8919 100644 --- a/src/testdir/test_eval_stuff.vim +++ b/src/testdir/test_eval_stuff.vim @@ -63,3 +63,9 @@ func Test_E963() call assert_fails("let v:oldfiles=''", 'E963:') call assert_equal(v_o, v:oldfiles) endfunc + +func Test_for_invalid() + call assert_fails("for x in 99", 'E714:') + call assert_fails("for x in 'asdf'", 'E714:') + call assert_fails("for x in {'a': 9}", 'E714:') +endfunc diff --git a/src/testdir/test_lambda.vim b/src/testdir/test_lambda.vim index 7a31dcc1e..4ff3e20f1 100644 --- a/src/testdir/test_lambda.vim +++ b/src/testdir/test_lambda.vim @@ -49,7 +49,7 @@ endfunc function Test_lambda_fails() call assert_equal(3, {a, b -> a + b}(1, 2)) - call assert_fails('echo {a, a -> a + a}(1, 2)', 'E15:') + call assert_fails('echo {a, a -> a + a}(1, 2)', 'E853:') call assert_fails('echo {a, b -> a + b)}(1, 2)', 'E15:') endfunc @@ -169,7 +169,7 @@ func Test_lambda_scope() let l:D = s:NewCounter2() call assert_equal(1, l:C()) - call assert_fails(':call l:D()', 'E15:') " E121: then E15: + call assert_fails(':call l:D()', 'E121:') call assert_equal(2, l:C()) endfunc -- cgit v1.2.1