mirror of
https://github.com/laravel-ls/protocol.git
synced 2026-06-16 03:54:56 +02:00
58 lines
2.2 KiB
Go
58 lines
2.2 KiB
Go
package protocol_test
|
|
|
|
import (
|
|
"encoding/json"
|
|
"testing"
|
|
|
|
"github.com/laravel-ls/protocol"
|
|
)
|
|
|
|
func Test_Document_StructsUnmarshalValidJSON(t *testing.T) {
|
|
var id protocol.TextDocumentIdentifier
|
|
if err := json.Unmarshal([]byte(`{"uri":"file:///tmp/main.go"}`), &id); err != nil {
|
|
t.Fatalf("unmarshal TextDocumentIdentifier failed: %v", err)
|
|
}
|
|
if id.URI != "file:///tmp/main.go" {
|
|
t.Fatalf("unexpected TextDocumentIdentifier: %+v", id)
|
|
}
|
|
|
|
var versioned protocol.VersionedTextDocumentIdentifier
|
|
if err := json.Unmarshal([]byte(`{"uri":"file:///tmp/main.go","version":5}`), &versioned); err != nil {
|
|
t.Fatalf("unmarshal VersionedTextDocumentIdentifier failed: %v", err)
|
|
}
|
|
if versioned.Version != 5 {
|
|
t.Fatalf("unexpected VersionedTextDocumentIdentifier: %+v", versioned)
|
|
}
|
|
|
|
var item protocol.TextDocumentItem
|
|
if err := json.Unmarshal([]byte(`{"uri":"file:///tmp/main.go","languageId":"go","version":5,"text":"package main"}`), &item); err != nil {
|
|
t.Fatalf("unmarshal TextDocumentItem failed: %v", err)
|
|
}
|
|
if item.LanguageID != protocol.LanguageGo {
|
|
t.Fatalf("unexpected TextDocumentItem language: %s", item.LanguageID)
|
|
}
|
|
|
|
var pos protocol.TextDocumentPositionParams
|
|
if err := json.Unmarshal([]byte(`{"textDocument":{"uri":"file:///tmp/main.go"},"position":{"line":3,"character":1}}`), &pos); err != nil {
|
|
t.Fatalf("unmarshal TextDocumentPositionParams failed: %v", err)
|
|
}
|
|
if pos.Position.Line != 3 {
|
|
t.Fatalf("unexpected TextDocumentPositionParams: %+v", pos)
|
|
}
|
|
|
|
var edit protocol.TextEdit
|
|
if err := json.Unmarshal([]byte(`{"range":{"start":{"line":1,"character":0},"end":{"line":1,"character":2}},"newText":"hi"}`), &edit); err != nil {
|
|
t.Fatalf("unmarshal TextEdit failed: %v", err)
|
|
}
|
|
if edit.NewText != "hi" {
|
|
t.Fatalf("unexpected TextEdit: %+v", edit)
|
|
}
|
|
|
|
var docEdit protocol.TextDocumentEdit
|
|
if err := json.Unmarshal([]byte(`{"textDocument":{"uri":"file:///tmp/main.go","version":5},"edits":[{"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":0}},"newText":"x"}]}`), &docEdit); err != nil {
|
|
t.Fatalf("unmarshal TextDocumentEdit failed: %v", err)
|
|
}
|
|
if len(docEdit.Edits) != 1 {
|
|
t.Fatalf("unexpected TextDocumentEdit edits: %+v", docEdit.Edits)
|
|
}
|
|
}
|