diff src/testdir/test_vim9_builtin.vim @ 23788:d12ef361d9de v8.2.2435

patch 8.2.2435: setline() gives an error for some types Commit: https://github.com/vim/vim/commit/3445320839a38b3b0c253513b125da8298ec27d6 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jan 31 13:08:38 2021 +0100 patch 8.2.2435: setline() gives an error for some types Problem: setline() gives an error for some types. Solution: Allow any type, convert each item to a string.
author Bram Moolenaar <Bram@vim.org>
date Sun, 31 Jan 2021 13:15:04 +0100
parents 0512923e54e1
children 57f0e3fd7c05
line wrap: on
line diff
--- a/src/testdir/test_vim9_builtin.vim
+++ b/src/testdir/test_vim9_builtin.vim
@@ -767,6 +767,54 @@ def Test_searchcount()
   bwipe!
 enddef
 
+def Test_set_get_bufline()
+  # similar to Test_setbufline_getbufline()
+  var lines =<< trim END
+      new
+      var b = bufnr('%')
+      hide
+      assert_equal(0, setbufline(b, 1, ['foo', 'bar']))
+      assert_equal(['foo'], getbufline(b, 1))
+      assert_equal(['bar'], getbufline(b, '$'))
+      assert_equal(['foo', 'bar'], getbufline(b, 1, 2))
+      exe "bd!" b
+      assert_equal([], getbufline(b, 1, 2))
+
+      split Xtest
+      setline(1, ['a', 'b', 'c'])
+      b = bufnr('%')
+      wincmd w
+
+      assert_equal(1, setbufline(b, 5, 'x'))
+      assert_equal(1, setbufline(b, 5, ['x']))
+      assert_equal(1, setbufline(b, 5, []))
+      assert_equal(1, setbufline(b, 5, test_null_list()))
+
+      assert_equal(1, 'x'->setbufline(bufnr('$') + 1, 1))
+      assert_equal(1, ['x']->setbufline(bufnr('$') + 1, 1))
+      assert_equal(1, []->setbufline(bufnr('$') + 1, 1))
+      assert_equal(1, test_null_list()->setbufline(bufnr('$') + 1, 1))
+
+      assert_equal(['a', 'b', 'c'], getbufline(b, 1, '$'))
+
+      assert_equal(0, setbufline(b, 4, ['d', 'e']))
+      assert_equal(['c'], b->getbufline(3))
+      assert_equal(['d'], getbufline(b, 4))
+      assert_equal(['e'], getbufline(b, 5))
+      assert_equal([], getbufline(b, 6))
+      assert_equal([], getbufline(b, 2, 1))
+
+      setbufline(b, 2, [function('eval'), {key: 123}, test_null_job()])
+      assert_equal(["function('eval')",
+                      "{'key': 123}",
+                      "no process"],
+                      getbufline(b, 2, 4))
+
+      exe 'bwipe! ' .. b
+  END
+  CheckDefAndScriptSuccess(lines)
+enddef
+
 def Test_searchdecl()
   searchdecl('blah', true, true)->assert_equal(1)
 enddef