From da9d345b3dd8fe67c0c7341e426b09bec8c40abd Mon Sep 17 00:00:00 2001 From: Yegappan Lakshmanan Date: Thu, 2 May 2024 13:02:36 +0200 Subject: patch 9.1.0387: Vim9: null value tests not sufficient Problem: Vim9: null value tests not sufficient Solution: Add a more comprehensive test for null values (Yegappan Lakshmanan) closes: #14701 Signed-off-by: Yegappan Lakshmanan Signed-off-by: Christian Brabandt --- src/testdir/test_vim9_builtin.vim | 2 -- src/testdir/test_vim9_class.vim | 26 +------------------------- src/testdir/test_vim9_script.vim | 28 ++++++++++++++++++++++++++++ 3 files changed, 29 insertions(+), 27 deletions(-) (limited to 'src/testdir') diff --git a/src/testdir/test_vim9_builtin.vim b/src/testdir/test_vim9_builtin.vim index 42d09fe9a5..83153ad085 100644 --- a/src/testdir/test_vim9_builtin.vim +++ b/src/testdir/test_vim9_builtin.vim @@ -4783,8 +4783,6 @@ def Test_typename() if has('channel') assert_equal('channel', test_null_channel()->typename()) endif - assert_equal('class', typename(null_class)) - assert_equal('object', typename(null_object)) var l: list): number> = [function('min')] assert_equal('list): number>', typename(l)) enddef diff --git a/src/testdir/test_vim9_class.vim b/src/testdir/test_vim9_class.vim index 0a48b822df..0754af7dec 100644 --- a/src/testdir/test_vim9_class.vim +++ b/src/testdir/test_vim9_class.vim @@ -560,7 +560,7 @@ def Test_using_null_class() END v9.CheckSourceSuccess(lines) - # Test for using a null class with string() + # Test for using a null class with type() and typename() lines =<< trim END vim9script assert_equal(12, type(null_class)) @@ -569,30 +569,6 @@ def Test_using_null_class() v9.CheckSourceSuccess(lines) enddef -def Test_using_null_object() - # Test for using a null object as a value - var lines =<< trim END - vim9script - assert_equal(1, empty(null_object)) - END - v9.CheckSourceSuccess(lines) - - # Test for using a null object with string() - lines =<< trim END - vim9script - assert_equal('object of [unknown]', string(null_object)) - END - v9.CheckSourceSuccess(lines) - - # Test for using a null object with string() - lines =<< trim END - vim9script - assert_equal(13, type(null_object)) - assert_equal('object', typename(null_object)) - END - v9.CheckSourceSuccess(lines) -enddef - def Test_class_interface_wrong_end() var lines =<< trim END vim9script diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim index a3f21bed02..9ec92b398d 100644 --- a/src/testdir/test_vim9_script.vim +++ b/src/testdir/test_vim9_script.vim @@ -5055,6 +5055,34 @@ def Test_eval_lambda_block() v9.CheckSourceSuccess(lines) enddef +" Test for using various null values +def Test_null_values() + var lines =<< trim END + var nullValues = [ + [null, 1, 'null', 7, 'special'], + [null_blob, 1, '0z', 10, 'blob'], + [null_channel, 1, 'channel fail', 9, 'channel'], + [null_dict, 1, '{}', 4, 'dict'], + [null_function, 1, "function('')", 2, 'func(...): unknown'], + [null_job, 1, 'no process', 8, 'job'], + [null_list, 1, '[]', 3, 'list'], + [null_object, 1, 'object of [unknown]', 13, 'object'], + [null_partial, 1, "function('')", 2, 'func(...): unknown'], + [null_string, 1, "''", 1, 'string'] + ] + + for [Val, emptyExp, stringExp, typeExp, typenameExp] in nullValues + assert_equal(emptyExp, empty(Val)) + assert_equal(stringExp, string(Val)) + assert_equal(typeExp, type(Val)) + assert_equal(typenameExp, typename(Val)) + assert_equal(Val, copy(Val)) + assert_equal(-1, test_refcount(Val)) + endfor + END + v9.CheckSourceDefAndScriptSuccess(lines) +enddef + " Keep this last, it messes up highlighting. def Test_substitute_cmd() new -- cgit v1.2.3