187 lines
4.0 KiB
Go
187 lines
4.0 KiB
Go
// SPDX-FileCopyrightText: 2021 The Go Language Server Authors
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
package protocol
|
|
|
|
import (
|
|
"fmt"
|
|
"reflect"
|
|
"testing"
|
|
|
|
"encoding/json"
|
|
"github.com/google/go-cmp/cmp"
|
|
"github.com/google/go-cmp/cmp/cmpopts"
|
|
)
|
|
|
|
func TestCancelParams(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
const want = `{"id":"testID"}`
|
|
wantType := CancelParams{
|
|
ID: "testID",
|
|
}
|
|
|
|
t.Run("Marshal", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tests := []struct {
|
|
name string
|
|
field CancelParams
|
|
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 CancelParams
|
|
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 CancelParams
|
|
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 TestProgressParams(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
const wantWorkDoneToken = "156edea9-9d8d-422f-b7ee-81a84594afbb"
|
|
const want = `{"token":"` + wantWorkDoneToken + `","value":"testValue"}`
|
|
|
|
token := NewProgressToken(wantWorkDoneToken)
|
|
wantType := ProgressParams{
|
|
Token: *token,
|
|
Value: "testValue",
|
|
}
|
|
|
|
t.Run("Marshal", func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tests := []struct {
|
|
name string
|
|
field ProgressParams
|
|
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 ProgressParams
|
|
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 ProgressParams
|
|
if err := json.Unmarshal([]byte(tt.field), &got); (err != nil) != tt.wantUnmarshalErr {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if diff := cmp.Diff(tt.want, got, cmpopts.IgnoreFields(ProgressParams{}, "Token")); (diff != "") != tt.wantErr {
|
|
t.Errorf("%s: wantErr: %t\n(-want +got)\n%s", tt.name, tt.wantErr, diff)
|
|
}
|
|
|
|
if token := got.Token; !reflect.ValueOf(token).IsZero() {
|
|
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)
|
|
}
|
|
}
|
|
})
|
|
}
|
|
})
|
|
}
|