1 package ldvalue
2
3 import (
4 "testing"
5
6 "github.com/stretchr/testify/assert"
7 )
8
9 func TestOptionalBoolAsStringer(t *testing.T) {
10 assert.Equal(t, "[none]", OptionalBool{}.String())
11 assert.Equal(t, "false", NewOptionalBool(false).String())
12 assert.Equal(t, "true", NewOptionalBool(true).String())
13 }
14
15 func TestOptionalIntAsStringer(t *testing.T) {
16 assert.Equal(t, "[none]", OptionalInt{}.String())
17 assert.Equal(t, "3", NewOptionalInt(3).String())
18 }
19
20 func TestOptionalStringAsStringer(t *testing.T) {
21 assert.Equal(t, "[none]", OptionalString{}.String())
22 assert.Equal(t, "[empty]", NewOptionalString("").String())
23 assert.Equal(t, "x", NewOptionalString("x").String())
24 }
25
26 func TestOptionalBoolTextMarshalling(t *testing.T) {
27 b, e := NewOptionalBool(true).MarshalText()
28 assert.NoError(t, e)
29 assert.Equal(t, []byte("true"), b)
30
31 b, e = NewOptionalBool(false).MarshalText()
32 assert.NoError(t, e)
33 assert.Equal(t, []byte("false"), b)
34
35 b, e = OptionalBool{}.MarshalText()
36 assert.NoError(t, e)
37 assert.Len(t, b, 0)
38 }
39
40 func TestOptionalIntTextMarshalling(t *testing.T) {
41 b, e := NewOptionalInt(3).MarshalText()
42 assert.NoError(t, e)
43 assert.Equal(t, []byte("3"), b)
44
45 b, e = OptionalInt{}.MarshalText()
46 assert.NoError(t, e)
47 assert.Len(t, b, 0)
48 }
49
50 func TestOptionalStringTextMarshalling(t *testing.T) {
51 b, e := NewOptionalString("x").MarshalText()
52 assert.NoError(t, e)
53 assert.Equal(t, []byte("x"), b)
54
55 b, e = NewOptionalString("").MarshalText()
56 assert.NoError(t, e)
57 assert.Equal(t, []byte{}, b)
58
59 b, e = OptionalString{}.MarshalText()
60 assert.NoError(t, e)
61 assert.Nil(t, b)
62 }
63
64 func TestOptionalBoolTextUnmarshalling(t *testing.T) {
65 var o1 OptionalBool
66 assert.NoError(t, o1.UnmarshalText([]byte("true")))
67 assert.Equal(t, NewOptionalBool(true), o1)
68
69 var o2 OptionalBool
70 assert.NoError(t, o2.UnmarshalText([]byte("false")))
71 assert.Equal(t, NewOptionalBool(false), o2)
72
73 var o3 OptionalBool
74 assert.NoError(t, o3.UnmarshalText([]byte("")))
75 assert.Equal(t, OptionalBool{}, o3)
76
77 var o4 OptionalBool
78 assert.NoError(t, o4.UnmarshalText(nil))
79 assert.Equal(t, OptionalBool{}, o4)
80
81 var o5 OptionalBool
82 assert.Error(t, o5.UnmarshalText([]byte("x")))
83 assert.Equal(t, OptionalBool{}, o5)
84 }
85
86 func TestOptionalIntTextUnmarshalling(t *testing.T) {
87 var o1 OptionalInt
88 assert.NoError(t, o1.UnmarshalText([]byte("3")))
89 assert.Equal(t, NewOptionalInt(3), o1)
90
91 var o2 OptionalInt
92 assert.NoError(t, o2.UnmarshalText([]byte("")))
93 assert.Equal(t, OptionalInt{}, o2)
94
95 var o3 OptionalInt
96 assert.NoError(t, o3.UnmarshalText(nil))
97 assert.Equal(t, OptionalInt{}, o3)
98
99 var o4 OptionalInt
100 assert.Error(t, o4.UnmarshalText([]byte("x")))
101 assert.Equal(t, OptionalInt{}, o4)
102 }
103
104 func TestOptionalStringTextUnmarshalling(t *testing.T) {
105 var o1 OptionalString
106 assert.NoError(t, o1.UnmarshalText([]byte("x")))
107 assert.Equal(t, NewOptionalString("x"), o1)
108
109 var o2 OptionalString
110 assert.NoError(t, o2.UnmarshalText([]byte("")))
111 assert.Equal(t, NewOptionalString(""), o2)
112
113 var o3 OptionalString
114 assert.NoError(t, o3.UnmarshalText(nil))
115 assert.Equal(t, OptionalString{}, o3)
116 }
117
View as plain text