gopls/internal/lsp/protocol: move TestBytesOffset
Change-Id: Ied6bbcc7a4da1a513e500f1e650ca9b1b51c6254
Reviewed-on: https://go-review.googlesource.com/c/tools/+/463685
Run-TryBot: Alan Donovan <adonovan@google.com>
Auto-Submit: Alan Donovan <adonovan@google.com>
Reviewed-by: Robert Findley <rfindley@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
diff --git a/gopls/internal/lsp/lsp_test.go b/gopls/internal/lsp/lsp_test.go
index 5290e61..47f6b0a 100644
--- a/gopls/internal/lsp/lsp_test.go
+++ b/gopls/internal/lsp/lsp_test.go
@@ -1332,43 +1332,6 @@
}
}
-func TestBytesOffset(t *testing.T) {
- tests := []struct {
- text string
- pos protocol.Position
- want int
- }{
- // U+10400 encodes as [F0 90 90 80] in UTF-8 and [D801 DC00] in UTF-16.
- {text: `a𐐀b`, pos: protocol.Position{Line: 0, Character: 0}, want: 0},
- {text: `a𐐀b`, pos: protocol.Position{Line: 0, Character: 1}, want: 1},
- {text: `a𐐀b`, pos: protocol.Position{Line: 0, Character: 2}, want: 1},
- {text: `a𐐀b`, pos: protocol.Position{Line: 0, Character: 3}, want: 5},
- {text: `a𐐀b`, pos: protocol.Position{Line: 0, Character: 4}, want: 6},
- {text: `a𐐀b`, pos: protocol.Position{Line: 0, Character: 5}, want: -1},
- {text: "aaa\nbbb\n", pos: protocol.Position{Line: 0, Character: 3}, want: 3},
- {text: "aaa\nbbb\n", pos: protocol.Position{Line: 0, Character: 4}, want: -1},
- {text: "aaa\nbbb\n", pos: protocol.Position{Line: 1, Character: 0}, want: 4},
- {text: "aaa\nbbb\n", pos: protocol.Position{Line: 1, Character: 3}, want: 7},
- {text: "aaa\nbbb\n", pos: protocol.Position{Line: 1, Character: 4}, want: -1},
- {text: "aaa\nbbb\n", pos: protocol.Position{Line: 2, Character: 0}, want: 8},
- {text: "aaa\nbbb\n", pos: protocol.Position{Line: 2, Character: 1}, want: -1},
- {text: "aaa\nbbb\n\n", pos: protocol.Position{Line: 2, Character: 0}, want: 8},
- }
-
- for i, test := range tests {
- fname := fmt.Sprintf("test %d", i)
- uri := span.URIFromPath(fname)
- mapper := protocol.NewMapper(uri, []byte(test.text))
- got, err := mapper.PositionPoint(test.pos)
- if err != nil && test.want != -1 {
- t.Errorf("%d: unexpected error: %v", i, err)
- }
- if err == nil && got.Offset() != test.want {
- t.Errorf("want %d for %q(Line:%d,Character:%d), but got %d", test.want, test.text, int(test.pos.Line), int(test.pos.Character), got.Offset())
- }
- }
-}
-
func (r *runner) collectDiagnostics(view *cache.View) {
if r.diagnostics != nil {
return
diff --git a/gopls/internal/lsp/protocol/mapper_test.go b/gopls/internal/lsp/protocol/mapper_test.go
index 5e85481..0780491 100644
--- a/gopls/internal/lsp/protocol/mapper_test.go
+++ b/gopls/internal/lsp/protocol/mapper_test.go
@@ -401,4 +401,41 @@
}
}
+func TestBytesOffset(t *testing.T) {
+ tests := []struct {
+ text string
+ pos protocol.Position
+ want int
+ }{
+ // U+10400 encodes as [F0 90 90 80] in UTF-8 and [D801 DC00] in UTF-16.
+ {text: `a𐐀b`, pos: protocol.Position{Line: 0, Character: 0}, want: 0},
+ {text: `a𐐀b`, pos: protocol.Position{Line: 0, Character: 1}, want: 1},
+ {text: `a𐐀b`, pos: protocol.Position{Line: 0, Character: 2}, want: 1},
+ {text: `a𐐀b`, pos: protocol.Position{Line: 0, Character: 3}, want: 5},
+ {text: `a𐐀b`, pos: protocol.Position{Line: 0, Character: 4}, want: 6},
+ {text: `a𐐀b`, pos: protocol.Position{Line: 0, Character: 5}, want: -1},
+ {text: "aaa\nbbb\n", pos: protocol.Position{Line: 0, Character: 3}, want: 3},
+ {text: "aaa\nbbb\n", pos: protocol.Position{Line: 0, Character: 4}, want: -1},
+ {text: "aaa\nbbb\n", pos: protocol.Position{Line: 1, Character: 0}, want: 4},
+ {text: "aaa\nbbb\n", pos: protocol.Position{Line: 1, Character: 3}, want: 7},
+ {text: "aaa\nbbb\n", pos: protocol.Position{Line: 1, Character: 4}, want: -1},
+ {text: "aaa\nbbb\n", pos: protocol.Position{Line: 2, Character: 0}, want: 8},
+ {text: "aaa\nbbb\n", pos: protocol.Position{Line: 2, Character: 1}, want: -1},
+ {text: "aaa\nbbb\n\n", pos: protocol.Position{Line: 2, Character: 0}, want: 8},
+ }
+
+ for i, test := range tests {
+ fname := fmt.Sprintf("test %d", i)
+ uri := span.URIFromPath(fname)
+ mapper := protocol.NewMapper(uri, []byte(test.text))
+ got, err := mapper.PositionPoint(test.pos)
+ if err != nil && test.want != -1 {
+ t.Errorf("%d: unexpected error: %v", i, err)
+ }
+ if err == nil && got.Offset() != test.want {
+ t.Errorf("want %d for %q(Line:%d,Character:%d), but got %d", test.want, test.text, int(test.pos.Line), int(test.pos.Character), got.Offset())
+ }
+ }
+}
+
// -- end --