5207 lines
122 KiB
Go
5207 lines
122 KiB
Go
|
// SPDX-FileCopyrightText: 2019 The Go Language Server Authors
|
||
|
// SPDX-License-Identifier: BSD-3-Clause
|
||
|
|
||
|
package protocol
|
||
|
|
||
|
import (
|
||
|
"fmt"
|
||
|
"path/filepath"
|
||
|
"testing"
|
||
|
|
||
|
"encoding/json"
|
||
|
"github.com/google/go-cmp/cmp"
|
||
|
"github.com/google/go-cmp/cmp/cmpopts"
|
||
|
|
||
|
"github.com/a-h/templ/lsp/uri"
|
||
|
)
|
||
|
|
||
|
func TestWorkspaceFolders(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const want = `[{"uri":"file:///Users/zchee/go/src/github.com/a-h/templ/lsp/protocol","name":"protocol"},{"uri":"file:///Users/zchee/go/src/github.com/a-h/templ/lsp/jsonrpc2","name":"jsonrpc2"}]`
|
||
|
wantType := WorkspaceFolders{
|
||
|
{
|
||
|
URI: string(uri.File("/Users/zchee/go/src/github.com/a-h/templ/lsp/protocol")),
|
||
|
Name: "protocol",
|
||
|
},
|
||
|
{
|
||
|
URI: string(uri.File("/Users/zchee/go/src/github.com/a-h/templ/lsp/jsonrpc2")),
|
||
|
Name: "jsonrpc2",
|
||
|
},
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field WorkspaceFolders
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want WorkspaceFolders
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got WorkspaceFolders
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestClientInfo(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"name":"testClient","version":"v0.0.0"}`
|
||
|
wantNilAll = `{"name":"testClient"}`
|
||
|
)
|
||
|
wantType := ClientInfo{
|
||
|
Name: "testClient",
|
||
|
Version: "v0.0.0",
|
||
|
}
|
||
|
wantTypeNilAll := ClientInfo{
|
||
|
Name: "testClient",
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field ClientInfo
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantTypeNilAll,
|
||
|
want: wantNilAll,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want ClientInfo
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantNilAll,
|
||
|
want: wantTypeNilAll,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got ClientInfo
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestInitializeParams(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const wantWorkDoneToken = "156edea9-9d8d-422f-b7ee-81a84594afbb"
|
||
|
const (
|
||
|
want = `{"workDoneToken":"` + wantWorkDoneToken + `","processId":25556,"clientInfo":{"name":"testClient","version":"v0.0.0"},"locale":"en-US","rootPath":"~/go/src/github.com/a-h/templ/lsp/protocol","rootUri":"file:///Users/zchee/go/src/github.com/a-h/templ/lsp/protocol","initializationOptions":"testdata","capabilities":{},"trace":"on","workspaceFolders":[{"uri":"file:///Users/zchee/go/src/github.com/a-h/templ/lsp/protocol","name":"protocol"},{"uri":"file:///Users/zchee/go/src/github.com/a-h/templ/lsp/jsonrpc2","name":"jsonrpc2"}]}`
|
||
|
wantNil = `{"processId":25556,"rootUri":"file:///Users/zchee/go/src/github.com/a-h/templ/lsp/protocol","capabilities":{}}`
|
||
|
)
|
||
|
wantType := InitializeParams{
|
||
|
WorkDoneProgressParams: WorkDoneProgressParams{
|
||
|
WorkDoneToken: NewProgressToken(wantWorkDoneToken),
|
||
|
},
|
||
|
ProcessID: 25556,
|
||
|
ClientInfo: &ClientInfo{
|
||
|
Name: "testClient",
|
||
|
Version: "v0.0.0",
|
||
|
},
|
||
|
Locale: "en-US",
|
||
|
RootPath: "~/go/src/github.com/a-h/templ/lsp/protocol",
|
||
|
RootURI: uri.File("/Users/zchee/go/src/github.com/a-h/templ/lsp/protocol"),
|
||
|
InitializationOptions: "testdata",
|
||
|
Capabilities: ClientCapabilities{},
|
||
|
Trace: "on",
|
||
|
WorkspaceFolders: []WorkspaceFolder{
|
||
|
{
|
||
|
Name: filepath.Base("/Users/zchee/go/src/github.com/a-h/templ/lsp/protocol"),
|
||
|
URI: string(uri.File("/Users/zchee/go/src/github.com/a-h/templ/lsp/protocol")),
|
||
|
},
|
||
|
{
|
||
|
Name: filepath.Base("/Users/zchee/go/src/github.com/a-h/templ/lsp/jsonrpc2"),
|
||
|
URI: string(uri.File("/Users/zchee/go/src/github.com/a-h/templ/lsp/jsonrpc2")),
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
wantTypeNilAll := InitializeParams{
|
||
|
ProcessID: 25556,
|
||
|
RootURI: uri.File("//Users/zchee/go/src/github.com/a-h/templ/lsp/protocol"),
|
||
|
Capabilities: ClientCapabilities{},
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field InitializeParams
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantTypeNilAll,
|
||
|
want: wantNil,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want InitializeParams
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantNil,
|
||
|
want: wantTypeNilAll,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got InitializeParams
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got, cmpopts.IgnoreTypes(WorkDoneProgressParams{})); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
|
||
|
if token := got.WorkDoneToken; token != nil {
|
||
|
if diff := cmp.Diff(fmt.Sprint(token), wantWorkDoneToken); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestLogTraceParams(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"message":"testMessage","verbose":"verbose"}`
|
||
|
wantNil = `{"message":"testMessage"}`
|
||
|
)
|
||
|
wantType := LogTraceParams{
|
||
|
Message: "testMessage",
|
||
|
Verbose: TraceVerbose,
|
||
|
}
|
||
|
wantTypeNil := LogTraceParams{
|
||
|
Message: "testMessage",
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field LogTraceParams
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Nil",
|
||
|
field: wantTypeNil,
|
||
|
want: wantNil,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want LogTraceParams
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Nil",
|
||
|
field: wantNil,
|
||
|
want: wantTypeNil,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got LogTraceParams
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestSetTraceParams(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"value":"verbose"}`
|
||
|
wantInvalid = `{"value":"invalid"}`
|
||
|
)
|
||
|
wantType := SetTraceParams{
|
||
|
Value: TraceVerbose,
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field SetTraceParams
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantType,
|
||
|
want: wantInvalid,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want SetTraceParams
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantInvalid,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got SetTraceParams
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestCreateFilesParams(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"files":[{"uri":"file:///path/to/basic.go"}]}`
|
||
|
wantInvalid = `{"files":[{"uri":"file:///path/to/invalid.go"}]}`
|
||
|
)
|
||
|
wantType := CreateFilesParams{
|
||
|
Files: []FileCreate{
|
||
|
{
|
||
|
URI: "file:///path/to/basic.go",
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field CreateFilesParams
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantType,
|
||
|
want: wantInvalid,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want CreateFilesParams
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantInvalid,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got CreateFilesParams
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestRenameFilesParams(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"files":[{"oldUri":"file:///path/to/old.go","newUri":"file:///path/to/new.go"}]}`
|
||
|
wantInvalid = `{"files":[{"oldUri":"file:///path/to/invalidOld.go","newUri":"file:///path/to/invalidNew.go"}]}`
|
||
|
)
|
||
|
wantType := RenameFilesParams{
|
||
|
Files: []FileRename{
|
||
|
{
|
||
|
OldURI: "file:///path/to/old.go",
|
||
|
NewURI: "file:///path/to/new.go",
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field RenameFilesParams
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantType,
|
||
|
want: wantInvalid,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want RenameFilesParams
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantInvalid,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got RenameFilesParams
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestDeleteFilesParams(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"files":[{"uri":"file:///path/to/basic.go"}]}`
|
||
|
wantInvalid = `{"files":[{"uri":"file:///path/to/invalid.go"}]}`
|
||
|
)
|
||
|
wantType := DeleteFilesParams{
|
||
|
Files: []FileDelete{
|
||
|
{
|
||
|
URI: "file:///path/to/basic.go",
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field DeleteFilesParams
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantType,
|
||
|
want: wantInvalid,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want DeleteFilesParams
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantInvalid,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got DeleteFilesParams
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestReferencesParams(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
wantWorkDoneToken = "156edea9-9d8d-422f-b7ee-81a84594afbb"
|
||
|
wantPartialResultToken = "dd134d84-c134-4d7a-a2a3-f8af3ef4a568"
|
||
|
)
|
||
|
const (
|
||
|
want = `{"textDocument":{"uri":"file:///path/to/basic.go"},"position":{"line":25,"character":1},"workDoneToken":"` + wantWorkDoneToken + `","partialResultToken":"` + wantPartialResultToken + `","context":{"includeDeclaration":true}}`
|
||
|
wantNilAll = `{"textDocument":{"uri":"file:///path/to/basic.go"},"position":{"line":25,"character":1},"context":{"includeDeclaration":true}}`
|
||
|
wantInvalid = `{"textDocument":{"uri":"file:///path/to/basic_gen.go"},"position":{"line":2,"character":1},"workDoneToken":"` + wantPartialResultToken + `","partialResultToken":"` + wantWorkDoneToken + `","context":{"includeDeclaration":false}}`
|
||
|
)
|
||
|
wantType := ReferenceParams{
|
||
|
TextDocumentPositionParams: TextDocumentPositionParams{
|
||
|
TextDocument: TextDocumentIdentifier{
|
||
|
URI: uri.File("/path/to/basic.go"),
|
||
|
},
|
||
|
Position: Position{
|
||
|
Line: 25,
|
||
|
Character: 1,
|
||
|
},
|
||
|
},
|
||
|
WorkDoneProgressParams: WorkDoneProgressParams{
|
||
|
WorkDoneToken: NewProgressToken(wantWorkDoneToken),
|
||
|
},
|
||
|
PartialResultParams: PartialResultParams{
|
||
|
PartialResultToken: NewProgressToken(wantPartialResultToken),
|
||
|
},
|
||
|
Context: ReferenceContext{
|
||
|
IncludeDeclaration: true,
|
||
|
},
|
||
|
}
|
||
|
wantTypeNilAll := ReferenceParams{
|
||
|
TextDocumentPositionParams: TextDocumentPositionParams{
|
||
|
TextDocument: TextDocumentIdentifier{
|
||
|
URI: uri.File("/path/to/basic.go"),
|
||
|
},
|
||
|
Position: Position{
|
||
|
Line: 25,
|
||
|
Character: 1,
|
||
|
},
|
||
|
},
|
||
|
Context: ReferenceContext{
|
||
|
IncludeDeclaration: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field ReferenceParams
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantTypeNilAll,
|
||
|
want: wantNilAll,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantType,
|
||
|
want: wantInvalid,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want ReferenceParams
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantNilAll,
|
||
|
want: wantTypeNilAll,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantInvalid,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got ReferenceParams
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got, cmpopts.IgnoreTypes(WorkDoneProgressParams{}, PartialResultParams{})); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
|
||
|
if workDoneToken := got.WorkDoneToken; workDoneToken != nil {
|
||
|
if diff := cmp.Diff(fmt.Sprint(workDoneToken), wantWorkDoneToken); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if partialResultToken := got.PartialResultToken; partialResultToken != nil {
|
||
|
if diff := cmp.Diff(fmt.Sprint(partialResultToken), wantPartialResultToken); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestDocumentHighlightOptions(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"workDoneProgress":true}`
|
||
|
wantNil = `{}`
|
||
|
wantInvalid = `{"workDoneProgress":false}`
|
||
|
)
|
||
|
wantType := DocumentHighlightOptions{
|
||
|
WorkDoneProgressOptions: WorkDoneProgressOptions{
|
||
|
WorkDoneProgress: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field DocumentHighlightOptions
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: DocumentHighlightOptions{},
|
||
|
want: wantNil,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantType,
|
||
|
want: wantInvalid,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want DocumentHighlightOptions
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantNil,
|
||
|
want: DocumentHighlightOptions{},
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantInvalid,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got DocumentHighlightOptions
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestDocumentHighlightParams(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
wantWorkDoneToken = "156edea9-9d8d-422f-b7ee-81a84594afbb"
|
||
|
wantPartialResultToken = "dd134d84-c134-4d7a-a2a3-f8af3ef4a568"
|
||
|
)
|
||
|
const (
|
||
|
want = `{"textDocument":{"uri":"file:///path/to/basic.go"},"position":{"line":25,"character":1},"workDoneToken":"` + wantWorkDoneToken + `","partialResultToken":"` + wantPartialResultToken + `"}`
|
||
|
wantNilAll = `{"textDocument":{"uri":"file:///path/to/basic.go"},"position":{"line":25,"character":1}}`
|
||
|
wantInvalid = `{"textDocument":{"uri":"file:///path/to/basic_gen.go"},"position":{"line":2,"character":1},"workDoneToken":"` + wantPartialResultToken + `","partialResultToken":"` + wantWorkDoneToken + `"}`
|
||
|
)
|
||
|
wantType := DocumentHighlightParams{
|
||
|
TextDocumentPositionParams: TextDocumentPositionParams{
|
||
|
TextDocument: TextDocumentIdentifier{
|
||
|
URI: uri.File("/path/to/basic.go"),
|
||
|
},
|
||
|
Position: Position{
|
||
|
Line: 25,
|
||
|
Character: 1,
|
||
|
},
|
||
|
},
|
||
|
WorkDoneProgressParams: WorkDoneProgressParams{
|
||
|
WorkDoneToken: NewProgressToken(wantWorkDoneToken),
|
||
|
},
|
||
|
PartialResultParams: PartialResultParams{
|
||
|
PartialResultToken: NewProgressToken(wantPartialResultToken),
|
||
|
},
|
||
|
}
|
||
|
wantTypeNilAll := DocumentHighlightParams{
|
||
|
TextDocumentPositionParams: TextDocumentPositionParams{
|
||
|
TextDocument: TextDocumentIdentifier{
|
||
|
URI: uri.File("/path/to/basic.go"),
|
||
|
},
|
||
|
Position: Position{
|
||
|
Line: 25,
|
||
|
Character: 1,
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field DocumentHighlightParams
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantTypeNilAll,
|
||
|
want: wantNilAll,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantType,
|
||
|
want: wantInvalid,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want DocumentHighlightParams
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantNilAll,
|
||
|
want: wantTypeNilAll,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantInvalid,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got DocumentHighlightParams
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got, cmpopts.IgnoreTypes(WorkDoneProgressParams{}, PartialResultParams{})); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
|
||
|
if workDoneToken := got.WorkDoneToken; workDoneToken != nil {
|
||
|
if diff := cmp.Diff(fmt.Sprint(workDoneToken), wantWorkDoneToken); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if partialResultToken := got.PartialResultToken; partialResultToken != nil {
|
||
|
if diff := cmp.Diff(fmt.Sprint(partialResultToken), wantPartialResultToken); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestDocumentSymbolOptions(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"workDoneProgress":true,"label":"testLabel"}`
|
||
|
wantInvalid = `{"workDoneProgress":false}`
|
||
|
wantNil = `{}`
|
||
|
)
|
||
|
wantType := DocumentSymbolOptions{
|
||
|
WorkDoneProgressOptions: WorkDoneProgressOptions{
|
||
|
WorkDoneProgress: true,
|
||
|
},
|
||
|
Label: "testLabel",
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field DocumentSymbolOptions
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: DocumentSymbolOptions{},
|
||
|
want: wantNil,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantType,
|
||
|
want: wantInvalid,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want DocumentSymbolOptions
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantNil,
|
||
|
want: DocumentSymbolOptions{},
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantInvalid,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got DocumentSymbolOptions
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestWorkspaceSymbolOptions(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"workDoneProgress":true}`
|
||
|
wantInvalid = `{"workDoneProgress":false}`
|
||
|
wantNil = `{}`
|
||
|
)
|
||
|
wantType := WorkspaceSymbolOptions{
|
||
|
WorkDoneProgressOptions: WorkDoneProgressOptions{
|
||
|
WorkDoneProgress: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field WorkspaceSymbolOptions
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: WorkspaceSymbolOptions{},
|
||
|
want: wantNil,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantType,
|
||
|
want: wantInvalid,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want WorkspaceSymbolOptions
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantNil,
|
||
|
want: WorkspaceSymbolOptions{},
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantInvalid,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got WorkspaceSymbolOptions
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestDocumentFormattingOptions(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"workDoneProgress":true}`
|
||
|
wantInvalid = `{"workDoneProgress":false}`
|
||
|
wantNil = `{}`
|
||
|
)
|
||
|
wantType := DocumentFormattingOptions{
|
||
|
WorkDoneProgressOptions: WorkDoneProgressOptions{
|
||
|
WorkDoneProgress: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field DocumentFormattingOptions
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: DocumentFormattingOptions{},
|
||
|
want: wantNil,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantType,
|
||
|
want: wantInvalid,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want DocumentFormattingOptions
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantNil,
|
||
|
want: DocumentFormattingOptions{},
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantInvalid,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got DocumentFormattingOptions
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestDocumentRangeFormattingOptions(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"workDoneProgress":true}`
|
||
|
wantNil = `{}`
|
||
|
wantInvalid = `{"workDoneProgress":false}`
|
||
|
)
|
||
|
wantType := DocumentRangeFormattingOptions{
|
||
|
WorkDoneProgressOptions: WorkDoneProgressOptions{
|
||
|
WorkDoneProgress: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field DocumentRangeFormattingOptions
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: DocumentRangeFormattingOptions{},
|
||
|
want: wantNil,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantType,
|
||
|
want: wantInvalid,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want DocumentRangeFormattingOptions
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantNil,
|
||
|
want: DocumentRangeFormattingOptions{},
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantInvalid,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got DocumentRangeFormattingOptions
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestDeclarationOptions(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"workDoneProgress":true}`
|
||
|
wantNil = `{}`
|
||
|
wantInvalid = `{"workDoneProgress":false}`
|
||
|
)
|
||
|
wantType := DeclarationOptions{
|
||
|
WorkDoneProgressOptions: WorkDoneProgressOptions{
|
||
|
WorkDoneProgress: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field DeclarationOptions
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: DeclarationOptions{},
|
||
|
want: wantNil,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantType,
|
||
|
want: wantInvalid,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want DeclarationOptions
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantNil,
|
||
|
want: DeclarationOptions{},
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantInvalid,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got DeclarationOptions
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestDeclarationRegistrationOptions(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"workDoneProgress":true,"documentSelector":[{"language":"go","scheme":"file","pattern":"*"}],"id":"1"}`
|
||
|
wantNil = `{"documentSelector":[{"language":"go","scheme":"file","pattern":"*"}]}`
|
||
|
wantInvalid = `{"workDoneProgress":false,"documentSelector":[{"language":"typescript","scheme":"file","pattern":"*.{ts,js}"}],"id":"0"}`
|
||
|
)
|
||
|
wantType := DeclarationRegistrationOptions{
|
||
|
DeclarationOptions: DeclarationOptions{
|
||
|
WorkDoneProgressOptions: WorkDoneProgressOptions{
|
||
|
WorkDoneProgress: true,
|
||
|
},
|
||
|
},
|
||
|
TextDocumentRegistrationOptions: TextDocumentRegistrationOptions{
|
||
|
DocumentSelector: DocumentSelector{
|
||
|
{
|
||
|
Language: "go",
|
||
|
Scheme: "file",
|
||
|
Pattern: `*`,
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
StaticRegistrationOptions: StaticRegistrationOptions{
|
||
|
ID: "1",
|
||
|
},
|
||
|
}
|
||
|
wantTypeNil := DeclarationRegistrationOptions{
|
||
|
TextDocumentRegistrationOptions: TextDocumentRegistrationOptions{
|
||
|
DocumentSelector: DocumentSelector{
|
||
|
{
|
||
|
Language: "go",
|
||
|
Scheme: "file",
|
||
|
Pattern: `*`,
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field DeclarationRegistrationOptions
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantTypeNil,
|
||
|
want: wantNil,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantType,
|
||
|
want: wantInvalid,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want DeclarationRegistrationOptions
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantNil,
|
||
|
want: wantTypeNil,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantInvalid,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got DeclarationRegistrationOptions
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestDeclarationParams(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
wantWorkDoneToken = "156edea9-9d8d-422f-b7ee-81a84594afbb"
|
||
|
wantPartialResultToken = "dd134d84-c134-4d7a-a2a3-f8af3ef4a568"
|
||
|
)
|
||
|
const (
|
||
|
want = `{"textDocument":{"uri":"file:///path/to/basic.go"},"position":{"line":25,"character":1},"workDoneToken":"` + wantWorkDoneToken + `","partialResultToken":"` + wantPartialResultToken + `"}`
|
||
|
wantNilAll = `{"textDocument":{"uri":"file:///path/to/basic.go"},"position":{"line":25,"character":1}}`
|
||
|
wantInvalid = `{"textDocument":{"uri":"file:///path/to/basic_gen.go"},"position":{"line":2,"character":1},"workDoneToken":"` + wantPartialResultToken + `","partialResultToken":"` + wantWorkDoneToken + `"}`
|
||
|
)
|
||
|
wantType := DeclarationParams{
|
||
|
TextDocumentPositionParams: TextDocumentPositionParams{
|
||
|
TextDocument: TextDocumentIdentifier{
|
||
|
URI: uri.File("/path/to/basic.go"),
|
||
|
},
|
||
|
Position: Position{
|
||
|
Line: 25,
|
||
|
Character: 1,
|
||
|
},
|
||
|
},
|
||
|
WorkDoneProgressParams: WorkDoneProgressParams{
|
||
|
WorkDoneToken: NewProgressToken(wantWorkDoneToken),
|
||
|
},
|
||
|
PartialResultParams: PartialResultParams{
|
||
|
PartialResultToken: NewProgressToken(wantPartialResultToken),
|
||
|
},
|
||
|
}
|
||
|
wantTypeNilAll := DeclarationParams{
|
||
|
TextDocumentPositionParams: TextDocumentPositionParams{
|
||
|
TextDocument: TextDocumentIdentifier{
|
||
|
URI: uri.File("/path/to/basic.go"),
|
||
|
},
|
||
|
Position: Position{
|
||
|
Line: 25,
|
||
|
Character: 1,
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field DeclarationParams
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantTypeNilAll,
|
||
|
want: wantNilAll,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantType,
|
||
|
want: wantInvalid,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want DeclarationParams
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantNilAll,
|
||
|
want: wantTypeNilAll,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantInvalid,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got DeclarationParams
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got, cmpopts.IgnoreTypes(WorkDoneProgressParams{}, PartialResultParams{})); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
|
||
|
if workDoneToken := got.WorkDoneToken; workDoneToken != nil {
|
||
|
if diff := cmp.Diff(fmt.Sprint(workDoneToken), wantWorkDoneToken); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if partialResultToken := got.PartialResultToken; partialResultToken != nil {
|
||
|
if diff := cmp.Diff(fmt.Sprint(partialResultToken), wantPartialResultToken); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestDefinitionOptions(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"workDoneProgress":true}`
|
||
|
wantNil = `{}`
|
||
|
wantInvalid = `{"workDoneProgress":false}`
|
||
|
)
|
||
|
wantType := DefinitionOptions{
|
||
|
WorkDoneProgressOptions: WorkDoneProgressOptions{
|
||
|
WorkDoneProgress: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field DefinitionOptions
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: DefinitionOptions{},
|
||
|
want: wantNil,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantType,
|
||
|
want: wantInvalid,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want DefinitionOptions
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantNil,
|
||
|
want: DefinitionOptions{},
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantInvalid,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got DefinitionOptions
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestDefinitionParams(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
wantWorkDoneToken = "156edea9-9d8d-422f-b7ee-81a84594afbb"
|
||
|
wantPartialResultToken = "dd134d84-c134-4d7a-a2a3-f8af3ef4a568"
|
||
|
)
|
||
|
const (
|
||
|
want = `{"textDocument":{"uri":"file:///path/to/basic.go"},"position":{"line":25,"character":1},"workDoneToken":"` + wantWorkDoneToken + `","partialResultToken":"` + wantPartialResultToken + `"}`
|
||
|
wantNilAll = `{"textDocument":{"uri":"file:///path/to/basic.go"},"position":{"line":25,"character":1}}`
|
||
|
wantInvalid = `{"textDocument":{"uri":"file:///path/to/basic_gen.go"},"position":{"line":2,"character":1},"workDoneToken":"` + wantPartialResultToken + `","partialResultToken":"` + wantWorkDoneToken + `"}`
|
||
|
)
|
||
|
wantType := DefinitionParams{
|
||
|
TextDocumentPositionParams: TextDocumentPositionParams{
|
||
|
TextDocument: TextDocumentIdentifier{
|
||
|
URI: uri.File("/path/to/basic.go"),
|
||
|
},
|
||
|
Position: Position{
|
||
|
Line: 25,
|
||
|
Character: 1,
|
||
|
},
|
||
|
},
|
||
|
WorkDoneProgressParams: WorkDoneProgressParams{
|
||
|
WorkDoneToken: NewProgressToken(wantWorkDoneToken),
|
||
|
},
|
||
|
PartialResultParams: PartialResultParams{
|
||
|
PartialResultToken: NewProgressToken(wantPartialResultToken),
|
||
|
},
|
||
|
}
|
||
|
wantTypeNilAll := DefinitionParams{
|
||
|
TextDocumentPositionParams: TextDocumentPositionParams{
|
||
|
TextDocument: TextDocumentIdentifier{
|
||
|
URI: uri.File("/path/to/basic.go"),
|
||
|
},
|
||
|
Position: Position{
|
||
|
Line: 25,
|
||
|
Character: 1,
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field DefinitionParams
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantTypeNilAll,
|
||
|
want: wantNilAll,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantType,
|
||
|
want: wantInvalid,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want DefinitionParams
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantNilAll,
|
||
|
want: wantTypeNilAll,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantInvalid,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got DefinitionParams
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got, cmpopts.IgnoreTypes(WorkDoneProgressParams{}, PartialResultParams{})); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
|
||
|
if workDoneToken := got.WorkDoneToken; workDoneToken != nil {
|
||
|
if diff := cmp.Diff(fmt.Sprint(workDoneToken), wantWorkDoneToken); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if partialResultToken := got.PartialResultToken; partialResultToken != nil {
|
||
|
if diff := cmp.Diff(fmt.Sprint(partialResultToken), wantPartialResultToken); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestTypeDefinitionOptions(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"workDoneProgress":true}`
|
||
|
wantNil = `{}`
|
||
|
wantInvalid = `{"workDoneProgress":false}`
|
||
|
)
|
||
|
wantType := TypeDefinitionOptions{
|
||
|
WorkDoneProgressOptions: WorkDoneProgressOptions{
|
||
|
WorkDoneProgress: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field TypeDefinitionOptions
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: TypeDefinitionOptions{},
|
||
|
want: wantNil,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantType,
|
||
|
want: wantInvalid,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want TypeDefinitionOptions
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantNil,
|
||
|
want: TypeDefinitionOptions{},
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantInvalid,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got TypeDefinitionOptions
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestTypeDefinitionRegistrationOptions(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"documentSelector":[{"language":"go","scheme":"file","pattern":"*"}],"workDoneProgress":true,"id":"1"}`
|
||
|
wantNil = `{"documentSelector":[{"language":"go","scheme":"file","pattern":"*"}]}`
|
||
|
wantInvalid = `{"documentSelector":[{"language":"typescript","scheme":"file","pattern":"*.{ts,js}"}],"workDoneProgress":false,"id":"0"}`
|
||
|
)
|
||
|
wantType := TypeDefinitionRegistrationOptions{
|
||
|
TypeDefinitionOptions: TypeDefinitionOptions{
|
||
|
WorkDoneProgressOptions: WorkDoneProgressOptions{
|
||
|
WorkDoneProgress: true,
|
||
|
},
|
||
|
},
|
||
|
TextDocumentRegistrationOptions: TextDocumentRegistrationOptions{
|
||
|
DocumentSelector: DocumentSelector{
|
||
|
{
|
||
|
Language: "go",
|
||
|
Scheme: "file",
|
||
|
Pattern: `*`,
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
StaticRegistrationOptions: StaticRegistrationOptions{
|
||
|
ID: "1",
|
||
|
},
|
||
|
}
|
||
|
wantTypeNil := TypeDefinitionRegistrationOptions{
|
||
|
TextDocumentRegistrationOptions: TextDocumentRegistrationOptions{
|
||
|
DocumentSelector: DocumentSelector{
|
||
|
{
|
||
|
Language: "go",
|
||
|
Scheme: "file",
|
||
|
Pattern: `*`,
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field TypeDefinitionRegistrationOptions
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantTypeNil,
|
||
|
want: wantNil,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantType,
|
||
|
want: wantInvalid,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want TypeDefinitionRegistrationOptions
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantNil,
|
||
|
want: wantTypeNil,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantInvalid,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got TypeDefinitionRegistrationOptions
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestTypeDefinitionParams(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
wantWorkDoneToken = "156edea9-9d8d-422f-b7ee-81a84594afbb"
|
||
|
wantPartialResultToken = "dd134d84-c134-4d7a-a2a3-f8af3ef4a568"
|
||
|
)
|
||
|
const (
|
||
|
want = `{"textDocument":{"uri":"file:///path/to/basic.go"},"position":{"line":25,"character":1},"workDoneToken":"` + wantWorkDoneToken + `","partialResultToken":"` + wantPartialResultToken + `"}`
|
||
|
wantNilAll = `{"textDocument":{"uri":"file:///path/to/basic.go"},"position":{"line":25,"character":1}}`
|
||
|
wantInvalid = `{"textDocument":{"uri":"file:///path/to/basic_gen.go"},"position":{"line":2,"character":1},"workDoneToken":"` + wantPartialResultToken + `","partialResultToken":"` + wantWorkDoneToken + `"}`
|
||
|
)
|
||
|
wantType := TypeDefinitionParams{
|
||
|
TextDocumentPositionParams: TextDocumentPositionParams{
|
||
|
TextDocument: TextDocumentIdentifier{
|
||
|
URI: uri.File("/path/to/basic.go"),
|
||
|
},
|
||
|
Position: Position{
|
||
|
Line: 25,
|
||
|
Character: 1,
|
||
|
},
|
||
|
},
|
||
|
WorkDoneProgressParams: WorkDoneProgressParams{
|
||
|
WorkDoneToken: NewProgressToken(wantWorkDoneToken),
|
||
|
},
|
||
|
PartialResultParams: PartialResultParams{
|
||
|
PartialResultToken: NewProgressToken(wantPartialResultToken),
|
||
|
},
|
||
|
}
|
||
|
wantTypeNilAll := TypeDefinitionParams{
|
||
|
TextDocumentPositionParams: TextDocumentPositionParams{
|
||
|
TextDocument: TextDocumentIdentifier{
|
||
|
URI: uri.File("/path/to/basic.go"),
|
||
|
},
|
||
|
Position: Position{
|
||
|
Line: 25,
|
||
|
Character: 1,
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field TypeDefinitionParams
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantTypeNilAll,
|
||
|
want: wantNilAll,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantType,
|
||
|
want: wantInvalid,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want TypeDefinitionParams
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantNilAll,
|
||
|
want: wantTypeNilAll,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantInvalid,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got TypeDefinitionParams
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got, cmpopts.IgnoreTypes(WorkDoneProgressParams{}, PartialResultParams{})); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
|
||
|
if workDoneToken := got.WorkDoneToken; workDoneToken != nil {
|
||
|
if diff := cmp.Diff(fmt.Sprint(workDoneToken), wantWorkDoneToken); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if partialResultToken := got.PartialResultToken; partialResultToken != nil {
|
||
|
if diff := cmp.Diff(fmt.Sprint(partialResultToken), wantPartialResultToken); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestImplementationOptions(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"workDoneProgress":true}`
|
||
|
wantNilAll = `{}`
|
||
|
)
|
||
|
wantType := ImplementationOptions{
|
||
|
WorkDoneProgressOptions: WorkDoneProgressOptions{
|
||
|
WorkDoneProgress: true,
|
||
|
},
|
||
|
}
|
||
|
wantTypeNilAll := ImplementationOptions{}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field ImplementationOptions
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantTypeNilAll,
|
||
|
want: wantNilAll,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want ImplementationOptions
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantNilAll,
|
||
|
want: wantTypeNilAll,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got ImplementationOptions
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestImplementationRegistrationOptions(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"documentSelector":[{"language":"go","scheme":"file","pattern":"*"}],"workDoneProgress":true,"id":"1"}`
|
||
|
wantNilAll = `{"documentSelector":[{"language":"go","scheme":"file","pattern":"*"}]}`
|
||
|
wantInvalid = `{"documentSelector":[{"language":"typescript","scheme":"file","pattern":"*.{ts,js}"}],"workDoneProgress":false,"id":"0"}`
|
||
|
)
|
||
|
wantType := ImplementationRegistrationOptions{
|
||
|
TextDocumentRegistrationOptions: TextDocumentRegistrationOptions{
|
||
|
DocumentSelector: DocumentSelector{
|
||
|
{
|
||
|
Language: "go",
|
||
|
Scheme: "file",
|
||
|
Pattern: `*`,
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
ImplementationOptions: ImplementationOptions{
|
||
|
WorkDoneProgressOptions: WorkDoneProgressOptions{
|
||
|
WorkDoneProgress: true,
|
||
|
},
|
||
|
},
|
||
|
StaticRegistrationOptions: StaticRegistrationOptions{
|
||
|
ID: "1",
|
||
|
},
|
||
|
}
|
||
|
wantTypeNilAll := ImplementationRegistrationOptions{
|
||
|
TextDocumentRegistrationOptions: TextDocumentRegistrationOptions{
|
||
|
DocumentSelector: DocumentSelector{
|
||
|
{
|
||
|
Language: "go",
|
||
|
Scheme: "file",
|
||
|
Pattern: `*`,
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field ImplementationRegistrationOptions
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantTypeNilAll,
|
||
|
want: wantNilAll,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantType,
|
||
|
want: wantInvalid,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want ImplementationRegistrationOptions
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantNilAll,
|
||
|
want: wantTypeNilAll,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantInvalid,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got ImplementationRegistrationOptions
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestImplementationParams(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
wantWorkDoneToken = "156edea9-9d8d-422f-b7ee-81a84594afbb"
|
||
|
wantPartialResultToken = "dd134d84-c134-4d7a-a2a3-f8af3ef4a568"
|
||
|
)
|
||
|
const (
|
||
|
want = `{"textDocument":{"uri":"file:///path/to/basic.go"},"position":{"line":25,"character":1},"workDoneToken":"` + wantWorkDoneToken + `","partialResultToken":"` + wantPartialResultToken + `"}`
|
||
|
wantNilAll = `{"textDocument":{"uri":"file:///path/to/basic.go"},"position":{"line":25,"character":1}}`
|
||
|
wantInvalid = `{"textDocument":{"uri":"file:///path/to/basic_gen.go"},"position":{"line":2,"character":1},"workDoneToken":"` + wantPartialResultToken + `","partialResultToken":"` + wantWorkDoneToken + `"}`
|
||
|
)
|
||
|
wantType := ImplementationParams{
|
||
|
TextDocumentPositionParams: TextDocumentPositionParams{
|
||
|
TextDocument: TextDocumentIdentifier{
|
||
|
URI: uri.File("/path/to/basic.go"),
|
||
|
},
|
||
|
Position: Position{
|
||
|
Line: 25,
|
||
|
Character: 1,
|
||
|
},
|
||
|
},
|
||
|
WorkDoneProgressParams: WorkDoneProgressParams{
|
||
|
WorkDoneToken: NewProgressToken(wantWorkDoneToken),
|
||
|
},
|
||
|
PartialResultParams: PartialResultParams{
|
||
|
PartialResultToken: NewProgressToken(wantPartialResultToken),
|
||
|
},
|
||
|
}
|
||
|
wantTypeNilAll := ImplementationParams{
|
||
|
TextDocumentPositionParams: TextDocumentPositionParams{
|
||
|
TextDocument: TextDocumentIdentifier{
|
||
|
URI: uri.File("/path/to/basic.go"),
|
||
|
},
|
||
|
Position: Position{
|
||
|
Line: 25,
|
||
|
Character: 1,
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field ImplementationParams
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantTypeNilAll,
|
||
|
want: wantNilAll,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantType,
|
||
|
want: wantInvalid,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want ImplementationParams
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantNilAll,
|
||
|
want: wantTypeNilAll,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantInvalid,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got ImplementationParams
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got, cmpopts.IgnoreTypes(WorkDoneProgressParams{}, PartialResultParams{})); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
|
||
|
if workDoneToken := got.WorkDoneToken; workDoneToken != nil {
|
||
|
if diff := cmp.Diff(fmt.Sprint(workDoneToken), wantWorkDoneToken); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if partialResultToken := got.PartialResultToken; partialResultToken != nil {
|
||
|
if diff := cmp.Diff(fmt.Sprint(partialResultToken), wantPartialResultToken); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestDocumentColorOptions(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"workDoneProgress":true}`
|
||
|
wantNil = `{}`
|
||
|
wantInvalid = `{"workDoneProgress":false}`
|
||
|
)
|
||
|
wantType := DocumentColorOptions{
|
||
|
WorkDoneProgressOptions: WorkDoneProgressOptions{
|
||
|
WorkDoneProgress: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field DocumentColorOptions
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: DocumentColorOptions{},
|
||
|
want: wantNil,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantType,
|
||
|
want: wantInvalid,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want DocumentColorOptions
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantNil,
|
||
|
want: DocumentColorOptions{},
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantInvalid,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got DocumentColorOptions
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestDocumentColorRegistrationOptions(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"documentSelector":[{"language":"go","scheme":"file","pattern":"*"}],"id":"1","workDoneProgress":true}`
|
||
|
wantNil = `{"documentSelector":[{"language":"go","scheme":"file","pattern":"*"}]}`
|
||
|
wantInvalid = `{"documentSelector":[{"language":"typescript","scheme":"file","pattern":"*.{ts,js}"}],"id":"0","workDoneProgress":false}`
|
||
|
)
|
||
|
wantType := DocumentColorRegistrationOptions{
|
||
|
TextDocumentRegistrationOptions: TextDocumentRegistrationOptions{
|
||
|
DocumentSelector: DocumentSelector{
|
||
|
{
|
||
|
Language: "go",
|
||
|
Scheme: "file",
|
||
|
Pattern: `*`,
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
StaticRegistrationOptions: StaticRegistrationOptions{
|
||
|
ID: "1",
|
||
|
},
|
||
|
DocumentColorOptions: DocumentColorOptions{
|
||
|
WorkDoneProgressOptions: WorkDoneProgressOptions{
|
||
|
WorkDoneProgress: true,
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
wantTypeNil := DocumentColorRegistrationOptions{
|
||
|
TextDocumentRegistrationOptions: TextDocumentRegistrationOptions{
|
||
|
DocumentSelector: DocumentSelector{
|
||
|
{
|
||
|
Language: "go",
|
||
|
Scheme: "file",
|
||
|
Pattern: `*`,
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field DocumentColorRegistrationOptions
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantTypeNil,
|
||
|
want: wantNil,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantType,
|
||
|
want: wantInvalid,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want DocumentColorRegistrationOptions
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantNil,
|
||
|
want: wantTypeNil,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantInvalid,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got DocumentColorRegistrationOptions
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestPrepareSupportDefaultBehavior_String(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
k PrepareSupportDefaultBehavior
|
||
|
want string
|
||
|
}{
|
||
|
{
|
||
|
name: "Identifier",
|
||
|
k: PrepareSupportDefaultBehaviorIdentifier,
|
||
|
want: "Identifier",
|
||
|
},
|
||
|
{
|
||
|
name: "UnknownKind",
|
||
|
k: PrepareSupportDefaultBehavior(0),
|
||
|
want: "0",
|
||
|
},
|
||
|
}
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
if got := tt.k.String(); got != tt.want {
|
||
|
t.Errorf("PrepareSupportDefaultBehavior.String() = %v, want %v", tt.want, got)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestFoldingRangeOptions(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"workDoneProgress":true}`
|
||
|
wantNil = `{}`
|
||
|
wantInvalid = `{"workDoneProgress":false}`
|
||
|
)
|
||
|
wantType := FoldingRangeOptions{
|
||
|
WorkDoneProgressOptions: WorkDoneProgressOptions{
|
||
|
WorkDoneProgress: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field FoldingRangeOptions
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: FoldingRangeOptions{},
|
||
|
want: wantNil,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantType,
|
||
|
want: wantInvalid,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want FoldingRangeOptions
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantNil,
|
||
|
want: FoldingRangeOptions{},
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantInvalid,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got FoldingRangeOptions
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestFoldingRangeRegistrationOptions(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"documentSelector":[{"language":"go","scheme":"file","pattern":"*"}],"workDoneProgress":true,"id":"1"}`
|
||
|
wantNil = `{"documentSelector":[{"language":"go","scheme":"file","pattern":"*"}]}`
|
||
|
wantInvalid = `{"documentSelector":[{"language":"typescript","scheme":"file","pattern":"*.{ts,js}"}],"workDoneProgress":false,"id":"0"}`
|
||
|
)
|
||
|
wantType := FoldingRangeRegistrationOptions{
|
||
|
TextDocumentRegistrationOptions: TextDocumentRegistrationOptions{
|
||
|
DocumentSelector: DocumentSelector{
|
||
|
{
|
||
|
Language: "go",
|
||
|
Scheme: "file",
|
||
|
Pattern: `*`,
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
FoldingRangeOptions: FoldingRangeOptions{
|
||
|
WorkDoneProgressOptions: WorkDoneProgressOptions{
|
||
|
WorkDoneProgress: true,
|
||
|
},
|
||
|
},
|
||
|
StaticRegistrationOptions: StaticRegistrationOptions{
|
||
|
ID: "1",
|
||
|
},
|
||
|
}
|
||
|
wantTypeNil := FoldingRangeRegistrationOptions{
|
||
|
TextDocumentRegistrationOptions: TextDocumentRegistrationOptions{
|
||
|
DocumentSelector: DocumentSelector{
|
||
|
{
|
||
|
Language: "go",
|
||
|
Scheme: "file",
|
||
|
Pattern: `*`,
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field FoldingRangeRegistrationOptions
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantTypeNil,
|
||
|
want: wantNil,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantType,
|
||
|
want: wantInvalid,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want FoldingRangeRegistrationOptions
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantNil,
|
||
|
want: wantTypeNil,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Invalid",
|
||
|
field: wantInvalid,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got FoldingRangeRegistrationOptions
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestInitializeResult(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"capabilities":{"textDocumentSync":1,"completionProvider":{"resolveProvider":true,"triggerCharacters":["Tab"]},"hoverProvider":true,"signatureHelpProvider":{"triggerCharacters":["C-K"],"retriggerCharacters":["."]},"declarationProvider":true,"definitionProvider":true,"typeDefinitionProvider":true,"implementationProvider":true,"referencesProvider":true,"documentHighlightProvider":true,"documentSymbolProvider":true,"codeActionProvider":true,"codeLensProvider":{"resolveProvider":true},"documentLinkProvider":{"resolveProvider":true},"colorProvider":true,"workspaceSymbolProvider":true,"documentFormattingProvider":true,"documentRangeFormattingProvider":true,"documentOnTypeFormattingProvider":{"firstTriggerCharacter":".","moreTriggerCharacter":["f"]},"renameProvider":true,"foldingRangeProvider":true,"selectionRangeProvider":true,"executeCommandProvider":{"commands":["test","command"]},"callHierarchyProvider":true,"linkedEditingRangeProvider":true,"workspace":{"workspaceFolders":{"supported":true,"changeNotifications":"testNotifications"},"fileOperations":{"didCreate":{"filters":[{"scheme":"file","pattern":{"glob":"*","matches":"file","options":{"ignoreCase":true}}}]},"willCreate":{"filters":[{"scheme":"file","pattern":{"glob":"*","matches":"folder","options":{"ignoreCase":true}}}]},"didRename":{"filters":[{"scheme":"file","pattern":{"glob":"*","matches":"file","options":{"ignoreCase":true}}}]},"willRename":{"filters":[{"scheme":"file","pattern":{"glob":"*","matches":"folder","options":{"ignoreCase":true}}}]},"didDelete":{"filters":[{"scheme":"file","pattern":{"glob":"*","matches":"file","options":{"ignoreCase":true}}}]},"willDelete":{"filters":[{"scheme":"file","pattern":{"glob":"*","matches":"folder","options":{"ignoreCase":true}}}]}}},"monikerProvider":true,"experimental":"Awesome Experimentals"},"serverInfo":{"name":"testServer","version":"v0.0.0"}}`
|
||
|
wantNil = `{"capabilities":{}}`
|
||
|
)
|
||
|
wantType := InitializeResult{
|
||
|
Capabilities: ServerCapabilities{
|
||
|
TextDocumentSync: float64(1),
|
||
|
CompletionProvider: &CompletionOptions{
|
||
|
ResolveProvider: true,
|
||
|
TriggerCharacters: []string{"Tab"},
|
||
|
},
|
||
|
HoverProvider: true,
|
||
|
SignatureHelpProvider: &SignatureHelpOptions{
|
||
|
TriggerCharacters: []string{"C-K"},
|
||
|
RetriggerCharacters: []string{"."},
|
||
|
},
|
||
|
DeclarationProvider: true,
|
||
|
DefinitionProvider: true,
|
||
|
TypeDefinitionProvider: true,
|
||
|
ImplementationProvider: true,
|
||
|
ReferencesProvider: true,
|
||
|
DocumentHighlightProvider: true,
|
||
|
DocumentSymbolProvider: true,
|
||
|
WorkspaceSymbolProvider: true,
|
||
|
CodeActionProvider: true,
|
||
|
CodeLensProvider: &CodeLensOptions{
|
||
|
ResolveProvider: true,
|
||
|
},
|
||
|
DocumentFormattingProvider: true,
|
||
|
DocumentRangeFormattingProvider: true,
|
||
|
DocumentOnTypeFormattingProvider: &DocumentOnTypeFormattingOptions{
|
||
|
FirstTriggerCharacter: ".",
|
||
|
MoreTriggerCharacter: []string{"f"},
|
||
|
},
|
||
|
RenameProvider: true,
|
||
|
DocumentLinkProvider: &DocumentLinkOptions{
|
||
|
ResolveProvider: true,
|
||
|
},
|
||
|
ColorProvider: true,
|
||
|
FoldingRangeProvider: true,
|
||
|
SelectionRangeProvider: true,
|
||
|
ExecuteCommandProvider: &ExecuteCommandOptions{
|
||
|
Commands: []string{"test", "command"},
|
||
|
},
|
||
|
Workspace: &ServerCapabilitiesWorkspace{
|
||
|
WorkspaceFolders: &ServerCapabilitiesWorkspaceFolders{
|
||
|
Supported: true,
|
||
|
ChangeNotifications: "testNotifications",
|
||
|
},
|
||
|
FileOperations: &ServerCapabilitiesWorkspaceFileOperations{
|
||
|
DidCreate: &FileOperationRegistrationOptions{
|
||
|
Filters: []FileOperationFilter{
|
||
|
{
|
||
|
Scheme: "file",
|
||
|
Pattern: FileOperationPattern{
|
||
|
Glob: "*",
|
||
|
Matches: FileOperationPatternKindFile,
|
||
|
Options: FileOperationPatternOptions{
|
||
|
IgnoreCase: true,
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
WillCreate: &FileOperationRegistrationOptions{
|
||
|
Filters: []FileOperationFilter{
|
||
|
{
|
||
|
Scheme: "file",
|
||
|
Pattern: FileOperationPattern{
|
||
|
Glob: "*",
|
||
|
Matches: FileOperationPatternKindFolder,
|
||
|
Options: FileOperationPatternOptions{
|
||
|
IgnoreCase: true,
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
DidRename: &FileOperationRegistrationOptions{
|
||
|
Filters: []FileOperationFilter{
|
||
|
{
|
||
|
Scheme: "file",
|
||
|
Pattern: FileOperationPattern{
|
||
|
Glob: "*",
|
||
|
Matches: FileOperationPatternKindFile,
|
||
|
Options: FileOperationPatternOptions{
|
||
|
IgnoreCase: true,
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
WillRename: &FileOperationRegistrationOptions{
|
||
|
Filters: []FileOperationFilter{
|
||
|
{
|
||
|
Scheme: "file",
|
||
|
Pattern: FileOperationPattern{
|
||
|
Glob: "*",
|
||
|
Matches: FileOperationPatternKindFolder,
|
||
|
Options: FileOperationPatternOptions{
|
||
|
IgnoreCase: true,
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
DidDelete: &FileOperationRegistrationOptions{
|
||
|
Filters: []FileOperationFilter{
|
||
|
{
|
||
|
Scheme: "file",
|
||
|
Pattern: FileOperationPattern{
|
||
|
Glob: "*",
|
||
|
Matches: FileOperationPatternKindFile,
|
||
|
Options: FileOperationPatternOptions{
|
||
|
IgnoreCase: true,
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
WillDelete: &FileOperationRegistrationOptions{
|
||
|
Filters: []FileOperationFilter{
|
||
|
{
|
||
|
Scheme: "file",
|
||
|
Pattern: FileOperationPattern{
|
||
|
Glob: "*",
|
||
|
Matches: FileOperationPatternKindFolder,
|
||
|
Options: FileOperationPatternOptions{
|
||
|
IgnoreCase: true,
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
LinkedEditingRangeProvider: true,
|
||
|
CallHierarchyProvider: true,
|
||
|
SemanticTokensProvider: nil,
|
||
|
MonikerProvider: true,
|
||
|
Experimental: "Awesome Experimentals",
|
||
|
},
|
||
|
ServerInfo: &ServerInfo{
|
||
|
Name: "testServer",
|
||
|
Version: "v0.0.0",
|
||
|
},
|
||
|
}
|
||
|
wantTypeNil := InitializeResult{}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field InitializeResult
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantTypeNil,
|
||
|
want: wantNil,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Logf("got: %s", string(got))
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want InitializeResult
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantNil,
|
||
|
want: wantTypeNil,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got InitializeResult
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
// cmpOpts := cmpopts.IgnoreFields(ServerCapabilities{}, "SelectionRangeProvider") // ignore SelectionRangeProvider field but assert below
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
|
||
|
// if srp := got.Capabilities.SelectionRangeProvider; srp != nil {
|
||
|
// switch srp := srp.(type) {
|
||
|
// case bool: // EnableSelectionRange
|
||
|
// if diff := cmp.Diff(EnableSelectionRange(srp), enableSelectionRange); (diff != "") != tt.wantErr {
|
||
|
// t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
// }
|
||
|
// default:
|
||
|
// t.Fatalf("srp type is %[1]T, not bool: %#[1]v\n", srp)
|
||
|
// }
|
||
|
// }
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestInitializeError(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const want = `{"retry":true}`
|
||
|
wantType := InitializeError{
|
||
|
Retry: true,
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field InitializeError
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want InitializeError
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got InitializeError
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestShowDocumentParams(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"uri":"file:///path/to/basic.go","external":true,"takeFocus":true,"selection":{"start":{"line":255,"character":4},"end":{"line":255,"character":10}}}`
|
||
|
wantNil = `{"uri":"file:///path/to/basic.go"}`
|
||
|
)
|
||
|
wantType := ShowDocumentParams{
|
||
|
URI: uri.File("/path/to/basic.go"),
|
||
|
External: true,
|
||
|
TakeFocus: true,
|
||
|
Selection: &Range{
|
||
|
Start: Position{
|
||
|
Line: 255,
|
||
|
Character: 4,
|
||
|
},
|
||
|
End: Position{
|
||
|
Line: 255,
|
||
|
Character: 10,
|
||
|
},
|
||
|
},
|
||
|
}
|
||
|
wantTypeNilAll := ShowDocumentParams{
|
||
|
URI: uri.File("/path/to/basic.go"),
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field ShowDocumentParams
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantTypeNilAll,
|
||
|
want: wantNil,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want ShowDocumentParams
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantNil,
|
||
|
want: wantTypeNilAll,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got ShowDocumentParams
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestShowDocumentResult(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const want = `{"success":true}`
|
||
|
wantType := ShowDocumentResult{
|
||
|
Success: true,
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field ShowDocumentResult
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want ShowDocumentResult
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got ShowDocumentResult
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestTextDocumentSyncKind_String(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
k TextDocumentSyncKind
|
||
|
want string
|
||
|
}{
|
||
|
{
|
||
|
name: "NoneKind",
|
||
|
k: TextDocumentSyncKindNone,
|
||
|
want: "None",
|
||
|
},
|
||
|
{
|
||
|
name: "FullKind",
|
||
|
k: TextDocumentSyncKindFull,
|
||
|
want: "Full",
|
||
|
},
|
||
|
{
|
||
|
name: "IncrementalKind",
|
||
|
k: TextDocumentSyncKindIncremental,
|
||
|
want: "Incremental",
|
||
|
},
|
||
|
{
|
||
|
name: "UnknownKind",
|
||
|
k: TextDocumentSyncKind(99),
|
||
|
want: "99",
|
||
|
},
|
||
|
}
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
if got := tt.k.String(); got != tt.want {
|
||
|
t.Errorf("TextDocumentSyncKind.String() = %v, want %v", tt.want, got)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestReferencesOptions(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const want = `{"workDoneProgress":true}`
|
||
|
wantType := ReferencesOptions{
|
||
|
WorkDoneProgressOptions: WorkDoneProgressOptions{
|
||
|
WorkDoneProgress: true,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field ReferencesOptions
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want ReferencesOptions
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got ReferencesOptions
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestCodeActionOptions(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"codeActionKinds":["quickfix","refactor"],"resolveProvider":true}`
|
||
|
wantNil = `{}`
|
||
|
)
|
||
|
wantType := CodeActionOptions{
|
||
|
CodeActionKinds: []CodeActionKind{
|
||
|
QuickFix,
|
||
|
Refactor,
|
||
|
},
|
||
|
ResolveProvider: true,
|
||
|
}
|
||
|
wantTypeNil := CodeActionOptions{}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field CodeActionOptions
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Nil",
|
||
|
field: wantTypeNil,
|
||
|
want: wantNil,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want CodeActionOptions
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Nil",
|
||
|
field: wantNil,
|
||
|
want: wantTypeNil,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got CodeActionOptions
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestRenameOptions(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"prepareProvider":true}`
|
||
|
wantNil = `{}`
|
||
|
)
|
||
|
wantType := RenameOptions{
|
||
|
PrepareProvider: true,
|
||
|
}
|
||
|
wantTypeNil := RenameOptions{}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field RenameOptions
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Nil",
|
||
|
field: wantTypeNil,
|
||
|
want: wantNil,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want RenameOptions
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Nil",
|
||
|
field: wantNil,
|
||
|
want: wantTypeNil,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got RenameOptions
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestSaveOptions(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"includeText":true}`
|
||
|
wantNil = `{}`
|
||
|
)
|
||
|
wantType := SaveOptions{
|
||
|
IncludeText: true,
|
||
|
}
|
||
|
wantTypeNil := SaveOptions{}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field SaveOptions
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Nil",
|
||
|
field: wantTypeNil,
|
||
|
want: wantNil,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want SaveOptions
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Nil",
|
||
|
field: wantNil,
|
||
|
want: wantTypeNil,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got SaveOptions
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestTextDocumentSyncOptions(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"openClose":true,"change":1,"willSave":true,"willSaveWaitUntil":true,"save":{"includeText":true}}`
|
||
|
wantNil = `{}`
|
||
|
)
|
||
|
wantType := TextDocumentSyncOptions{
|
||
|
OpenClose: true,
|
||
|
Change: TextDocumentSyncKindFull,
|
||
|
WillSave: true,
|
||
|
WillSaveWaitUntil: true,
|
||
|
Save: &SaveOptions{
|
||
|
IncludeText: true,
|
||
|
},
|
||
|
}
|
||
|
wantTypeNil := TextDocumentSyncOptions{}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field TextDocumentSyncOptions
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Nil",
|
||
|
field: wantTypeNil,
|
||
|
want: wantNil,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want TextDocumentSyncOptions
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Nil",
|
||
|
field: wantNil,
|
||
|
want: wantTypeNil,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got TextDocumentSyncOptions
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestHoverOptions(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"workDoneProgress":true}`
|
||
|
wantNil = `{}`
|
||
|
)
|
||
|
wantType := HoverOptions{
|
||
|
WorkDoneProgressOptions: WorkDoneProgressOptions{
|
||
|
WorkDoneProgress: true,
|
||
|
},
|
||
|
}
|
||
|
wantTypeNil := HoverOptions{}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field HoverOptions
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Nil",
|
||
|
field: wantTypeNil,
|
||
|
want: wantNil,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want HoverOptions
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Nil",
|
||
|
field: wantNil,
|
||
|
want: wantTypeNil,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got HoverOptions
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestStaticRegistrationOptions(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"id":"testID"}`
|
||
|
wantNil = `{}`
|
||
|
)
|
||
|
wantType := StaticRegistrationOptions{
|
||
|
ID: "testID",
|
||
|
}
|
||
|
wantTypeNil := StaticRegistrationOptions{}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field StaticRegistrationOptions
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Nil",
|
||
|
field: wantTypeNil,
|
||
|
want: wantNil,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want StaticRegistrationOptions
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "Nil",
|
||
|
field: wantNil,
|
||
|
want: wantTypeNil,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got StaticRegistrationOptions
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestDocumentLinkRegistrationOptions(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const (
|
||
|
want = `{"documentSelector":[{"language":"go","scheme":"file","pattern":"*"}],"resolveProvider":true}`
|
||
|
wantNil = `{"documentSelector":[]}`
|
||
|
)
|
||
|
wantType := DocumentLinkRegistrationOptions{
|
||
|
TextDocumentRegistrationOptions: TextDocumentRegistrationOptions{
|
||
|
DocumentSelector: DocumentSelector{
|
||
|
{
|
||
|
Language: "go",
|
||
|
Scheme: "file",
|
||
|
Pattern: `*`,
|
||
|
},
|
||
|
},
|
||
|
},
|
||
|
ResolveProvider: true,
|
||
|
}
|
||
|
wantTypeNilAll := DocumentLinkRegistrationOptions{
|
||
|
TextDocumentRegistrationOptions: TextDocumentRegistrationOptions{
|
||
|
DocumentSelector: DocumentSelector{},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field DocumentLinkRegistrationOptions
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: wantType,
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantTypeNilAll,
|
||
|
want: wantNil,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want DocumentLinkRegistrationOptions
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: wantType,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
{
|
||
|
name: "ValidNilAll",
|
||
|
field: wantNil,
|
||
|
want: wantTypeNilAll,
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got DocumentLinkRegistrationOptions
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func TestInitializedParams(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
const want = `{}`
|
||
|
|
||
|
t.Run("Marshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field InitializedParams
|
||
|
want string
|
||
|
wantMarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: InitializedParams{},
|
||
|
want: want,
|
||
|
wantMarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
got, err := json.Marshal(&tt.field)
|
||
|
if (err != nil) != tt.wantMarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, string(got)); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
|
||
|
t.Run("Unmarshal", func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
tests := []struct {
|
||
|
name string
|
||
|
field string
|
||
|
want InitializedParams
|
||
|
wantUnmarshalErr bool
|
||
|
wantErr bool
|
||
|
}{
|
||
|
{
|
||
|
name: "Valid",
|
||
|
field: want,
|
||
|
want: InitializedParams{},
|
||
|
wantUnmarshalErr: false,
|
||
|
wantErr: false,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
for _, tt := range tests {
|
||
|
tt := tt
|
||
|
t.Run(tt.name, func(t *testing.T) {
|
||
|
t.Parallel()
|
||
|
|
||
|
var got InitializedParams
|
||
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
||
|
t.Fatal(err)
|
||
|
}
|
||
|
|
||
|
if diff := cmp.Diff(tt.want, got); (diff != "") != tt.wantErr {
|
||
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
})
|
||
|
}
|