2025-10-15 10:12:44 +03:00

85 lines
1.6 KiB
Go

package lsproto
import (
"testing"
"github.com/go-json-experiment/json"
"gotest.tools/v3/assert"
)
func TestUnmarshalCompletionItem(t *testing.T) {
t.Parallel()
const message = `{
"label": "pageXOffset",
"insertTextFormat": 1,
"textEdit": {
"newText": "pageXOffset",
"insert": {
"start": {
"line": 4,
"character": 0
},
"end": {
"line": 4,
"character": 4
}
},
"replace": {
"start": {
"line": 4,
"character": 0
},
"end": {
"line": 4,
"character": 4
}
}
},
"kind": 6,
"sortText": "15",
"commitCharacters": [
".",
",",
";"
]
}`
var result CompletionItem
err := json.Unmarshal([]byte(message), &result)
assert.NilError(t, err)
assert.DeepEqual(t, result, CompletionItem{
Label: "pageXOffset",
InsertTextFormat: ptrTo(InsertTextFormatPlainText),
TextEdit: &TextEditOrInsertReplaceEdit{
InsertReplaceEdit: &InsertReplaceEdit{
NewText: "pageXOffset",
Insert: Range{
Start: Position{
Line: 4,
Character: 0,
},
End: Position{
Line: 4,
Character: 4,
},
},
Replace: Range{
Start: Position{
Line: 4,
Character: 0,
},
End: Position{
Line: 4,
Character: 4,
},
},
},
},
Kind: ptrTo(CompletionItemKindVariable),
SortText: ptrTo("15"),
CommitCharacters: ptrTo([]string{".", ",", ";"}),
})
}