Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions bin/keymaptest
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,13 @@ ESC="\033"

expect >/dev/null <<EOF
set ESC \033

proc esc_delay {} {
global ESC
send $ESC
after 100
}

spawn $cmd "$tempfile"
expect NOR
$(for arg in "$@"; do
Expand Down
103 changes: 103 additions & 0 deletions test_operators/change_operator.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
#!/usr/bin/env -S shelltest --execdir

# 1. cc
<
foo
bar
$ ./bin/keymaptest vim 'send cck'
k
bar
>= 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
100 changes: 100 additions & 0 deletions test_operators/delete_operator.test
Original file line number Diff line number Diff line change
@@ -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 <operator>[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
51 changes: 51 additions & 0 deletions test_operators/operator_in_select_mode.test
Original file line number Diff line number Diff line change
@@ -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

75 changes: 75 additions & 0 deletions test_operators/operator_special_moves.test
Original file line number Diff line number Diff line change
@@ -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
29 changes: 29 additions & 0 deletions test_operators/space_yank.evil-helix.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# 1. <SPACE>yy
<
foo
bar
$ ./bin/keymaptest vim 'send " yy"' 'send j\"+p'
foo
bar
foo
>= 0

# 2. <SPACE>2yy
<
foo
bar
$ ./bin/keymaptest vim 'send " 2yy"' 'send \"+p'
foo
foo
bar
bar
>= 0

# 3. <SPACE>yi)
<
(foo)
k
$ ./bin/keymaptest vim 'send " yi)"' 'send j\"+p'
(foo)
kfoo
>= 0
15 changes: 15 additions & 0 deletions test_operators/undo_operator.test
Original file line number Diff line number Diff line change
@@ -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
Loading