forked from blacklightcms/recurly
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtype_null_bool_test.go
81 lines (69 loc) · 1.99 KB
/
type_null_bool_test.go
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package recurly
import (
"bytes"
"encoding/json"
"encoding/xml"
"testing"
"github.com/google/go-cmp/cmp"
)
func TestNullBool(t *testing.T) {
given0 := NewBool(true)
expected0 := NullBool{Bool: true, Valid: true}
given1 := NewBool(false)
expected1 := NullBool{Bool: false, Valid: true}
given2 := NullBool{Bool: false, Valid: false}
if diff := cmp.Diff(expected0, given0); diff != "" {
t.Fatal(diff)
} else if !given0.Is(true) {
t.Fatalf("unexpected value")
} else if diff := cmp.Diff(expected1, given1); diff != "" {
t.Fatal(diff)
} else if !given1.Is(false) {
t.Fatalf("unexpected value")
} else if given2.Is(false) {
t.Fatalf("unexpected value")
}
jsontests := []struct {
v NullBool
expected string
}{
{v: given0, expected: "true"},
{v: given1, expected: "false"},
{v: given2, expected: "null"},
}
for _, tt := range jsontests {
bytes, _ := json.Marshal(tt.v)
if diff := cmp.Diff(string(bytes), tt.expected); diff != "" {
t.Fatal(diff)
}
}
type s struct {
XMLName xml.Name `xml:"s"`
Name string `xml:"name"`
Exempt NullBool `xml:"exempt,omitempty"`
}
tests := []struct {
v s
expected string
}{
{v: s{XMLName: xml.Name{Local: "s"}, Name: "Bob", Exempt: given0}, expected: "<s><name>Bob</name><exempt>true</exempt></s>"},
{v: s{XMLName: xml.Name{Local: "s"}, Name: "Bob", Exempt: given1}, expected: "<s><name>Bob</name><exempt>false</exempt></s>"},
{v: s{XMLName: xml.Name{Local: "s"}, Name: "Bob", Exempt: given2}, expected: "<s><name>Bob</name></s>"},
}
for i, tt := range tests {
var given bytes.Buffer
if err := xml.NewEncoder(&given).Encode(tt.v); err != nil {
t.Fatalf("unexpected value")
} else if tt.expected != given.String() {
t.Fatalf("(%d): unexpected value: %v", i, given.String())
}
buf := bytes.NewBufferString(tt.expected)
var dest s
if err := xml.NewDecoder(buf).Decode(&dest); err != nil {
t.Fatalf("(%d): %v", i, err)
}
if diff := cmp.Diff(tt.v, dest); diff != "" {
t.Fatal(diff)
}
}
}