1
0
Fork 0
mirror of https://github.com/laravel-ls/protocol.git synced 2026-06-16 03:54:56 +02:00
protocol/document_test.go
2026-03-01 22:57:28 +01:00

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)
}
}