-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathdiff_test.go
73 lines (69 loc) · 1.55 KB
/
diff_test.go
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
package main
import (
"testing"
"github.com/jdbaldry/go-language-server-protocol/lsp/protocol"
"github.com/stretchr/testify/assert"
)
func TestGetTextEdits(t *testing.T) {
testCases := []struct {
name string
before, after string
expected []protocol.TextEdit
}{
{
name: "delete whole file",
before: "one\ntwo\nthree",
after: "",
expected: []protocol.TextEdit{
{
Range: protocol.Range{
Start: protocol.Position{Line: 0, Character: 0},
End: protocol.Position{Line: 3, Character: 0},
},
NewText: "",
},
},
},
{
name: "add one char (replaces the whole line)",
before: "one\ntwo\nthree",
after: "one\ntwoo\nthree",
expected: []protocol.TextEdit{
{
Range: protocol.Range{
Start: protocol.Position{Line: 1, Character: 0},
End: protocol.Position{Line: 2, Character: 0},
},
NewText: "",
},
{
Range: protocol.Range{
Start: protocol.Position{Line: 2, Character: 0},
End: protocol.Position{Line: 2, Character: 0},
},
NewText: "twoo\n",
},
},
},
{
name: "delete a line",
before: "one\ntwo\nthree",
after: "one\nthree",
expected: []protocol.TextEdit{
{
Range: protocol.Range{
Start: protocol.Position{Line: 1, Character: 0},
End: protocol.Position{Line: 2, Character: 0},
},
NewText: "",
},
},
},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
got := getTextEdits(tc.before, tc.after)
assert.Equal(t, tc.expected, got)
})
}
}