aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/testdir/test_undolevels.vim
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/testdir/test_undolevels.vim')
-rw-r--r--src/nvim/testdir/test_undolevels.vim46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/nvim/testdir/test_undolevels.vim b/src/nvim/testdir/test_undolevels.vim
new file mode 100644
index 0000000000..427cece24c
--- /dev/null
+++ b/src/nvim/testdir/test_undolevels.vim
@@ -0,0 +1,46 @@
+" Tests for 'undolevels'
+
+set nocompatible viminfo+=nviminfo
+
+func FillBuffer()
+ for i in range(1,13)
+ put=i
+ " Set 'undolevels' to split undo.
+ exe "setg ul=" . &g:ul
+ endfor
+endfunc
+
+func Test_global_local_undolevels()
+ new one
+ set undolevels=5
+ call FillBuffer()
+ " will only undo the last 5 changes, end up with 13 - (5 + 1) = 7 lines
+ earlier 10
+ call assert_equal(5, &g:undolevels)
+ call assert_equal(-123456, &l:undolevels)
+ call assert_equal('7', getline('$'))
+
+ new two
+ setlocal undolevels=2
+ call FillBuffer()
+ " will only undo the last 2 changes, end up with 13 - (2 + 1) = 10 lines
+ earlier 10
+ call assert_equal(5, &g:undolevels)
+ call assert_equal(2, &l:undolevels)
+ call assert_equal('10', getline('$'))
+
+ setlocal ul=10
+ call assert_equal(5, &g:undolevels)
+ call assert_equal(10, &l:undolevels)
+
+ " Setting local value in "two" must not change local value in "one"
+ wincmd p
+ call assert_equal(5, &g:undolevels)
+ call assert_equal(-123456, &l:undolevels)
+
+ new three
+ setglobal ul=50
+ call assert_equal(50, &g:undolevels)
+ call assert_equal(-123456, &l:undolevels)
+
+endfunc