mirror of
https://github.com/ceph/ceph-csi.git
synced 2024-12-22 04:50:23 +00:00
e46099a504
Signed-off-by: Huamin Chen <hchen@redhat.com>
47 lines
1.0 KiB
Go
47 lines
1.0 KiB
Go
// +build go1.10
|
|
|
|
package yaml
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
)
|
|
|
|
func TestUnmarshalWithTags(t *testing.T) {
|
|
type WithTaggedField struct {
|
|
Field string `json:"field"`
|
|
}
|
|
|
|
t.Run("Known tagged field", func(t *testing.T) {
|
|
y := []byte(`field: "hello"`)
|
|
v := WithTaggedField{}
|
|
if err := Unmarshal(y, &v, DisallowUnknownFields); err != nil {
|
|
t.Errorf("unexpected error: %v", err)
|
|
}
|
|
if v.Field != "hello" {
|
|
t.Errorf("v.Field=%v, want 'hello'", v.Field)
|
|
}
|
|
|
|
})
|
|
t.Run("With unknown tagged field", func(t *testing.T) {
|
|
y := []byte(`unknown: "hello"`)
|
|
v := WithTaggedField{}
|
|
err := Unmarshal(y, &v, DisallowUnknownFields)
|
|
if err == nil {
|
|
t.Errorf("want error because of unknown field, got <nil>: v=%#v", v)
|
|
}
|
|
})
|
|
|
|
}
|
|
|
|
func exampleUnknown() {
|
|
type WithTaggedField struct {
|
|
Field string `json:"field"`
|
|
}
|
|
y := []byte(`unknown: "hello"`)
|
|
v := WithTaggedField{}
|
|
fmt.Printf("%v\n", Unmarshal(y, &v, DisallowUnknownFields))
|
|
// Ouptut:
|
|
// unmarshaling JSON: while decoding JSON: json: unknown field "unknown"
|
|
}
|