1
1
package values
2
2
3
3
import (
4
+ "errors"
4
5
"strconv"
5
6
"testing"
6
7
"time"
@@ -13,6 +14,14 @@ type foo struct {
13
14
Age int
14
15
}
15
16
17
+ type testInterface interface {
18
+ testFunc ()
19
+ }
20
+
21
+ type testStruct struct {}
22
+
23
+ func (t testStruct ) testFunc () {}
24
+
16
25
func TestTap_Struct (t * testing.T ) {
17
26
f := & foo {Name : "foo" }
18
27
@@ -245,3 +254,58 @@ func TestPtrAndVal(t *testing.T) {
245
254
got6 := Val (nilVal )
246
255
assert .Equal (t , 0 , got6 )
247
256
}
257
+
258
+ func TestIsType (t * testing.T ) {
259
+ assert .True (t , IsType [int ](10 ))
260
+ assert .False (t , IsType [int ](int8 (10 )))
261
+
262
+ assert .True (t , IsType [string ]("foo" ))
263
+ assert .False (t , IsType [string ](10 ))
264
+
265
+ assert .True (t , IsType [time.Time ](time .Now ()))
266
+ assert .False (t , IsType [time.Time ](10 ))
267
+
268
+ assert .True (t , IsType [foo ](foo {}))
269
+ assert .False (t , IsType [foo ](10 ))
270
+
271
+ assert .True (t , IsType [* foo ](& foo {}))
272
+ assert .False (t , IsType [foo ](& foo {}))
273
+ assert .False (t , IsType [* foo ](nil ))
274
+
275
+ assert .True (t , IsType [testInterface ](testStruct {}))
276
+ assert .True (t , IsType [interface {}](testStruct {}))
277
+ assert .True (t , IsType [any ](testStruct {}))
278
+
279
+ assert .True (t , IsType [error ](errors .New ("foo" )))
280
+ assert .False (t , IsType [error ](nil ))
281
+ }
282
+
283
+ func TestIsZero (t * testing.T ) {
284
+ assert .True (t , IsZero (0 ))
285
+ assert .True (t , IsZero ("" ))
286
+ assert .True (t , IsZero (false ))
287
+ assert .True (t , IsZero [* foo ](nil ))
288
+ assert .True (t , IsZero (0.0 ))
289
+ assert .True (t , IsZero (0.0 + 0i ))
290
+
291
+ assert .False (t , IsZero (1 ))
292
+ assert .False (t , IsZero ("foo" ))
293
+ assert .False (t , IsZero (true ))
294
+ assert .False (t , IsZero (1.0 ))
295
+ assert .False (t , IsZero (1.0 + 0i ))
296
+ }
297
+
298
+ func TestIsEmpty (t * testing.T ) {
299
+ assert .True (t , IsEmpty ("" ))
300
+ assert .True (t , IsEmpty [* foo ](nil ))
301
+ assert .True (t , IsEmpty (0 ))
302
+ assert .True (t , IsEmpty (false ))
303
+ assert .True (t , IsEmpty (0.0 ))
304
+ assert .True (t , IsEmpty (0.0 + 0i ))
305
+
306
+ assert .False (t , IsEmpty ("foo" ))
307
+ assert .False (t , IsEmpty (1 ))
308
+ assert .False (t , IsEmpty (true ))
309
+ assert .False (t , IsEmpty (1.0 ))
310
+ assert .False (t , IsEmpty (1.0 + 0i ))
311
+ }
0 commit comments