+++ /dev/null
-Tests for undo file.
-Since this script is sourced we need to explicitly break changes up in
-undo-able pieces. Do that by setting 'undolevels'.
-
-STARTTEST
-:so small.vim
-:set belloff=all
-:"
-:" Test 'undofile': first a simple one-line change.
-:set nocompatible viminfo+=nviminfo visualbell
-:set ul=100 undofile nomore
-:e! Xtestfile
-ggdGithis is one line\e:set ul=100
-:s/one/ONE/
-:set ul=100
-:w
-:bwipe!
-:e Xtestfile
-u:.w! test.out
-:"
-:" Test 'undofile', change in original file fails check
-:set noundofile
-:e! Xtestfile
-:s/line/Line/
-:w
-:set undofile
-:bwipe!
-:e Xtestfile
-u:.w >>test.out
-:"
-:" Test 'undofile', add 10 lines, delete 6 lines, undo 3
-:set undofile
-ggdGione
-two
-three
-four
-five
-six
-seven
-eight
-nine
-ten\e:set ul=100
-3Gdd:set ul=100
-dd:set ul=100
-dd:set ul=100
-dd:set ul=100
-dd:set ul=100
-dd:set ul=100
-:w
-:bwipe!
-:e Xtestfile
-uuu:w >>test.out
-:"
-:" Test that reading the undofiles when setting undofile works
-:set noundofile ul=0
-i
-\eu:e! Xtestfile
-:set undofile ul=100
-uuuuuu:w >>test.out
-:" And now with encryption, cryptmethod=zip
-:e! Xtestfile
-:set undofile cm=zip
-ggdGimonday
-tuesday
-wednesday
-thursday
-friday\e:set ul=100
-kkkdd:set ul=100
-dd:set ul=100
-dd:set ul=100
-:X
-foobar
-foobar
-:w!
-:bwipe!
-:e Xtestfile
-foobar
-:set key=
-uu:w >>test.out
-:"
-:"
-:" With encryption, cryptmethod=blowfish
-:e! Xtestfile
-rubbish
-:set undofile cm=blowfish ff&
-ggdGijan
-feb
-mar
-apr
-jun\e:set ul=100
-kk0ifoo \e:set ul=100
-dd:set ul=100
-ibar \e:set ul=100
-:X
-foobar
-foobar
-:w!
-:bwipe!
-:e Xtestfile
-foobar
-:set key=
-/bar
-:.w >>test.out
-u:.w >>test.out
-u:.w >>test.out
-u:.w >>test.out
-:"
-:" With encryption, cryptmethod=blowfish2
-:e! Xtestfile
-rubbish
-:set undofile cm=blowfish2 ff&
-ggdGijan
-feb
-mar
-apr
-jun\e:set ul=100
-kk0ifoo \e:set ul=100
-dd:set ul=100
-ibar \e:set ul=100
-:X
-foo2bar
-foo2bar
-:w!
-:bwipe!
-:e Xtestfile
-foo2bar
-:set key=
-/bar
-:.w >>test.out
-u:.w >>test.out
-u:.w >>test.out
-u:.w >>test.out
-:"
-:" Rename the undo file so that it gets cleaned up.
-:if has("vms")
-: call rename("_un_Xtestfile", "Xtestundo")
-:else
-: call rename(".Xtestfile.un~", "Xtestundo")
-:endif
-:qa!
-ENDTEST
-
-1111 -----
-2222 -----
-
-123456789
set undodir&
endfunc
+
+" Tests for the undo file
+" Explicitly break changes up in undo-able pieces by setting 'undolevels'.
+func Test_undofile_2()
+ set undolevels=100 undofile
+ edit Xtestfile
+ call append(0, 'this is one line')
+ call cursor(1, 1)
+
+ " first a simple one-line change.
+ set undolevels=100
+ s/one/ONE/
+ set undolevels=100
+ write
+ bwipe!
+ edit Xtestfile
+ undo
+ call assert_equal('this is one line', getline(1))
+
+ " change in original file fails check
+ set noundofile
+ edit! Xtestfile
+ s/line/Line/
+ write
+ set undofile
+ bwipe!
+ edit Xtestfile
+ undo
+ call assert_equal('this is ONE Line', getline(1))
+
+ " add 10 lines, delete 6 lines, undo 3
+ set undofile
+ call setbufline(0, 1, ['one', 'two', 'three', 'four', 'five', 'six',
+ \ 'seven', 'eight', 'nine', 'ten'])
+ set undolevels=100
+ normal 3Gdd
+ set undolevels=100
+ normal dd
+ set undolevels=100
+ normal dd
+ set undolevels=100
+ normal dd
+ set undolevels=100
+ normal dd
+ set undolevels=100
+ normal dd
+ set undolevels=100
+ write
+ bwipe!
+ edit Xtestfile
+ normal uuu
+ call assert_equal(['one', 'two', 'six', 'seven', 'eight', 'nine', 'ten'],
+ \ getline(1, '$'))
+
+ " Test that reading the undofiles when setting undofile works
+ set noundofile undolevels=0
+ exe "normal i\n"
+ undo
+ edit! Xtestfile
+ set undofile undolevels=100
+ normal uuuuuu
+ call assert_equal(['one', 'two', 'three', 'four', 'five', 'six', 'seven',
+ \ 'eight', 'nine', 'ten'], getline(1, '$'))
+
+ bwipe!
+ call delete('Xtestfile')
+ let ufile = has('vms') ? '_un_Xtestfile' : '.Xtestfile.un~'
+ call delete(ufile)
+ set undofile& undolevels&
+endfunc
+
+" Test 'undofile' using a file encrypted with 'zip' crypt method
+func Test_undofile_cryptmethod_zip()
+ edit Xtestfile
+ set undofile cryptmethod=zip
+ call append(0, ['monday', 'tuesday', 'wednesday', 'thursday', 'friday'])
+ call cursor(5, 1)
+
+ set undolevels=100
+ normal kkkdd
+ set undolevels=100
+ normal dd
+ set undolevels=100
+ normal dd
+ set undolevels=100
+ " encrypt the file using key 'foobar'
+ call feedkeys("foobar\nfoobar\n")
+ X
+ write!
+ bwipe!
+
+ call feedkeys("foobar\n")
+ edit Xtestfile
+ set key=
+ normal uu
+ call assert_equal(['monday', 'wednesday', 'thursday', 'friday', ''],
+ \ getline(1, '$'))
+
+ bwipe!
+ call delete('Xtestfile')
+ let ufile = has('vms') ? '_un_Xtestfile' : '.Xtestfile.un~'
+ call delete(ufile)
+ set undofile& undolevels& cryptmethod&
+endfunc
+
+" Test 'undofile' using a file encrypted with 'blowfish' crypt method
+func Test_undofile_cryptmethod_blowfish()
+ edit Xtestfile
+ set undofile cryptmethod=blowfish
+ call append(0, ['jan', 'feb', 'mar', 'apr', 'jun'])
+ call cursor(5, 1)
+
+ set undolevels=100
+ exe 'normal kk0ifoo '
+ set undolevels=100
+ normal dd
+ set undolevels=100
+ exe 'normal ibar '
+ set undolevels=100
+ " encrypt the file using key 'foobar'
+ call feedkeys("foobar\nfoobar\n")
+ X
+ write!
+ bwipe!
+
+ call feedkeys("foobar\n")
+ edit Xtestfile
+ set key=
+ call search('bar')
+ call assert_equal('bar apr', getline('.'))
+ undo
+ call assert_equal('apr', getline('.'))
+ undo
+ call assert_equal('foo mar', getline('.'))
+ undo
+ call assert_equal('mar', getline('.'))
+
+ bwipe!
+ call delete('Xtestfile')
+ let ufile = has('vms') ? '_un_Xtestfile' : '.Xtestfile.un~'
+ call delete(ufile)
+ set undofile& undolevels& cryptmethod&
+endfunc
+
+" Test 'undofile' using a file encrypted with 'blowfish2' crypt method
+func Test_undofile_cryptmethod_blowfish2()
+ edit Xtestfile
+ set undofile cryptmethod=blowfish2
+ call append(0, ['jan', 'feb', 'mar', 'apr', 'jun'])
+ call cursor(5, 1)
+
+ set undolevels=100
+ exe 'normal kk0ifoo '
+ set undolevels=100
+ normal dd
+ set undolevels=100
+ exe 'normal ibar '
+ set undolevels=100
+ " encrypt the file using key 'foo2bar'
+ call feedkeys("foo2bar\nfoo2bar\n")
+ X
+ write!
+ bwipe!
+
+ call feedkeys("foo2bar\n")
+ edit Xtestfile
+ set key=
+ call search('bar')
+ call assert_equal('bar apr', getline('.'))
+ normal u
+ call assert_equal('apr', getline('.'))
+ normal u
+ call assert_equal('foo mar', getline('.'))
+ normal u
+ call assert_equal('mar', getline('.'))
+
+ bwipe!
+ call delete('Xtestfile')
+ let ufile = has('vms') ? '_un_Xtestfile' : '.Xtestfile.un~'
+ call delete(ufile)
+ set undofile& undolevels& cryptmethod&
+endfunc
+
+" vim: shiftwidth=2 sts=2 expandtab