summaryrefslogtreecommitdiffstats
path: root/up_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'up_test.go')
-rw-r--r--up_test.go92
1 files changed, 92 insertions, 0 deletions
diff --git a/up_test.go b/up_test.go
index 20e8482..87f5278 100644
--- a/up_test.go
+++ b/up_test.go
@@ -81,3 +81,95 @@ func Test_Editor_insert(t *testing.T) {
}
}
}
+
+func Test_Editor_unix_word_rubout(t *testing.T) {
+ tests := []struct {
+ comment string
+ e Editor
+ wantValue []rune
+ wantKillspace []rune
+ }{
+ {
+ comment: "unix-word-rubout at beginning of line",
+ e: Editor{
+ value: []rune(`abc`),
+ cursor: 0,
+ },
+ wantValue: []rune(`abc`),
+ wantKillspace: []rune(``),
+ },
+ {
+ comment: "unix-word-rubout at soft beginning of line",
+ e: Editor{
+ value: []rune(` abc`),
+ cursor: 1,
+ },
+ wantValue: []rune(`abc`),
+ wantKillspace: []rune(` `),
+ },
+ {
+ comment: "unix-word-rubout until soft beginning of line",
+ e: Editor{
+ value: []rune(` abc`),
+ cursor: 2,
+ },
+ wantValue: []rune(` bc`),
+ wantKillspace: []rune(`a`),
+ },
+ {
+ comment: "unix-word-rubout until beginning of line",
+ e: Editor{
+ value: []rune(`abc`),
+ cursor: 2,
+ },
+ wantValue: []rune(`c`),
+ wantKillspace: []rune(`ab`),
+ },
+ {
+ comment: "unix-word-rubout in middle of line",
+ e: Editor{
+ value: []rune(`lorem ipsum dolor`),
+ cursor: 11,
+ },
+ wantValue: []rune(`lorem dolor`),
+ wantKillspace: []rune(`ipsum`),
+ },
+ {
+ comment: "unix-word-rubout cursor at beginning of word",
+ e: Editor{
+ value: []rune(`lorem ipsum dolor`),
+ cursor: 12,
+ },
+ wantValue: []rune(`lorem dolor`),
+ wantKillspace: []rune(`ipsum `),
+ },
+ {
+ comment: "unix-word-rubout cursor between multiple spaces",
+ e: Editor{
+ value: []rune(`a b c`),
+ cursor: 5,
+ },
+ wantValue: []rune(`a c`),
+ wantKillspace: []rune(`b `),
+ },
+ {
+ comment: "unix-word-rubout tab as space char (although is it a realistic case in the context of a command line instruction?)",
+ e: Editor{
+ value: []rune(`a b c`),
+ cursor: 5,
+ },
+ wantValue: []rune(`a c`),
+ wantKillspace: []rune(`b `),
+ },
+ }
+
+ for _, tt := range tests {
+ tt.e.unixWordRubout()
+ if string(tt.e.value) != string(tt.wantValue) {
+ t.Errorf("%q: bad value\nwant: %q\nhave: %q", tt.comment, tt.wantValue, tt.e.value)
+ }
+ if string(tt.e.killspace) != string(tt.wantKillspace) {
+ t.Errorf("%q: bad value in killspace\nwant: %q\nhave: %q", tt.comment, tt.wantKillspace, tt.e.value)
+ }
+ }
+}