1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
package json
import (
"bytes"
"encoding/json"
"testing"
smithytesting "github.com/aws/smithy-go/testing"
)
func TestDiscardUnknownField(t *testing.T) {
cases := map[string][]byte{
"empty object": []byte(`{}`),
"simple object": []byte(`{"foo": "bar"}`),
"nested object": []byte(`{"foo": {"bar": "baz"}}`),
"empty list": []byte(`[]`),
"simple list": []byte(`["foo", "bar", "baz"]`),
"nested list": []byte(`["foo", ["bar", ["baz"]]]`),
"number": []byte(`1`),
"boolean": []byte(`true`),
"null": []byte(`null`),
"string": []byte(`"foo"`),
}
for name, c := range cases {
t.Run(name, func(t *testing.T) {
buff := bytes.NewBuffer(c)
decoder := json.NewDecoder(buff)
err := DiscardUnknownField(decoder)
if err != nil {
t.Fatalf("failed to discard, %v", err)
}
if decoder.More() {
t.Fatalf("failed to discard entire contents")
}
})
}
}
func TestCollectUnknownField(t *testing.T) {
cases := map[string][]byte{
"empty object": []byte(`{}`),
"simple object": []byte(`{"foo": "bar"}`),
"nested object": []byte(`{"foo": {"bar": "baz"}}`),
"empty list": []byte(`[]`),
"simple list": []byte(`["foo", "bar", "baz"]`),
"nested list": []byte(`["foo", ["bar", ["baz"]]]`),
"number": []byte(`1`),
"boolean": []byte(`true`),
"null": []byte(`null`),
"string": []byte(`"foo"`),
}
for name, c := range cases {
t.Run(name, func(t *testing.T) {
buff := bytes.NewBuffer(c)
decoder := json.NewDecoder(buff)
actual, err := CollectUnknownField(decoder)
if err != nil {
t.Fatalf("failed to collect, %v", err)
}
smithytesting.AssertJSONEqual(t, c, actual)
})
}
}
|