1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
package main
import "testing"
func Test_Editor_insert(test *testing.T) {
cases := []struct {
comment string
e Editor
insert []rune
wantValue []rune
}{
{
comment: "prepend ASCII char",
e: Editor{
value: []rune(`abc`),
cursor: 0,
},
insert: []rune{'X'},
wantValue: []rune(`Xabc`),
},
{
comment: "prepend UTF char",
e: Editor{
value: []rune(`abc`),
cursor: 0,
},
insert: []rune{'☃'},
wantValue: []rune(`☃abc`),
},
{
comment: "insert ASCII char",
e: Editor{
value: []rune(`abc`),
cursor: 1,
},
insert: []rune{'X'},
wantValue: []rune(`aXbc`),
},
{
comment: "insert UTF char",
e: Editor{
value: []rune(`abc`),
cursor: 1,
},
insert: []rune{'☃'},
wantValue: []rune(`a☃bc`),
},
{
comment: "append ASCII char",
e: Editor{
value: []rune(`abc`),
cursor: 3,
},
insert: []rune{'X'},
wantValue: []rune(`abcX`),
},
{
comment: "append UTF char",
e: Editor{
value: []rune(`abc`),
cursor: 3,
},
insert: []rune{'☃'},
wantValue: []rune(`abc☃`),
},
{
comment: "insert 2 ASCII chars",
e: Editor{
value: []rune(`abc`),
cursor: 1,
},
insert: []rune{'X', 'Y'},
wantValue: []rune(`aXYbc`),
},
}
for _, c := range cases {
c.e.insert(c.insert...)
if string(c.e.value) != string(c.wantValue) {
test.Errorf("%q: bad value\nwant: %q\nhave: %q", c.comment, c.wantValue, c.e.value)
}
}
}
|