1aaad995fSBram Moolenaar" Tests for using Ctrl-A/Ctrl-X 244132a10SBram Moolenaar 344132a10SBram Moolenaarfunc SetUp() 444132a10SBram Moolenaar new dummy 544132a10SBram Moolenaar set nrformats&vim 644132a10SBram Moolenaarendfunc 744132a10SBram Moolenaar 844132a10SBram Moolenaarfunc TearDown() 944132a10SBram Moolenaar bwipe! 1044132a10SBram Moolenaarendfunc 1144132a10SBram Moolenaar 1244132a10SBram Moolenaar" 1) Ctrl-A on visually selected number 1344132a10SBram Moolenaar" Text: 1444132a10SBram Moolenaar" foobar-10 1544132a10SBram Moolenaar" Expected: 1644132a10SBram Moolenaar" 1) Ctrl-A on start of line: 1744132a10SBram Moolenaar" foobar-9 1844132a10SBram Moolenaar" 2) Ctrl-A on visually selected "-10": 1944132a10SBram Moolenaar" foobar-9 2044132a10SBram Moolenaar" 3) Ctrl-A on visually selected "10": 2144132a10SBram Moolenaar" foobar-11 2244132a10SBram Moolenaar" 4) Ctrl-X on visually selected "-10" 2344132a10SBram Moolenaar" foobar-11 2444132a10SBram Moolenaar" 5) Ctrl-X on visually selected "10" 2544132a10SBram Moolenaar" foobar-9 2644132a10SBram Moolenaarfunc Test_visual_increment_01() 2744132a10SBram Moolenaar call setline(1, repeat(["foobaar-10"], 5)) 2844132a10SBram Moolenaar 2944132a10SBram Moolenaar call cursor(1, 1) 3044132a10SBram Moolenaar exec "norm! \<C-A>" 3144132a10SBram Moolenaar call assert_equal("foobaar-9", getline('.')) 3244132a10SBram Moolenaar call assert_equal([0, 1, 9, 0], getpos('.')) 3344132a10SBram Moolenaar 3444132a10SBram Moolenaar call cursor(2, 1) 3544132a10SBram Moolenaar exec "norm! f-v$\<C-A>" 3644132a10SBram Moolenaar call assert_equal("foobaar-9", getline('.')) 3744132a10SBram Moolenaar call assert_equal([0, 2, 8, 0], getpos('.')) 3844132a10SBram Moolenaar 3944132a10SBram Moolenaar call cursor(3, 1) 4044132a10SBram Moolenaar exec "norm! f1v$\<C-A>" 4144132a10SBram Moolenaar call assert_equal("foobaar-11", getline('.')) 4244132a10SBram Moolenaar call assert_equal([0, 3, 9, 0], getpos('.')) 4344132a10SBram Moolenaar 4444132a10SBram Moolenaar call cursor(4, 1) 4544132a10SBram Moolenaar exec "norm! f-v$\<C-X>" 4644132a10SBram Moolenaar call assert_equal("foobaar-11", getline('.')) 4744132a10SBram Moolenaar call assert_equal([0, 4, 8, 0], getpos('.')) 4844132a10SBram Moolenaar 4944132a10SBram Moolenaar call cursor(5, 1) 5044132a10SBram Moolenaar exec "norm! f1v$\<C-X>" 5144132a10SBram Moolenaar call assert_equal("foobaar-9", getline('.')) 5244132a10SBram Moolenaar call assert_equal([0, 5, 9, 0], getpos('.')) 5344132a10SBram Moolenaarendfunc 5444132a10SBram Moolenaar 5544132a10SBram Moolenaar" 2) Ctrl-A on visually selected lines 5644132a10SBram Moolenaar" Text: 5744132a10SBram Moolenaar" 10 5844132a10SBram Moolenaar" 20 5944132a10SBram Moolenaar" 30 6044132a10SBram Moolenaar" 40 6144132a10SBram Moolenaar" 6244132a10SBram Moolenaar" Expected: 6344132a10SBram Moolenaar" 1) Ctrl-A on visually selected lines: 6444132a10SBram Moolenaar" 11 6544132a10SBram Moolenaar" 21 6644132a10SBram Moolenaar" 31 6744132a10SBram Moolenaar" 41 6844132a10SBram Moolenaar" 6944132a10SBram Moolenaar" 2) Ctrl-X on visually selected lines: 7044132a10SBram Moolenaar" 9 7144132a10SBram Moolenaar" 19 7244132a10SBram Moolenaar" 29 7344132a10SBram Moolenaar" 39 7444132a10SBram Moolenaarfunc Test_visual_increment_02() 7544132a10SBram Moolenaar call setline(1, ["10", "20", "30", "40"]) 7644132a10SBram Moolenaar exec "norm! GV3k$\<C-A>" 7744132a10SBram Moolenaar call assert_equal(["11", "21", "31", "41"], getline(1, '$')) 7844132a10SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 7944132a10SBram Moolenaar 8044132a10SBram Moolenaar call setline(1, ["10", "20", "30", "40"]) 8144132a10SBram Moolenaar exec "norm! GV3k$\<C-X>" 8244132a10SBram Moolenaar call assert_equal(["9", "19", "29", "39"], getline(1, '$')) 8344132a10SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 8444132a10SBram Moolenaarendfunc 8544132a10SBram Moolenaar 8644132a10SBram Moolenaar" 3) g Ctrl-A on visually selected lines, with non-numbers in between 8744132a10SBram Moolenaar" Text: 8844132a10SBram Moolenaar" 10 8944132a10SBram Moolenaar" 9044132a10SBram Moolenaar" 20 9144132a10SBram Moolenaar" 9244132a10SBram Moolenaar" 30 9344132a10SBram Moolenaar" 9444132a10SBram Moolenaar" 40 9544132a10SBram Moolenaar" 9644132a10SBram Moolenaar" Expected: 9744132a10SBram Moolenaar" 1) 2 g Ctrl-A on visually selected lines: 9844132a10SBram Moolenaar" 12 9944132a10SBram Moolenaar" 10044132a10SBram Moolenaar" 24 10144132a10SBram Moolenaar" 10244132a10SBram Moolenaar" 36 10344132a10SBram Moolenaar" 10444132a10SBram Moolenaar" 48 10544132a10SBram Moolenaar" 2) 2 g Ctrl-X on visually selected lines 10644132a10SBram Moolenaar" 8 10744132a10SBram Moolenaar" 10844132a10SBram Moolenaar" 16 10944132a10SBram Moolenaar" 11044132a10SBram Moolenaar" 24 11144132a10SBram Moolenaar" 11244132a10SBram Moolenaar" 32 11344132a10SBram Moolenaarfunc Test_visual_increment_03() 11444132a10SBram Moolenaar call setline(1, ["10", "", "20", "", "30", "", "40"]) 11544132a10SBram Moolenaar exec "norm! GV6k2g\<C-A>" 11644132a10SBram Moolenaar call assert_equal(["12", "", "24", "", "36", "", "48"], getline(1, '$')) 11744132a10SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 11844132a10SBram Moolenaar 11944132a10SBram Moolenaar call setline(1, ["10", "", "20", "", "30", "", "40"]) 12044132a10SBram Moolenaar exec "norm! GV6k2g\<C-X>" 12144132a10SBram Moolenaar call assert_equal(["8", "", "16", "", "24", "", "32"], getline(1, '$')) 12244132a10SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 12344132a10SBram Moolenaarendfunc 12444132a10SBram Moolenaar 12544132a10SBram Moolenaar" 4) Ctrl-A on non-number 12644132a10SBram Moolenaar" Text: 12744132a10SBram Moolenaar" foobar-10 12844132a10SBram Moolenaar" Expected: 12944132a10SBram Moolenaar" 1) visually select foobar: 13044132a10SBram Moolenaar" foobar-10 13144132a10SBram Moolenaarfunc Test_visual_increment_04() 13244132a10SBram Moolenaar call setline(1, ["foobar-10"]) 13344132a10SBram Moolenaar exec "norm! vf-\<C-A>" 13444132a10SBram Moolenaar call assert_equal(["foobar-10"], getline(1, '$')) 13544132a10SBram Moolenaar " NOTE: I think this is correct behavior... 136d79e5501SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 13744132a10SBram Moolenaarendfunc 13844132a10SBram Moolenaar 13944132a10SBram Moolenaar" 5) g<Ctrl-A> on letter 14044132a10SBram Moolenaar" Test: 14144132a10SBram Moolenaar" a 14244132a10SBram Moolenaar" a 14344132a10SBram Moolenaar" a 14444132a10SBram Moolenaar" a 14544132a10SBram Moolenaar" Expected: 14644132a10SBram Moolenaar" 1) g Ctrl-A on visually selected lines 14744132a10SBram Moolenaar" b 14844132a10SBram Moolenaar" c 14944132a10SBram Moolenaar" d 15044132a10SBram Moolenaar" e 15144132a10SBram Moolenaarfunc Test_visual_increment_05() 15244132a10SBram Moolenaar set nrformats+=alpha 15344132a10SBram Moolenaar call setline(1, repeat(["a"], 4)) 15444132a10SBram Moolenaar exec "norm! GV3kg\<C-A>" 15544132a10SBram Moolenaar call assert_equal(["b", "c", "d", "e"], getline(1, '$')) 15644132a10SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 15744132a10SBram Moolenaarendfunc 15844132a10SBram Moolenaar 15944132a10SBram Moolenaar" 6) g<Ctrl-A> on letter 16044132a10SBram Moolenaar" Test: 16144132a10SBram Moolenaar" z 16244132a10SBram Moolenaar" z 16344132a10SBram Moolenaar" z 16444132a10SBram Moolenaar" z 16544132a10SBram Moolenaar" Expected: 16644132a10SBram Moolenaar" 1) g Ctrl-X on visually selected lines 16744132a10SBram Moolenaar" y 16844132a10SBram Moolenaar" x 16944132a10SBram Moolenaar" w 17044132a10SBram Moolenaar" v 17144132a10SBram Moolenaarfunc Test_visual_increment_06() 17244132a10SBram Moolenaar set nrformats+=alpha 17344132a10SBram Moolenaar call setline(1, repeat(["z"], 4)) 17444132a10SBram Moolenaar exec "norm! GV3kg\<C-X>" 17544132a10SBram Moolenaar call assert_equal(["y", "x", "w", "v"], getline(1, '$')) 17644132a10SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 17744132a10SBram Moolenaarendfunc 17844132a10SBram Moolenaar 17944132a10SBram Moolenaar" 7) <Ctrl-A> on letter 18044132a10SBram Moolenaar" Test: 18144132a10SBram Moolenaar" 2 18244132a10SBram Moolenaar" 1 18344132a10SBram Moolenaar" 0 18444132a10SBram Moolenaar" -1 18544132a10SBram Moolenaar" -2 18644132a10SBram Moolenaar" 18744132a10SBram Moolenaar" Expected: 18844132a10SBram Moolenaar" 1) Ctrl-A on visually selected lines 18944132a10SBram Moolenaar" 3 19044132a10SBram Moolenaar" 2 19144132a10SBram Moolenaar" 1 19244132a10SBram Moolenaar" 0 19344132a10SBram Moolenaar" -1 19444132a10SBram Moolenaar" 19544132a10SBram Moolenaar" 2) Ctrl-X on visually selected lines 19644132a10SBram Moolenaar" 1 19744132a10SBram Moolenaar" 0 19844132a10SBram Moolenaar" -1 19944132a10SBram Moolenaar" -2 20044132a10SBram Moolenaar" -3 20144132a10SBram Moolenaarfunc Test_visual_increment_07() 20244132a10SBram Moolenaar call setline(1, ["2", "1", "0", "-1", "-2"]) 20344132a10SBram Moolenaar exec "norm! GV4k\<C-A>" 20444132a10SBram Moolenaar call assert_equal(["3", "2", "1", "0", "-1"], getline(1, '$')) 20544132a10SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 20644132a10SBram Moolenaar 20744132a10SBram Moolenaar call setline(1, ["2", "1", "0", "-1", "-2"]) 20844132a10SBram Moolenaar exec "norm! GV4k\<C-X>" 20944132a10SBram Moolenaar call assert_equal(["1", "0", "-1", "-2", "-3"], getline(1, '$')) 21044132a10SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 21144132a10SBram Moolenaarendfunc 21244132a10SBram Moolenaar 21344132a10SBram Moolenaar" 8) Block increment on 0x9 21444132a10SBram Moolenaar" Text: 21544132a10SBram Moolenaar" 0x9 21644132a10SBram Moolenaar" 0x9 21744132a10SBram Moolenaar" Expected: 21844132a10SBram Moolenaar" 1) Ctrl-A on visually block selected region (cursor at beginning): 21944132a10SBram Moolenaar" 0xa 22044132a10SBram Moolenaar" 0xa 22144132a10SBram Moolenaar" 2) Ctrl-A on visually block selected region (cursor at end) 22244132a10SBram Moolenaar" 0xa 22344132a10SBram Moolenaar" 0xa 22444132a10SBram Moolenaarfunc Test_visual_increment_08() 22544132a10SBram Moolenaar call setline(1, repeat(["0x9"], 2)) 22644132a10SBram Moolenaar exec "norm! \<C-V>j$\<C-A>" 22744132a10SBram Moolenaar call assert_equal(["0xa", "0xa"], getline(1, '$')) 22844132a10SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 22944132a10SBram Moolenaar 23044132a10SBram Moolenaar call setline(1, repeat(["0x9"], 2)) 23144132a10SBram Moolenaar exec "norm! gg$\<C-V>+\<C-A>" 23244132a10SBram Moolenaar call assert_equal(["0xa", "0xa"], getline(1, '$')) 23344132a10SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 23444132a10SBram Moolenaarendfunc 23544132a10SBram Moolenaar 23644132a10SBram Moolenaar" 9) Increment and redo 23744132a10SBram Moolenaar" Text: 23844132a10SBram Moolenaar" 2 23944132a10SBram Moolenaar" 2 24044132a10SBram Moolenaar" 24144132a10SBram Moolenaar" 3 24244132a10SBram Moolenaar" 3 24344132a10SBram Moolenaar" 24444132a10SBram Moolenaar" Expected: 24544132a10SBram Moolenaar" 1) 2 Ctrl-A on first 2 visually selected lines 24644132a10SBram Moolenaar" 4 24744132a10SBram Moolenaar" 4 24844132a10SBram Moolenaar" 2) redo (.) on 3 24944132a10SBram Moolenaar" 5 25044132a10SBram Moolenaar" 5 25144132a10SBram Moolenaarfunc Test_visual_increment_09() 25244132a10SBram Moolenaar call setline(1, ["2", "2", "", "3", "3", ""]) 25344132a10SBram Moolenaar exec "norm! ggVj2\<C-A>" 25444132a10SBram Moolenaar call assert_equal(["4", "4", "", "3", "3", ""], getline(1, '$')) 25544132a10SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 25644132a10SBram Moolenaar 25744132a10SBram Moolenaar exec "norm! 3j." 25844132a10SBram Moolenaar call assert_equal(["4", "4", "", "5", "5", ""], getline(1, '$')) 25944132a10SBram Moolenaar call assert_equal([0, 4, 1, 0], getpos('.')) 26044132a10SBram Moolenaarendfunc 26144132a10SBram Moolenaar 26244132a10SBram Moolenaar" 10) sequentially decrement 1 26344132a10SBram Moolenaar" Text: 26444132a10SBram Moolenaar" 1 26544132a10SBram Moolenaar" 1 26644132a10SBram Moolenaar" 1 26744132a10SBram Moolenaar" 1 26844132a10SBram Moolenaar" Expected: 26944132a10SBram Moolenaar" 1) g Ctrl-X on visually selected lines 27044132a10SBram Moolenaar" 0 27144132a10SBram Moolenaar" -1 27244132a10SBram Moolenaar" -2 27344132a10SBram Moolenaar" -3 27444132a10SBram Moolenaarfunc Test_visual_increment_10() 27544132a10SBram Moolenaar call setline(1, repeat(["1"], 4)) 27644132a10SBram Moolenaar exec "norm! GV3kg\<C-X>" 27744132a10SBram Moolenaar call assert_equal(["0", "-1", "-2", "-3"], getline(1, '$')) 27844132a10SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 27944132a10SBram Moolenaarendfunc 28044132a10SBram Moolenaar 28144132a10SBram Moolenaar" 11) visually block selected indented lines 28244132a10SBram Moolenaar" Text: 28344132a10SBram Moolenaar" 1 28444132a10SBram Moolenaar" 1 28544132a10SBram Moolenaar" 1 28644132a10SBram Moolenaar" 1 2878e7d6223SBram Moolenaar" Expected: 28844132a10SBram Moolenaar" 1) g Ctrl-A on block selected indented lines 28944132a10SBram Moolenaar" 2 29044132a10SBram Moolenaar" 1 29144132a10SBram Moolenaar" 3 29244132a10SBram Moolenaar" 4 29344132a10SBram Moolenaarfunc Test_visual_increment_11() 29444132a10SBram Moolenaar call setline(1, [" 1", "1", " 1", " 1"]) 29544132a10SBram Moolenaar exec "norm! f1\<C-V>3jg\<C-A>" 29644132a10SBram Moolenaar call assert_equal([" 2", "1", " 3", " 4"], getline(1, '$')) 29744132a10SBram Moolenaar call assert_equal([0, 1, 5, 0], getpos('.')) 29844132a10SBram Moolenaarendfunc 29944132a10SBram Moolenaar 30044132a10SBram Moolenaar" 12) visually selected several columns 30144132a10SBram Moolenaar" Text: 30244132a10SBram Moolenaar" 0 0 30344132a10SBram Moolenaar" 0 0 30444132a10SBram Moolenaar" 0 0 30544132a10SBram Moolenaar" Expected: 30644132a10SBram Moolenaar" 1) 'v' select last zero and first zeroes 30744132a10SBram Moolenaar" 0 1 30844132a10SBram Moolenaar" 1 0 30944132a10SBram Moolenaar" 1 0 31044132a10SBram Moolenaarfunc Test_visual_increment_12() 31144132a10SBram Moolenaar call setline(1, repeat(["0 0"], 3)) 31244132a10SBram Moolenaar exec "norm! $v++\<C-A>" 31344132a10SBram Moolenaar call assert_equal(["0 1", "1 0", "1 0"], getline(1, '$')) 31444132a10SBram Moolenaar call assert_equal([0, 1, 3, 0], getpos('.')) 31544132a10SBram Moolenaarendfunc 31644132a10SBram Moolenaar 31744132a10SBram Moolenaar" 13) visually selected part of columns 31844132a10SBram Moolenaar" Text: 31944132a10SBram Moolenaar" max: 100px 32044132a10SBram Moolenaar" max: 200px 32144132a10SBram Moolenaar" max: 300px 32244132a10SBram Moolenaar" max: 400px 32344132a10SBram Moolenaar" Expected: 32444132a10SBram Moolenaar" 1) 'v' on first two numbers Ctrl-A 32544132a10SBram Moolenaar" max: 110px 32644132a10SBram Moolenaar" max: 220px 32744132a10SBram Moolenaar" max: 330px 32844132a10SBram Moolenaar" max: 400px 32944132a10SBram Moolenaar" 2) 'v' on first two numbers Ctrl-X 33044132a10SBram Moolenaar" max: 90px 33144132a10SBram Moolenaar" max: 190px 33244132a10SBram Moolenaar" max: 290px 33344132a10SBram Moolenaar" max: 400px 33444132a10SBram Moolenaarfunc Test_visual_increment_13() 33544132a10SBram Moolenaar call setline(1, ["max: 100px", "max: 200px", "max: 300px", "max: 400px"]) 33644132a10SBram Moolenaar exec "norm! f1\<C-V>l2j\<C-A>" 33744132a10SBram Moolenaar call assert_equal(["max: 110px", "max: 210px", "max: 310px", "max: 400px"], getline(1, '$')) 33844132a10SBram Moolenaar call assert_equal([0, 1, 6, 0], getpos('.')) 33944132a10SBram Moolenaar 34044132a10SBram Moolenaar call setline(1, ["max: 100px", "max: 200px", "max: 300px", "max: 400px"]) 34144132a10SBram Moolenaar exec "norm! ggf1\<C-V>l2j\<C-X>" 34244132a10SBram Moolenaar call assert_equal(["max: 90px", "max: 190px", "max: 290px", "max: 400px"], getline(1, '$')) 34344132a10SBram Moolenaar call assert_equal([0, 1, 6, 0], getpos('.')) 34444132a10SBram Moolenaarendfunc 34544132a10SBram Moolenaar 34644132a10SBram Moolenaar" 14) redo in block mode 34744132a10SBram Moolenaar" Text: 34844132a10SBram Moolenaar" 1 1 34944132a10SBram Moolenaar" 1 1 35044132a10SBram Moolenaar" Expected: 35144132a10SBram Moolenaar" 1) Ctrl-a on first column, redo on second column 35244132a10SBram Moolenaar" 2 2 35344132a10SBram Moolenaar" 2 2 35444132a10SBram Moolenaarfunc Test_visual_increment_14() 35544132a10SBram Moolenaar call setline(1, repeat(["1 1"], 2)) 35644132a10SBram Moolenaar exec "norm! G\<C-V>k\<C-A>w." 35744132a10SBram Moolenaar call assert_equal(["2 2", "2 2"], getline(1, '$')) 35844132a10SBram Moolenaar call assert_equal([0, 1, 3, 0], getpos('.')) 35944132a10SBram Moolenaarendfunc 36044132a10SBram Moolenaar 36144132a10SBram Moolenaar" 15) block select single numbers 36244132a10SBram Moolenaar" Text: 36344132a10SBram Moolenaar" 101 36444132a10SBram Moolenaar" Expected: 36544132a10SBram Moolenaar" 1) Ctrl-a on visually selected zero 36644132a10SBram Moolenaar" 111 3675fe6bdf8SBram Moolenaar" 3685fe6bdf8SBram Moolenaar" Also: 019 with "01" selected increments to "029". 36944132a10SBram Moolenaarfunc Test_visual_increment_15() 37044132a10SBram Moolenaar call setline(1, ["101"]) 37144132a10SBram Moolenaar exec "norm! lv\<C-A>" 37244132a10SBram Moolenaar call assert_equal(["111"], getline(1, '$')) 37344132a10SBram Moolenaar call assert_equal([0, 1, 2, 0], getpos('.')) 3745fe6bdf8SBram Moolenaar 3755fe6bdf8SBram Moolenaar call setline(1, ["019"]) 3765fe6bdf8SBram Moolenaar exec "norm! 0vl\<C-A>" 3775fe6bdf8SBram Moolenaar call assert_equal("029", getline(1)) 3785fe6bdf8SBram Moolenaar 3795fe6bdf8SBram Moolenaar call setline(1, ["01239"]) 3805fe6bdf8SBram Moolenaar exec "norm! 0vlll\<C-A>" 3815fe6bdf8SBram Moolenaar call assert_equal("01249", getline(1)) 3825fe6bdf8SBram Moolenaar 3835fe6bdf8SBram Moolenaar call setline(1, ["01299"]) 3845fe6bdf8SBram Moolenaar exec "norm! 0vlll\<C-A>" 3855fe6bdf8SBram Moolenaar call assert_equal("1309", getline(1)) 38644132a10SBram Moolenaarendfunc 38744132a10SBram Moolenaar 38844132a10SBram Moolenaar" 16) increment right aligned numbers 38944132a10SBram Moolenaar" Text: 39044132a10SBram Moolenaar" 1 39144132a10SBram Moolenaar" 19 39244132a10SBram Moolenaar" 119 39344132a10SBram Moolenaar" Expected: 39444132a10SBram Moolenaar" 1) Ctrl-a on line selected region 39544132a10SBram Moolenaar" 2 39644132a10SBram Moolenaar" 20 39744132a10SBram Moolenaar" 120 39844132a10SBram Moolenaarfunc Test_visual_increment_16() 39944132a10SBram Moolenaar call setline(1, [" 1", " 19", " 119"]) 40044132a10SBram Moolenaar exec "norm! VG\<C-A>" 40144132a10SBram Moolenaar call assert_equal([" 2", " 20", " 120"], getline(1, '$')) 40244132a10SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 40344132a10SBram Moolenaarendfunc 40444132a10SBram Moolenaar 40544132a10SBram Moolenaar" 17) block-wise increment and redo 40644132a10SBram Moolenaar" Text: 40744132a10SBram Moolenaar" 100 40844132a10SBram Moolenaar" 1 40944132a10SBram Moolenaar" 41044132a10SBram Moolenaar" 100 41144132a10SBram Moolenaar" 1 41244132a10SBram Moolenaar" 41344132a10SBram Moolenaar" Expected: 41444132a10SBram Moolenaar" 1) Ctrl-V j $ on first block, afterwards '.' on second 41544132a10SBram Moolenaar" 101 41644132a10SBram Moolenaar" 2 41744132a10SBram Moolenaar" 41844132a10SBram Moolenaar" 101 41944132a10SBram Moolenaar" 2 42044132a10SBram Moolenaarfunc Test_visual_increment_17() 42144132a10SBram Moolenaar call setline(1, [" 100", " 1", "", " 100", " 1"]) 42244132a10SBram Moolenaar exec "norm! \<C-V>j$\<C-A>2j." 42344132a10SBram Moolenaar call assert_equal([" 101", " 2", "", " 101", " 1"], getline(1, '$')) 42444132a10SBram Moolenaar call assert_equal([0, 3, 1, 0], getpos('.')) 42544132a10SBram Moolenaarendfunc 42644132a10SBram Moolenaar 42744132a10SBram Moolenaar" 18) repeat of g<Ctrl-a> 42844132a10SBram Moolenaar" Text: 42944132a10SBram Moolenaar" 0 43044132a10SBram Moolenaar" 0 43144132a10SBram Moolenaar" 0 43244132a10SBram Moolenaar" 0 43344132a10SBram Moolenaar" 43444132a10SBram Moolenaar" Expected: 43544132a10SBram Moolenaar" 1) V 4j g<ctrl-a>, repeat twice afterwards with . 43644132a10SBram Moolenaar" 3 43744132a10SBram Moolenaar" 6 43844132a10SBram Moolenaar" 9 43944132a10SBram Moolenaar" 12 44044132a10SBram Moolenaarfunc Test_visual_increment_18() 44144132a10SBram Moolenaar call setline(1, repeat(["0"], 4)) 44244132a10SBram Moolenaar exec "norm! GV3kg\<C-A>" 44344132a10SBram Moolenaar exec "norm! .." 44444132a10SBram Moolenaar call assert_equal(["3", "6", "9", "12"], getline(1, '$')) 44544132a10SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 44644132a10SBram Moolenaarendfunc 44744132a10SBram Moolenaar 44844132a10SBram Moolenaar" 19) increment on number with nrformat including alpha 44944132a10SBram Moolenaar" Text: 45044132a10SBram Moolenaar" 1 45144132a10SBram Moolenaar" 1a 45244132a10SBram Moolenaar" 45344132a10SBram Moolenaar" Expected: 45444132a10SBram Moolenaar" 1) <Ctrl-V>j$ <ctrl-a> 45544132a10SBram Moolenaar" 2 45644132a10SBram Moolenaar" 2a 45744132a10SBram Moolenaarfunc Test_visual_increment_19() 45844132a10SBram Moolenaar set nrformats+=alpha 45944132a10SBram Moolenaar call setline(1, ["1", "1a"]) 46044132a10SBram Moolenaar exec "norm! \<C-V>G$\<C-A>" 46144132a10SBram Moolenaar call assert_equal(["2", "2a"], getline(1, '$')) 46244132a10SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 46344132a10SBram Moolenaarendfunc 46444132a10SBram Moolenaar 46544132a10SBram Moolenaar" 20) increment a single letter 46644132a10SBram Moolenaar" Text: 46744132a10SBram Moolenaar" a 46844132a10SBram Moolenaar" 46944132a10SBram Moolenaar" Expected: 47044132a10SBram Moolenaar" 1) <Ctrl-a> and cursor is on a 47144132a10SBram Moolenaar" b 47244132a10SBram Moolenaarfunc Test_visual_increment_20() 47344132a10SBram Moolenaar set nrformats+=alpha 47444132a10SBram Moolenaar call setline(1, ["a"]) 47544132a10SBram Moolenaar exec "norm! \<C-A>" 47644132a10SBram Moolenaar call assert_equal(["b"], getline(1, '$')) 47744132a10SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 478004a6781SBram Moolenaar " decrement a and A and increment z and Z 479004a6781SBram Moolenaar call setline(1, ['a', 'A', 'z', 'Z']) 480004a6781SBram Moolenaar exe "normal 1G\<C-X>2G\<C-X>3G\<C-A>4G\<C-A>" 481004a6781SBram Moolenaar call assert_equal(['a', 'A', 'z', 'Z'], getline(1, '$')) 48244132a10SBram Moolenaarendfunc 48344132a10SBram Moolenaar 48444132a10SBram Moolenaar" 21) block-wise increment on part of hexadecimal 48544132a10SBram Moolenaar" Text: 48644132a10SBram Moolenaar" 0x123456 48744132a10SBram Moolenaar" 48844132a10SBram Moolenaar" Expected: 48944132a10SBram Moolenaar" 1) Ctrl-V f3 <ctrl-a> 49044132a10SBram Moolenaar" 0x124456 49144132a10SBram Moolenaarfunc Test_visual_increment_21() 49244132a10SBram Moolenaar call setline(1, ["0x123456"]) 49344132a10SBram Moolenaar exec "norm! \<C-V>f3\<C-A>" 49444132a10SBram Moolenaar call assert_equal(["0x124456"], getline(1, '$')) 49544132a10SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 49644132a10SBram Moolenaarendfunc 49744132a10SBram Moolenaar 49844132a10SBram Moolenaar" 22) Block increment on 0b0 49944132a10SBram Moolenaar" Text: 50044132a10SBram Moolenaar" 0b1 50144132a10SBram Moolenaar" 0b1 50244132a10SBram Moolenaar" Expected: 50344132a10SBram Moolenaar" 1) Ctrl-A on visually block selected region (cursor at beginning): 50444132a10SBram Moolenaar" 0b10 50544132a10SBram Moolenaar" 0b10 50644132a10SBram Moolenaar" 2) Ctrl-A on visually block selected region (cursor at end) 50744132a10SBram Moolenaar" 0b10 50844132a10SBram Moolenaar" 0b10 50944132a10SBram Moolenaarfunc Test_visual_increment_22() 51044132a10SBram Moolenaar call setline(1, repeat(["0b1"], 2)) 51144132a10SBram Moolenaar exec "norm! \<C-V>j$\<C-A>" 51244132a10SBram Moolenaar call assert_equal(repeat(["0b10"], 2), getline(1, '$')) 51344132a10SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 51444132a10SBram Moolenaar 51544132a10SBram Moolenaar call setline(1, repeat(["0b1"], 2)) 51644132a10SBram Moolenaar exec "norm! $\<C-V>+\<C-A>" 51744132a10SBram Moolenaar call assert_equal(repeat(["0b10"], 2), getline(1, '$')) 51844132a10SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 51944132a10SBram Moolenaarendfunc 52044132a10SBram Moolenaar 52144132a10SBram Moolenaar" 23) block-wise increment on part of binary 52244132a10SBram Moolenaar" Text: 52344132a10SBram Moolenaar" 0b1001 52444132a10SBram Moolenaar" 52544132a10SBram Moolenaar" Expected: 52644132a10SBram Moolenaar" 1) Ctrl-V 5l <ctrl-a> 52744132a10SBram Moolenaar" 0b1011 52844132a10SBram Moolenaarfunc Test_visual_increment_23() 52944132a10SBram Moolenaar call setline(1, ["0b1001"]) 53044132a10SBram Moolenaar exec "norm! \<C-V>4l\<C-A>" 53144132a10SBram Moolenaar call assert_equal(["0b1011"], getline(1, '$')) 53244132a10SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 53344132a10SBram Moolenaarendfunc 53444132a10SBram Moolenaar 53544132a10SBram Moolenaar" 24) increment hexadecimal 53644132a10SBram Moolenaar" Text: 53744132a10SBram Moolenaar" 0x0b1001 53844132a10SBram Moolenaar" 53944132a10SBram Moolenaar" Expected: 54044132a10SBram Moolenaar" 1) <ctrl-a> 54144132a10SBram Moolenaar" 0x0b1002 54244132a10SBram Moolenaarfunc Test_visual_increment_24() 54344132a10SBram Moolenaar call setline(1, ["0x0b1001"]) 54444132a10SBram Moolenaar exec "norm! \<C-V>$\<C-A>" 54544132a10SBram Moolenaar call assert_equal(["0x0b1002"], getline(1, '$')) 54644132a10SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 54744132a10SBram Moolenaarendfunc 54844132a10SBram Moolenaar 54944132a10SBram Moolenaar" 25) increment binary with nrformats including alpha 55044132a10SBram Moolenaar" Text: 55144132a10SBram Moolenaar" 0b1001a 55244132a10SBram Moolenaar" 55344132a10SBram Moolenaar" Expected: 55444132a10SBram Moolenaar" 1) <ctrl-a> 55544132a10SBram Moolenaar" 0b1010a 55644132a10SBram Moolenaarfunc Test_visual_increment_25() 55744132a10SBram Moolenaar set nrformats+=alpha 55844132a10SBram Moolenaar call setline(1, ["0b1001a"]) 55944132a10SBram Moolenaar exec "norm! \<C-V>$\<C-A>" 56044132a10SBram Moolenaar call assert_equal(["0b1010a"], getline(1, '$')) 56144132a10SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 56244132a10SBram Moolenaarendfunc 56344132a10SBram Moolenaar 56444132a10SBram Moolenaar" 26) increment binary with 32 bits 56544132a10SBram Moolenaar" Text: 56644132a10SBram Moolenaar" 0b11111111111111111111111111111110 56744132a10SBram Moolenaar" 56844132a10SBram Moolenaar" Expected: 56944132a10SBram Moolenaar" 1) <ctrl-a> 57044132a10SBram Moolenaar" 0b11111111111111111111111111111111 57144132a10SBram Moolenaarfunc Test_visual_increment_26() 572004a6781SBram Moolenaar set nrformats+=bin 57344132a10SBram Moolenaar call setline(1, ["0b11111111111111111111111111111110"]) 57444132a10SBram Moolenaar exec "norm! \<C-V>$\<C-A>" 57544132a10SBram Moolenaar call assert_equal(["0b11111111111111111111111111111111"], getline(1, '$')) 57644132a10SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 577004a6781SBram Moolenaar exec "norm! \<C-V>$\<C-X>" 578004a6781SBram Moolenaar call assert_equal(["0b11111111111111111111111111111110"], getline(1, '$')) 579004a6781SBram Moolenaar set nrformats-=bin 58044132a10SBram Moolenaarendfunc 58144132a10SBram Moolenaar 5826a3c8affSBram Moolenaar" 27) increment with 'rightreft', if supported 5836a3c8affSBram Moolenaarfunc Test_visual_increment_27() 5846a3c8affSBram Moolenaar if exists('+rightleft') 5856a3c8affSBram Moolenaar set rightleft 5866a3c8affSBram Moolenaar call setline(1, ["1234 56"]) 5876a3c8affSBram Moolenaar 5886a3c8affSBram Moolenaar exec "norm! $\<C-A>" 5896a3c8affSBram Moolenaar call assert_equal(["1234 57"], getline(1, '$')) 5906a3c8affSBram Moolenaar call assert_equal([0, 1, 7, 0], getpos('.')) 5916a3c8affSBram Moolenaar 5926a3c8affSBram Moolenaar exec "norm! \<C-A>" 5936a3c8affSBram Moolenaar call assert_equal(["1234 58"], getline(1, '$')) 5946a3c8affSBram Moolenaar call assert_equal([0, 1, 7, 0], getpos('.')) 5956a3c8affSBram Moolenaar set norightleft 5966a3c8affSBram Moolenaar endif 5976a3c8affSBram Moolenaarendfunc 5986a3c8affSBram Moolenaar 599d79e5501SBram Moolenaar" Tab code and linewise-visual inc/dec 600d79e5501SBram Moolenaarfunc Test_visual_increment_28() 601d79e5501SBram Moolenaar call setline(1, ["x\<TAB>10", "\<TAB>-1"]) 602d79e5501SBram Moolenaar exec "norm! Vj\<C-A>" 603d79e5501SBram Moolenaar call assert_equal(["x\<TAB>11", "\<TAB>0"], getline(1, '$')) 604d79e5501SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 605d79e5501SBram Moolenaar 606d79e5501SBram Moolenaar call setline(1, ["x\<TAB>10", "\<TAB>-1"]) 607d79e5501SBram Moolenaar exec "norm! ggVj\<C-X>" 608d79e5501SBram Moolenaar call assert_equal(["x\<TAB>9", "\<TAB>-2"], getline(1, '$')) 609d79e5501SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 610d79e5501SBram Moolenaarendfunc 611d79e5501SBram Moolenaar 612d79e5501SBram Moolenaar" Tab code and linewise-visual inc/dec with 'nrformats'+=alpha 613d79e5501SBram Moolenaarfunc Test_visual_increment_29() 614d79e5501SBram Moolenaar set nrformats+=alpha 615d79e5501SBram Moolenaar call setline(1, ["x\<TAB>10", "\<TAB>-1"]) 616d79e5501SBram Moolenaar exec "norm! Vj\<C-A>" 617d79e5501SBram Moolenaar call assert_equal(["y\<TAB>10", "\<TAB>0"], getline(1, '$')) 618d79e5501SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 619d79e5501SBram Moolenaar 620d79e5501SBram Moolenaar call setline(1, ["x\<TAB>10", "\<TAB>-1"]) 621d79e5501SBram Moolenaar exec "norm! ggVj\<C-X>" 622d79e5501SBram Moolenaar call assert_equal(["w\<TAB>10", "\<TAB>-2"], getline(1, '$')) 623d79e5501SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 624d79e5501SBram Moolenaarendfunc 625d79e5501SBram Moolenaar 626d79e5501SBram Moolenaar" Tab code and character-visual inc/dec 627d79e5501SBram Moolenaarfunc Test_visual_increment_30() 628d79e5501SBram Moolenaar call setline(1, ["x\<TAB>10", "\<TAB>-1"]) 629d79e5501SBram Moolenaar exec "norm! f1vjf1\<C-A>" 630d79e5501SBram Moolenaar call assert_equal(["x\<TAB>11", "\<TAB>0"], getline(1, '$')) 631d79e5501SBram Moolenaar call assert_equal([0, 1, 3, 0], getpos('.')) 632d79e5501SBram Moolenaar 633d79e5501SBram Moolenaar call setline(1, ["x\<TAB>10", "\<TAB>-1"]) 634d79e5501SBram Moolenaar exec "norm! ggf1vjf1\<C-X>" 635d79e5501SBram Moolenaar call assert_equal(["x\<TAB>9", "\<TAB>-2"], getline(1, '$')) 636d79e5501SBram Moolenaar call assert_equal([0, 1, 3, 0], getpos('.')) 637d79e5501SBram Moolenaarendfunc 638d79e5501SBram Moolenaar 639d79e5501SBram Moolenaar" Tab code and blockwise-visual inc/dec 640d79e5501SBram Moolenaarfunc Test_visual_increment_31() 641d79e5501SBram Moolenaar call setline(1, ["x\<TAB>10", "\<TAB>-1"]) 642d79e5501SBram Moolenaar exec "norm! f1\<C-V>jl\<C-A>" 643d79e5501SBram Moolenaar call assert_equal(["x\<TAB>11", "\<TAB>0"], getline(1, '$')) 644d79e5501SBram Moolenaar call assert_equal([0, 1, 3, 0], getpos('.')) 645d79e5501SBram Moolenaar 646d79e5501SBram Moolenaar call setline(1, ["x\<TAB>10", "\<TAB>-1"]) 647d79e5501SBram Moolenaar exec "norm! ggf1\<C-V>jl\<C-X>" 648d79e5501SBram Moolenaar call assert_equal(["x\<TAB>9", "\<TAB>-2"], getline(1, '$')) 649d79e5501SBram Moolenaar call assert_equal([0, 1, 3, 0], getpos('.')) 650d79e5501SBram Moolenaarendfunc 651d79e5501SBram Moolenaar 652d79e5501SBram Moolenaar" Tab code and blockwise-visual decrement with 'linebreak' and 'showbreak' 653d79e5501SBram Moolenaarfunc Test_visual_increment_32() 654d79e5501SBram Moolenaar 28vnew dummy_31 655d79e5501SBram Moolenaar set linebreak showbreak=+ 656d79e5501SBram Moolenaar call setline(1, ["x\<TAB>\<TAB>\<TAB>10", "\<TAB>\<TAB>\<TAB>\<TAB>-1"]) 657d79e5501SBram Moolenaar exec "norm! ggf0\<C-V>jg_\<C-X>" 658d79e5501SBram Moolenaar call assert_equal(["x\<TAB>\<TAB>\<TAB>1-1", "\<TAB>\<TAB>\<TAB>\<TAB>-2"], getline(1, '$')) 659d79e5501SBram Moolenaar call assert_equal([0, 1, 6, 0], getpos('.')) 660d79e5501SBram Moolenaar bwipe! 661d79e5501SBram Moolenaarendfunc 662d79e5501SBram Moolenaar 663d79e5501SBram Moolenaar" Tab code and blockwise-visual increment with $ 664d79e5501SBram Moolenaarfunc Test_visual_increment_33() 665d79e5501SBram Moolenaar call setline(1, ["\<TAB>123", "456"]) 666d79e5501SBram Moolenaar exec "norm! gg0\<C-V>j$\<C-A>" 667d79e5501SBram Moolenaar call assert_equal(["\<TAB>124", "457"], getline(1, '$')) 668d79e5501SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 669d79e5501SBram Moolenaarendfunc 670d79e5501SBram Moolenaar 671d79e5501SBram Moolenaar" Tab code and blockwise-visual increment and redo 672d79e5501SBram Moolenaarfunc Test_visual_increment_34() 673d79e5501SBram Moolenaar call setline(1, ["\<TAB>123", " 456789"]) 674d79e5501SBram Moolenaar exec "norm! gg0\<C-V>j\<C-A>" 675d79e5501SBram Moolenaar call assert_equal(["\<TAB>123", " 457789"], getline(1, '$')) 676d79e5501SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 677d79e5501SBram Moolenaar 678d79e5501SBram Moolenaar exec "norm! .." 679d79e5501SBram Moolenaar call assert_equal(["\<TAB>123", " 459789"], getline(1, '$')) 680d79e5501SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 681d79e5501SBram Moolenaarendfunc 682d79e5501SBram Moolenaar 683d79e5501SBram Moolenaar" Tab code, spaces and character-visual increment and redo 684d79e5501SBram Moolenaarfunc Test_visual_increment_35() 685d79e5501SBram Moolenaar call setline(1, ["\<TAB>123", " 123", "\<TAB>123", "\<TAB>123"]) 686d79e5501SBram Moolenaar exec "norm! ggvjf3\<C-A>..." 687d79e5501SBram Moolenaar call assert_equal(["\<TAB>127", " 127", "\<TAB>123", "\<TAB>123"], getline(1, '$')) 688d79e5501SBram Moolenaar call assert_equal([0, 1, 2, 0], getpos('.')) 689d79e5501SBram Moolenaarendfunc 690d79e5501SBram Moolenaar 691d79e5501SBram Moolenaar" Tab code, spaces and blockwise-visual increment and redo 692d79e5501SBram Moolenaarfunc Test_visual_increment_36() 693d79e5501SBram Moolenaar call setline(1, [" 123", "\<TAB>456789"]) 694d79e5501SBram Moolenaar exec "norm! G0\<C-V>kl\<C-A>" 695d79e5501SBram Moolenaar call assert_equal([" 123", "\<TAB>556789"], getline(1, '$')) 696d79e5501SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 697d79e5501SBram Moolenaar 698d79e5501SBram Moolenaar exec "norm! ..." 699d79e5501SBram Moolenaar call assert_equal([" 123", "\<TAB>856789"], getline(1, '$')) 700d79e5501SBram Moolenaar call assert_equal([0, 1, 1, 0], getpos('.')) 701d79e5501SBram Moolenaarendfunc 702d79e5501SBram Moolenaar 703d79e5501SBram Moolenaar" block-wise increment and dot-repeat 704e1edc1caSBram Moolenaar" Text: 705e1edc1caSBram Moolenaar" 1 23 706e1edc1caSBram Moolenaar" 4 56 707e1edc1caSBram Moolenaar" 708e1edc1caSBram Moolenaar" Expected: 709e1edc1caSBram Moolenaar" 1) f2 Ctrl-V jl <ctrl-a>, repeat twice afterwards with . 710e1edc1caSBram Moolenaar" 1 26 711e1edc1caSBram Moolenaar" 4 59 712e1edc1caSBram Moolenaar" 713e1edc1caSBram Moolenaar" Try with and without indent. 714d79e5501SBram Moolenaarfunc Test_visual_increment_37() 715e1edc1caSBram Moolenaar call setline(1, [" 1 23", " 4 56"]) 716e1edc1caSBram Moolenaar exec "norm! ggf2\<C-V>jl\<C-A>.." 717e1edc1caSBram Moolenaar call assert_equal([" 1 26", " 4 59"], getline(1, 2)) 718e1edc1caSBram Moolenaar 719e1edc1caSBram Moolenaar call setline(1, ["1 23", "4 56"]) 720e1edc1caSBram Moolenaar exec "norm! ggf2\<C-V>jl\<C-A>.." 721e1edc1caSBram Moolenaar call assert_equal(["1 26", "4 59"], getline(1, 2)) 722e1edc1caSBram Moolenaarendfunc 723e1edc1caSBram Moolenaar 724ef2b5036SBram Moolenaar" Check redo after the normal mode increment 725ef2b5036SBram Moolenaarfunc Test_visual_increment_38() 726ef2b5036SBram Moolenaar exec "norm! i10\<ESC>5\<C-A>." 727ef2b5036SBram Moolenaar call assert_equal(["20"], getline(1, '$')) 728ef2b5036SBram Moolenaar call assert_equal([0, 1, 2, 0], getpos('.')) 729ef2b5036SBram Moolenaarendfunc 730ef2b5036SBram Moolenaar 7313fc3e142SBram Moolenaar" Test what patch 7.3.414 fixed. Ctrl-A on "000" drops the leading zeros. 7323fc3e142SBram Moolenaarfunc Test_normal_increment_01() 7333fc3e142SBram Moolenaar call setline(1, "000") 7343fc3e142SBram Moolenaar exec "norm! gg0\<C-A>" 7353fc3e142SBram Moolenaar call assert_equal("001", getline(1)) 7363fc3e142SBram Moolenaar 7373fc3e142SBram Moolenaar call setline(1, "000") 7383fc3e142SBram Moolenaar exec "norm! gg$\<C-A>" 7393fc3e142SBram Moolenaar call assert_equal("001", getline(1)) 7403fc3e142SBram Moolenaar 7413fc3e142SBram Moolenaar call setline(1, "001") 7423fc3e142SBram Moolenaar exec "norm! gg0\<C-A>" 7433fc3e142SBram Moolenaar call assert_equal("002", getline(1)) 7443fc3e142SBram Moolenaar 7453fc3e142SBram Moolenaar call setline(1, "001") 7463fc3e142SBram Moolenaar exec "norm! gg$\<C-A>" 7473fc3e142SBram Moolenaar call assert_equal("002", getline(1)) 7483fc3e142SBram Moolenaarendfunc 7493fc3e142SBram Moolenaar 7508e08125dSBram Moolenaar" Test a regression of patch 7.4.1087 fixed. 7518e08125dSBram Moolenaarfunc Test_normal_increment_02() 7528e08125dSBram Moolenaar call setline(1, ["hello 10", "world"]) 7538e08125dSBram Moolenaar exec "norm! ggl\<C-A>jx" 7548e08125dSBram Moolenaar call assert_equal(["hello 11", "worl"], getline(1, '$')) 7558e08125dSBram Moolenaar call assert_equal([0, 2, 4, 0], getpos('.')) 7568e08125dSBram Moolenaarendfunc 7578e08125dSBram Moolenaar 75852df117dSBram Moolenaar" The test35 unified to this file. 75952df117dSBram Moolenaarfunc Test_normal_increment_03() 76052df117dSBram Moolenaar call setline(1, ["100 0x100 077 0", 76152df117dSBram Moolenaar \ "100 0x100 077 ", 76252df117dSBram Moolenaar \ "100 0x100 077 0xfF 0xFf", 76352df117dSBram Moolenaar \ "100 0x100 077 "]) 76452df117dSBram Moolenaar set nrformats=octal,hex 76552df117dSBram Moolenaar exec "norm! gg\<C-A>102\<C-X>\<C-A>l\<C-X>l\<C-A>64\<C-A>128\<C-X>$\<C-X>" 76652df117dSBram Moolenaar set nrformats=octal 76752df117dSBram Moolenaar exec "norm! j0\<C-A>102\<C-X>\<C-A>l\<C-X>2\<C-A>w65\<C-A>129\<C-X>blx6lD" 76852df117dSBram Moolenaar set nrformats=hex 76952df117dSBram Moolenaar exec "norm! j0101\<C-X>l257\<C-X>\<C-A>Txldt \<C-A> \<C-X> \<C-X>" 77052df117dSBram Moolenaar set nrformats= 77152df117dSBram Moolenaar exec "norm! j0200\<C-X>l100\<C-X>w78\<C-X>\<C-A>k" 77252df117dSBram Moolenaar call assert_equal(["0 0x0ff 0000 -1", 77352df117dSBram Moolenaar \ "0 1x100 0777777", 77452df117dSBram Moolenaar \ "-1 0x0 078 0xFE 0xfe", 77552df117dSBram Moolenaar \ "-100 -100x100 000 "], getline(1, '$')) 77652df117dSBram Moolenaar call assert_equal([0, 3, 25, 0], getpos('.')) 77752df117dSBram Moolenaarendfunc 77852df117dSBram Moolenaar 7795fe6bdf8SBram Moolenaarfunc Test_increment_empty_line() 7805fe6bdf8SBram Moolenaar call setline(1, ['0', '0', '0', '0', '0', '0', '']) 7815fe6bdf8SBram Moolenaar exe "normal Gvgg\<C-A>" 7825fe6bdf8SBram Moolenaar call assert_equal(['1', '1', '1', '1', '1', '1', ''], getline(1, 7)) 7831671f448SBram Moolenaar 7841671f448SBram Moolenaar " Ctrl-A/Ctrl-X should do nothing in operator pending mode 7851671f448SBram Moolenaar %d 7861671f448SBram Moolenaar call setline(1, 'one two') 7871671f448SBram Moolenaar exe "normal! c\<C-A>l" 7881671f448SBram Moolenaar exe "normal! c\<C-X>l" 7891671f448SBram Moolenaar call assert_equal('one two', getline(1)) 790004a6781SBram Moolenaarendfunc 7911671f448SBram Moolenaar 792004a6781SBram Moolenaar" Try incrementing/decrementing a non-digit/alpha character 793004a6781SBram Moolenaarfunc Test_increment_special_char() 794004a6781SBram Moolenaar call setline(1, '!') 795004a6781SBram Moolenaar call assert_beeps("normal \<C-A>") 796004a6781SBram Moolenaar call assert_beeps("normal \<C-X>") 7975fe6bdf8SBram Moolenaarendfunc 7988e08125dSBram Moolenaar 799aaad995fSBram Moolenaar" Try incrementing/decrementing a number when nrformats contains unsigned 800aaad995fSBram Moolenaarfunc Test_increment_unsigned() 801aaad995fSBram Moolenaar set nrformats+=unsigned 802aaad995fSBram Moolenaar 803aaad995fSBram Moolenaar call setline(1, '0') 804aaad995fSBram Moolenaar exec "norm! gg0\<C-X>" 805aaad995fSBram Moolenaar call assert_equal('0', getline(1)) 806aaad995fSBram Moolenaar 807aaad995fSBram Moolenaar call setline(1, '3') 808aaad995fSBram Moolenaar exec "norm! gg010\<C-X>" 809aaad995fSBram Moolenaar call assert_equal('0', getline(1)) 810aaad995fSBram Moolenaar 811aaad995fSBram Moolenaar call setline(1, '-0') 812aaad995fSBram Moolenaar exec "norm! gg0\<C-X>" 813aaad995fSBram Moolenaar call assert_equal("-0", getline(1)) 814aaad995fSBram Moolenaar 815aaad995fSBram Moolenaar call setline(1, '-11') 816aaad995fSBram Moolenaar exec "norm! gg08\<C-X>" 817aaad995fSBram Moolenaar call assert_equal('-3', getline(1)) 818aaad995fSBram Moolenaar 819aaad995fSBram Moolenaar " NOTE: 18446744073709551615 == 2^64 - 1 820aaad995fSBram Moolenaar call setline(1, '18446744073709551615') 821aaad995fSBram Moolenaar exec "norm! gg0\<C-A>" 822aaad995fSBram Moolenaar call assert_equal('18446744073709551615', getline(1)) 823aaad995fSBram Moolenaar 824aaad995fSBram Moolenaar call setline(1, '-18446744073709551615') 825aaad995fSBram Moolenaar exec "norm! gg0\<C-A>" 826aaad995fSBram Moolenaar call assert_equal('-18446744073709551615', getline(1)) 827aaad995fSBram Moolenaar 828aaad995fSBram Moolenaar call setline(1, '-18446744073709551614') 829aaad995fSBram Moolenaar exec "norm! gg08\<C-A>" 830aaad995fSBram Moolenaar call assert_equal('-18446744073709551615', getline(1)) 831aaad995fSBram Moolenaar 832aaad995fSBram Moolenaar call setline(1, '-1') 833aaad995fSBram Moolenaar exec "norm! gg0\<C-A>" 834aaad995fSBram Moolenaar call assert_equal('-2', getline(1)) 835aaad995fSBram Moolenaar 836aaad995fSBram Moolenaar call setline(1, '-3') 837aaad995fSBram Moolenaar exec "norm! gg08\<C-A>" 838aaad995fSBram Moolenaar call assert_equal('-11', getline(1)) 839aaad995fSBram Moolenaar 840aaad995fSBram Moolenaar set nrformats-=unsigned 841aaad995fSBram Moolenaarendfunc 842aaad995fSBram Moolenaar 8436c6be9e8SBram Moolenaarfunc Test_normal_increment_with_virtualedit() 8446c6be9e8SBram Moolenaar set virtualedit=all 8456c6be9e8SBram Moolenaar 8466c6be9e8SBram Moolenaar call setline(1, ["\<TAB>1"]) 8476c6be9e8SBram Moolenaar exec "norm! 0\<C-A>" 8486c6be9e8SBram Moolenaar call assert_equal("\<TAB>2", getline(1)) 8496c6be9e8SBram Moolenaar call assert_equal([0, 1, 2, 0], getpos('.')) 8506c6be9e8SBram Moolenaar 8516c6be9e8SBram Moolenaar call setline(1, ["\<TAB>1"]) 8526c6be9e8SBram Moolenaar exec "norm! 0l\<C-A>" 8536c6be9e8SBram Moolenaar call assert_equal("\<TAB>2", getline(1)) 8546c6be9e8SBram Moolenaar call assert_equal([0, 1, 2, 0], getpos('.')) 8556c6be9e8SBram Moolenaar 8566c6be9e8SBram Moolenaar call setline(1, ["\<TAB>1"]) 8576c6be9e8SBram Moolenaar exec "norm! 07l\<C-A>" 8586c6be9e8SBram Moolenaar call assert_equal("\<TAB>2", getline(1)) 8596c6be9e8SBram Moolenaar call assert_equal([0, 1, 2, 0], getpos('.')) 8606c6be9e8SBram Moolenaar 8616c6be9e8SBram Moolenaar call setline(1, ["\<TAB>1"]) 8626c6be9e8SBram Moolenaar exec "norm! 0w\<C-A>" 8636c6be9e8SBram Moolenaar call assert_equal("\<TAB>2", getline(1)) 8646c6be9e8SBram Moolenaar call assert_equal([0, 1, 2, 0], getpos('.')) 8656c6be9e8SBram Moolenaar 8666c6be9e8SBram Moolenaar call setline(1, ["\<TAB>1"]) 8676c6be9e8SBram Moolenaar exec "norm! 0wl\<C-A>" 8686c6be9e8SBram Moolenaar call assert_equal("\<TAB>1", getline(1)) 8696c6be9e8SBram Moolenaar call assert_equal([0, 1, 3, 0], getpos('.')) 8706c6be9e8SBram Moolenaar 8716c6be9e8SBram Moolenaar call setline(1, ["\<TAB>1"]) 8726c6be9e8SBram Moolenaar exec "norm! 0w30l\<C-A>" 8736c6be9e8SBram Moolenaar call assert_equal("\<TAB>1", getline(1)) 8746c6be9e8SBram Moolenaar call assert_equal([0, 1, 3, 29], getpos('.')) 8756c6be9e8SBram Moolenaar 8766c6be9e8SBram Moolenaar set virtualedit& 8776c6be9e8SBram Moolenaarendfunc 8786c6be9e8SBram Moolenaar 879*3e72dcadSBram Moolenaar" Test for incrementing a signed hexadecimal and octal number 880*3e72dcadSBram Moolenaarfunc Test_normal_increment_signed_hexoct_nr() 881*3e72dcadSBram Moolenaar new 882*3e72dcadSBram Moolenaar " negative sign before a hex number should be ignored 883*3e72dcadSBram Moolenaar call setline(1, ["-0x9"]) 884*3e72dcadSBram Moolenaar exe "norm \<C-A>" 885*3e72dcadSBram Moolenaar call assert_equal(["-0xa"], getline(1, '$')) 886*3e72dcadSBram Moolenaar exe "norm \<C-X>" 887*3e72dcadSBram Moolenaar call assert_equal(["-0x9"], getline(1, '$')) 888*3e72dcadSBram Moolenaar call setline(1, ["-007"]) 889*3e72dcadSBram Moolenaar exe "norm \<C-A>" 890*3e72dcadSBram Moolenaar call assert_equal(["-010"], getline(1, '$')) 891*3e72dcadSBram Moolenaar exe "norm \<C-X>" 892*3e72dcadSBram Moolenaar call assert_equal(["-007"], getline(1, '$')) 893*3e72dcadSBram Moolenaar bw! 894*3e72dcadSBram Moolenaarendfunc 895*3e72dcadSBram Moolenaar 8969e4d8215SBram Moolenaar" vim: shiftwidth=2 sts=2 expandtab 897