MCPcopy Create free account
hub / github.com/araddon/qlbridge / TestValues

Function TestValues

value/value_test.go:121–273  ·  view source on GitHub ↗

TestNewValue tests the conversion from Go types to Values.

(t *testing.T)

Source from the content-addressed store, hash-verified

119
120// TestNewValue tests the conversion from Go types to Values.
121func TestValues(t *testing.T) {
122
123 var ty ValueType
124 assert.Equal(t, "nil", ty.String())
125 assert.Equal(t, "unknown", UnknownType.String())
126 assert.Equal(t, UnknownType, ValueFromString("unknown"))
127 assert.Equal(t, UnknownType, ValueFromString("abracadabra"))
128 assert.Equal(t, "invalid", ValueType(100).String())
129 assert.Equal(t, "value", ValueInterfaceType.String())
130 assert.Equal(t, ValueInterfaceType, ValueFromString("value"))
131
132 for _, v := range vals {
133 val := NewValue(v.in)
134 t.Logf("check %T: %v", v.out, val.ToString())
135 assert.Equal(t, v.t, val.Type())
136 if v.s != "ignore" {
137 assert.Equal(t, v.s, val.ToString())
138 jb, err := json.Marshal(val)
139 assert.Equal(t, nil, err)
140 if len(v.s) > 0 {
141 assert.True(t, len(jb) > 0)
142 }
143 }
144
145 sliceVal, isSlice := val.(Slice)
146 switch v.t {
147 case IntType:
148 numeric, isNumeric := val.(NumericValue)
149 assert.True(t, isNumeric)
150 assert.Equal(t, v.out, val.Value())
151 assert.Equal(t, v.out, numeric.Int())
152 assert.Equal(t, true, v.t.IsNumeric())
153 case NumberType:
154 numeric, isNumeric := val.(NumericValue)
155 assert.True(t, isNumeric)
156 assert.Equal(t, true, v.t.IsNumeric())
157 if v.s == "NaN" {
158 fv, ok := val.Value().(float64)
159 assert.True(t, ok)
160 assert.Equal(t, true, math.IsNaN(fv))
161 } else if v.s == "ignore" {
162 } else {
163 assert.Equal(t, v.out, val.Value())
164 assert.Equal(t, v.out, numeric.Float())
165 }
166
167 case StringsType:
168
169 assert.True(t, isSlice)
170 assert.True(t, v.t.IsSlice())
171 assert.Equal(t, false, v.t.IsNumeric())
172 assert.Equal(t, v.out, val.Value())
173 sv := val.(StringsValue)
174 assert.Equal(t, v.out, sv.Strings())
175 assert.Equal(t, sv.Len(), sliceVal.Len())
176
177 case ByteSliceType:
178 byVal := val.(ByteSliceValue)

Callers

nothing calls this directly

Calls 15

StringMethod · 0.95
ToStringMethod · 0.95
TypeMethod · 0.95
ValueMethod · 0.95
NilMethod · 0.95
ErrMethod · 0.95
ValueFromStringFunction · 0.85
ValueTypeTypeAlias · 0.85
NewValueFunction · 0.85
IsNumericMethod · 0.80
IsSliceMethod · 0.80
IsMapMethod · 0.80

Tested by

no test coverage detected