diff --git a/bin/keymaptest b/bin/keymaptest index 775d8ca..323d639 100755 --- a/bin/keymaptest +++ b/bin/keymaptest @@ -30,6 +30,13 @@ ESC="\033" expect >/dev/null <= 0 + +# 2. "+cc +< +foo +bar +$ ./bin/keymaptest vim 'send \"+cck' 'esc_delay' 'send \"+p' +k +foo +bar +>= 0 + +# 3. 2cc +< +foo +bar +baz +$ ./bin/keymaptest vim 'send 2cck' 'esc_delay' 'send p' +k +foo +bar +baz +>= 0 + +# 4. caw +< +foo bar +ab +$ ./bin/keymaptest vim 'send cawk' 'esc_delay' 'send 0jp' +kbar +afoo b +>= 0 + +# 5. ca) +< +(foo) +a +$ ./bin/keymaptest vim 'send ca)k' 'esc_delay' 'send 0jp' +k +a(foo) +>= 0 + +# 6. ci$ESC: test if $ESC cancel operator. +# Note: if operator is not canceled, `l` would change text +# Note: `v` is an extra check that Visual won't change the text +< +(foo) +$ ./bin/keymaptest vim 'send ci' 'esc_delay' 'send lvlrx' +(xxo) +>= 0 + +# 7. test unkown char +< +(foo) +$ ./bin/keymaptest vim 'send ci' 'send z' 'send lvlrx' +(xxo) +>= 0 + +# 8. test special case: moving from operator to visual +< +(foo) +bar +$ ./bin/keymaptest vim 'send ci' 'esc_delay' 'send jvlrx' +(foo) +xxr +>= 0 + +# 9. ct +< +fooxbar +k +$ ./bin/keymaptest vim 'send ctxU' 'esc_delay' 'send 0jp' +Uxbar +kfoo +>= 0 + +# 10. cf +< +fooxbar +k +$ ./bin/keymaptest vim 'send cfxU' 'esc_delay' 'send 0jp' +Ubar +kfoox +>= 0 + +# 11. visual line change operator +< +foo +bar +baz +$ ./bin/keymaptest vim 'send lVjck' +k +baz +>= 0 diff --git a/test_operators/delete_operator.test b/test_operators/delete_operator.test new file mode 100644 index 0000000..8014d51 --- /dev/null +++ b/test_operators/delete_operator.test @@ -0,0 +1,100 @@ +#!/usr/bin/env -S shelltest --execdir + +# 1. dd +< +foo +bar +$ ./bin/keymaptest vim 'send ddp' +bar +foo +>= 0 + +# 2. "+dd +< +foo +bar +$ ./bin/keymaptest vim 'send \"+dd' 'send \"+p' +bar +foo +>= 0 + +# 3. 2dd +< +foo +bar +baz +$ ./bin/keymaptest vim 'send 2dd' 'send p' +baz +foo +bar +>= 0 + +# 4. daw +< +foo bar +ab +$ ./bin/keymaptest vim 'send daw' 'send j' 'send p' +bar +afoo b +>= 0 + +# 5. da) +< +(foo) +k +$ ./bin/keymaptest vim 'send da)' 'send j' 'send p' + +k(foo) +>= 0 + +# 6. di$ESC: test if $ESC cancel operator. +# Note: if operator is not canceled, `l` would change text +# Note: `v` is an extra check that Visual won't change the text +< +(foo) +$ ./bin/keymaptest vim 'send di' 'esc_delay' 'send lvlrx' +(xxo) +>= 0 + +# 7. test if unkown char cancel [i|a] +< +(foo) +$ ./bin/keymaptest vim 'send diz' 'send lvlrx' +(xxo) +>= 0 + +# 8. test special case: moving from operator to visual +< +(foo) +k +$ ./bin/keymaptest vim 'send di' 'esc_delay' 'send lvlrx' +(xxo) +k +>= 0 + +# 9. dt +< +fooxbar +k +$ ./bin/keymaptest vim 'send dtx' 'send jp' +xbar +kfoo +>= 0 + +# 10. df +< +fooxbar +k +$ ./bin/keymaptest vim 'send dfx' 'send jp' +bar +kfoox +>= 0 + +# 11. visual lines delete +< +foo +bar +baz +$ ./bin/keymaptest vim 'send lVjd' +baz +>= 0 diff --git a/test_operators/operator_in_select_mode.test b/test_operators/operator_in_select_mode.test new file mode 100644 index 0000000..e79886d --- /dev/null +++ b/test_operators/operator_in_select_mode.test @@ -0,0 +1,51 @@ +# 1. vd +< +foo +bar +$ ./bin/keymaptest vim 'send vlld' + +bar +>= 0 + +# 2. v"+d +< +foo +bar +k +$ ./bin/keymaptest vim 'send vll\"+djj' 'send \"+p' + +bar +kfoo +>= 0 + +# 3. vc +< +foo +bar +$ ./bin/keymaptest vim 'send vllcU' +U +bar +>= 0 + +# 4. vy +< +foo +bar +k +$ ./bin/keymaptest vim 'send vllyjjp' +foo +bar +kfoo +>= 0 + +# 5. v"+y +< +foo +bar +k +$ ./bin/keymaptest vim 'send vll\"+yjj' 'send \"+p' +foo +bar +kfoo +>= 0 + diff --git a/test_operators/operator_special_moves.test b/test_operators/operator_special_moves.test new file mode 100644 index 0000000..32b7e47 --- /dev/null +++ b/test_operators/operator_special_moves.test @@ -0,0 +1,75 @@ +#!/usr/bin/env -S shelltest --execdir + +# Note: No wrapped line tests in this file + +# 1. dj +< +foo +bar +baz +$ ./bin/keymaptest vim 'send ldj' +baz +>= 0 + +# 2. 2dj +< +foo +bar +baz +beez +$ ./bin/keymaptest vim 'send l2dj' +beez +>= 0 + +# 3. dk +< +foo +bar +baz +$ ./bin/keymaptest vim 'send ljdk' +baz +>= 0 + +# 4. cj +< +foo +bar +baz +beez +$ ./bin/keymaptest vim 'send cjk' +k +baz +beez +>= 0 + +# 5. dw +< +foo bar +$ ./bin/keymaptest vim 'send dw' +bar +>= 0 + +# 6. dW +< +foo; bar +$ ./bin/keymaptest vim 'send dW' +bar +>= 0 + +# 7. dG +< +foo +bar +baz +beez +$ ./bin/keymaptest vim 'send dG' +>= 0 + +# 8. Gdgg +< +foo +bar +baz +beez +$ ./bin/keymaptest vim 'send Gdgg' +>= 0 diff --git a/test_operators/space_yank.evil-helix.test b/test_operators/space_yank.evil-helix.test new file mode 100644 index 0000000..ff1187e --- /dev/null +++ b/test_operators/space_yank.evil-helix.test @@ -0,0 +1,29 @@ +# 1. yy +< +foo +bar +$ ./bin/keymaptest vim 'send " yy"' 'send j\"+p' +foo +bar +foo +>= 0 + +# 2. 2yy +< +foo +bar +$ ./bin/keymaptest vim 'send " 2yy"' 'send \"+p' +foo +foo +bar +bar +>= 0 + +# 3. yi) +< +(foo) +k +$ ./bin/keymaptest vim 'send " yi)"' 'send j\"+p' +(foo) +kfoo +>= 0 diff --git a/test_operators/undo_operator.test b/test_operators/undo_operator.test new file mode 100644 index 0000000..0416ae2 --- /dev/null +++ b/test_operators/undo_operator.test @@ -0,0 +1,15 @@ +#!/usr/bin/env -S shelltest --execdir + +# 1. undo dd +< +foo +$ ./bin/keymaptest vim 'send dd' 'send u' 'send llrx' +fox +>= 0 + +# 2. undo di) +< +(foo) +$ ./bin/keymaptest vim 'send di)' 'send u' 'send llrx' +(fox) +>= 0 diff --git a/test_operators/yank_operator.test b/test_operators/yank_operator.test new file mode 100644 index 0000000..548116e --- /dev/null +++ b/test_operators/yank_operator.test @@ -0,0 +1,104 @@ +#!/usr/bin/env -S shelltest --execdir + +# 1. yy +< +foo +bar +$ ./bin/keymaptest vim 'send yyp' +foo +foo +bar +>= 0 + +# 2. "+yy +< +foo +bar +$ ./bin/keymaptest vim 'send \"+yyj' 'send \"+p' +foo +bar +foo +>= 0 + +# 3. 2yy +< +foo +bar +$ ./bin/keymaptest vim 'send 2yy' 'send p' +foo +foo +bar +bar +>= 0 + +# 4. yiw +< +foo test +k +$ ./bin/keymaptest vim 'send yiw' 'send j' 'send p' +foo test +kfoo +>= 0 + +# 5. yi) +# k is to avoid Helix case when cursor at the end of the line +# it will paste in next line. Cursor positioning probably need isolated tests +< +(foo) +k +$ ./bin/keymaptest vim 'send yi)' 'send j' 'send p' +(foo) +kfoo +>= 0 + +# 6. yi$ESC +< +(foo) +$ ./bin/keymaptest vim 'send yi' 'esc_delay' 'send lrx' +(xoo) +>= 0 + +# 7. test unkown char +< +(foo) +$ ./bin/keymaptest vim 'send yiz' 'send lvlrx' +(xxo) +>= 0 + +# 8. test special case: moving from operator to visual +< +(foo) +bar +$ ./bin/keymaptest vim 'send yi' 'esc_delay' 'send jvlrx' +(foo) +xxr +>= 0 + +# 9. yt +< +food test +k +$ ./bin/keymaptest vim 'send ytd' 'send jp' +food test +kfoo +>= 0 + +# 10. yf +< +food test +k +$ ./bin/keymaptest vim 'send yfd' 'send jp' +food test +kfood +>= 0 + +# 11. visual lines yank +< +foo +bar +$ ./bin/keymaptest vim 'send lVjy' 'send p' +foo +foo +bar +bar +>= 0