.gitignore added
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools@v0.1.1-0.20210319172145-bda8f5cee399 / internal / lsp / diff / diff_test.go
1 // Copyright 2019 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 package diff_test
6
7 import (
8         "fmt"
9         "testing"
10
11         "golang.org/x/tools/internal/lsp/diff"
12         "golang.org/x/tools/internal/lsp/diff/difftest"
13         "golang.org/x/tools/internal/span"
14 )
15
16 func TestApplyEdits(t *testing.T) {
17         for _, tc := range difftest.TestCases {
18                 t.Run(tc.Name, func(t *testing.T) {
19                         t.Helper()
20                         if got := diff.ApplyEdits(tc.In, tc.Edits); got != tc.Out {
21                                 t.Errorf("ApplyEdits edits got %q, want %q", got, tc.Out)
22                         }
23                         if tc.LineEdits != nil {
24                                 if got := diff.ApplyEdits(tc.In, tc.LineEdits); got != tc.Out {
25                                         t.Errorf("ApplyEdits lineEdits got %q, want %q", got, tc.Out)
26                                 }
27                         }
28                 })
29         }
30 }
31
32 func TestLineEdits(t *testing.T) {
33         for _, tc := range difftest.TestCases {
34                 t.Run(tc.Name, func(t *testing.T) {
35                         t.Helper()
36                         // if line edits not specified, it is the same as edits
37                         edits := tc.LineEdits
38                         if edits == nil {
39                                 edits = tc.Edits
40                         }
41                         if got := diff.LineEdits(tc.In, tc.Edits); diffEdits(got, edits) {
42                                 t.Errorf("LineEdits got %q, want %q", got, edits)
43                         }
44                 })
45         }
46 }
47
48 func TestUnified(t *testing.T) {
49         for _, tc := range difftest.TestCases {
50                 t.Run(tc.Name, func(t *testing.T) {
51                         t.Helper()
52                         unified := fmt.Sprint(diff.ToUnified(difftest.FileA, difftest.FileB, tc.In, tc.Edits))
53                         if unified != tc.Unified {
54                                 t.Errorf("edits got diff:\n%v\nexpected:\n%v", unified, tc.Unified)
55                         }
56                         if tc.LineEdits != nil {
57                                 unified := fmt.Sprint(diff.ToUnified(difftest.FileA, difftest.FileB, tc.In, tc.LineEdits))
58                                 if unified != tc.Unified {
59                                         t.Errorf("lineEdits got diff:\n%v\nexpected:\n%v", unified, tc.Unified)
60                                 }
61                         }
62                 })
63         }
64 }
65
66 func diffEdits(got, want []diff.TextEdit) bool {
67         if len(got) != len(want) {
68                 return true
69         }
70         for i, w := range want {
71                 g := got[i]
72                 if span.Compare(w.Span, g.Span) != 0 {
73                         return true
74                 }
75                 if w.NewText != g.NewText {
76                         return true
77                 }
78         }
79         return false
80 }