diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-03-16 14:15:45 +0000 |
---|---|---|
committer | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-03-16 14:15:45 +0000 |
commit | cd3c7908c2ca750b27d330b4d257edc6818c4a5d (patch) | |
tree | 194d7b0e539d014393564a256bec571e18d6533a /gopls/internal/lsp/fake/edit_test.go | |
parent | 3225eca48f7ce16eb31b2dd5a170806c1214a49e (diff) | |
parent | 09c5a32afc5b66f28f166a68afe1fc71afbf9b73 (diff) | |
download | golang-x-tools-cd3c7908c2ca750b27d330b4d257edc6818c4a5d.tar.gz |
Snap for 9757917 from 09c5a32afc5b66f28f166a68afe1fc71afbf9b73 to build-tools-releasebuild-tools-release
Change-Id: If48e809642d94de846f47e34b88e446095e21aa5
Diffstat (limited to 'gopls/internal/lsp/fake/edit_test.go')
-rw-r--r-- | gopls/internal/lsp/fake/edit_test.go | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/gopls/internal/lsp/fake/edit_test.go b/gopls/internal/lsp/fake/edit_test.go new file mode 100644 index 000000000..97e2c73e4 --- /dev/null +++ b/gopls/internal/lsp/fake/edit_test.go @@ -0,0 +1,96 @@ +// Copyright 2020 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package fake + +import ( + "testing" + + "golang.org/x/tools/gopls/internal/lsp/protocol" +) + +func TestApplyEdits(t *testing.T) { + tests := []struct { + label string + content string + edits []protocol.TextEdit + want string + wantErr bool + }{ + { + label: "empty content", + }, + { + label: "empty edit", + content: "hello", + edits: []protocol.TextEdit{}, + want: "hello", + }, + { + label: "unicode edit", + content: "hello, 日本語", + edits: []protocol.TextEdit{ + NewEdit(0, 7, 0, 10, "world"), + }, + want: "hello, world", + }, + { + label: "range edit", + content: "ABC\nDEF\nGHI\nJKL", + edits: []protocol.TextEdit{ + NewEdit(1, 1, 2, 3, "12\n345"), + }, + want: "ABC\nD12\n345\nJKL", + }, + { + label: "regression test for issue #57627", + content: "go 1.18\nuse moda/a", + edits: []protocol.TextEdit{ + NewEdit(1, 0, 1, 0, "\n"), + NewEdit(2, 0, 2, 0, "\n"), + }, + want: "go 1.18\n\nuse moda/a\n", + }, + { + label: "end before start", + content: "ABC\nDEF\nGHI\nJKL", + edits: []protocol.TextEdit{ + NewEdit(2, 3, 1, 1, "12\n345"), + }, + wantErr: true, + }, + { + label: "out of bounds line", + content: "ABC\nDEF\nGHI\nJKL", + edits: []protocol.TextEdit{ + NewEdit(1, 1, 4, 3, "12\n345"), + }, + wantErr: true, + }, + { + label: "out of bounds column", + content: "ABC\nDEF\nGHI\nJKL", + edits: []protocol.TextEdit{ + NewEdit(1, 4, 2, 3, "12\n345"), + }, + wantErr: true, + }, + } + + for _, test := range tests { + test := test + t.Run(test.label, func(t *testing.T) { + got, err := applyEdits(protocol.NewMapper("", []byte(test.content)), test.edits, false) + if (err != nil) != test.wantErr { + t.Errorf("got err %v, want error: %t", err, test.wantErr) + } + if err != nil { + return + } + if got := string(got); got != test.want { + t.Errorf("got %q, want %q", got, test.want) + } + }) + } +} |