1
2
3 package ldvalue
4
5 import (
6 "testing"
7
8 "github.com/mailru/easyjson"
9 "github.com/stretchr/testify/assert"
10 )
11
12 func TestOptionalBoolEasyJSONMarshalling(t *testing.T) {
13 bytes, err := easyjson.Marshal(OptionalBool{})
14 assert.NoError(t, err)
15 assert.Equal(t, nullAsJSON, string(bytes))
16
17 bytes, err = easyjson.Marshal(NewOptionalBool(true))
18 assert.NoError(t, err)
19 assert.Equal(t, `true`, string(bytes))
20
21 bytes, err = easyjson.Marshal(NewOptionalBool(false))
22 assert.NoError(t, err)
23 assert.Equal(t, `false`, string(bytes))
24 }
25
26 func TestOptionalIntEasyJSONMarshalling(t *testing.T) {
27 bytes, err := easyjson.Marshal(OptionalInt{})
28 assert.NoError(t, err)
29 assert.Equal(t, nullAsJSON, string(bytes))
30
31 bytes, err = easyjson.Marshal(NewOptionalInt(3))
32 assert.NoError(t, err)
33 assert.Equal(t, `3`, string(bytes))
34 }
35
36 func TestOptionalStringEasyJSONMarshalling(t *testing.T) {
37 bytes, err := easyjson.Marshal(OptionalString{})
38 assert.NoError(t, err)
39 assert.Equal(t, nullAsJSON, string(bytes))
40
41 bytes, err = easyjson.Marshal(NewOptionalString(`a "good" string`))
42 assert.NoError(t, err)
43 assert.Equal(t, `"a \"good\" string"`, string(bytes))
44 }
45
46 func TestOptionalBoolEasyJSONUnmarshalling(t *testing.T) {
47 var o OptionalBool
48 err := easyjson.Unmarshal([]byte(nullAsJSON), &o)
49 assert.NoError(t, err)
50 assert.False(t, o.IsDefined())
51
52 err = easyjson.Unmarshal([]byte(`true`), &o)
53 assert.NoError(t, err)
54 assert.Equal(t, NewOptionalBool(true), o)
55
56 err = easyjson.Unmarshal([]byte(`false`), &o)
57 assert.NoError(t, err)
58 assert.Equal(t, NewOptionalBool(false), o)
59
60 err = easyjson.Unmarshal([]byte(`3`), &o)
61 assert.Error(t, err)
62
63 err = easyjson.Unmarshal([]byte(`x`), &o)
64 assert.Error(t, err)
65 }
66
67 func TestOptionalIntEasyJSONUnmarshalling(t *testing.T) {
68 var o OptionalInt
69 err := easyjson.Unmarshal([]byte(nullAsJSON), &o)
70 assert.NoError(t, err)
71 assert.False(t, o.IsDefined())
72
73 err = easyjson.Unmarshal([]byte(`3`), &o)
74 assert.NoError(t, err)
75 assert.Equal(t, NewOptionalInt(3), o)
76
77 err = easyjson.Unmarshal([]byte(`true`), &o)
78 assert.Error(t, err)
79
80 err = easyjson.Unmarshal([]byte(`x`), &o)
81 assert.Error(t, err)
82 }
83
84 func TestOptionalStringEasyJSONUnmarshalling(t *testing.T) {
85 var o OptionalString
86 err := easyjson.Unmarshal([]byte(nullAsJSON), &o)
87 assert.NoError(t, err)
88 assert.False(t, o.IsDefined())
89
90 err = easyjson.Unmarshal([]byte(`"a \"good\" string"`), &o)
91 assert.NoError(t, err)
92 assert.True(t, o.IsDefined())
93 assert.Equal(t, `a "good" string`, o.StringValue())
94
95 err = easyjson.Unmarshal([]byte("3"), &o)
96 assert.Error(t, err)
97 }
98
View as plain text