mtest: implement Nil
This commit is contained in:
parent
eaaf0b99cb
commit
58fd73d540
@ -299,6 +299,27 @@ func Equal(a, b interface{}) Assertion {
|
|||||||
}, toStr(a)+" == "+toStr(b), 0)
|
}, toStr(a)+" == "+toStr(b), 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Nil asserts that the value is nil. This assertion works both if the value is
|
||||||
|
// the untyped nil value (e.g. `Nil(nil)`) or if it's a typed nil value (e.g.
|
||||||
|
// `Nil([]byte(nil))`).
|
||||||
|
func Nil(i interface{}) Assertion {
|
||||||
|
return newAssertion(func() error {
|
||||||
|
if i == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
v := reflect.ValueOf(i)
|
||||||
|
switch v.Kind() {
|
||||||
|
case reflect.Chan, reflect.Func, reflect.Interface,
|
||||||
|
reflect.Map, reflect.Ptr, reflect.Slice:
|
||||||
|
if v.IsNil() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
return errors.New("not nil")
|
||||||
|
}, toStr(i)+" is nil", 0)
|
||||||
|
}
|
||||||
|
|
||||||
func toSet(i interface{}, keyedMap bool) ([]interface{}, error) {
|
func toSet(i interface{}, keyedMap bool) ([]interface{}, error) {
|
||||||
v := reflect.ValueOf(i)
|
v := reflect.ValueOf(i)
|
||||||
switch v.Kind() {
|
switch v.Kind() {
|
||||||
@ -409,3 +430,7 @@ func Len(set interface{}, length int) Assertion {
|
|||||||
return nil
|
return nil
|
||||||
}, toStr(set)+" has length "+strconv.Itoa(length), 0)
|
}, toStr(set)+" has length "+strconv.Itoa(length), 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO ChanRead(ch interface{}, within time.Duration, callback func(interface{}) error)
|
||||||
|
// TODO ChanBlock(ch interface{}, for time.Duration)
|
||||||
|
// TODO ChanClosed(ch interface{})
|
||||||
|
@ -109,6 +109,26 @@ func TestEqual(t *T) {
|
|||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestNil(t *T) {
|
||||||
|
Fatal(t, All(
|
||||||
|
Nil(nil),
|
||||||
|
Nil([]byte(nil)),
|
||||||
|
Nil(map[int]int(nil)),
|
||||||
|
Nil((*struct{})(nil)),
|
||||||
|
Nil(interface{}(nil)),
|
||||||
|
Nil(error(nil)),
|
||||||
|
))
|
||||||
|
|
||||||
|
Fatal(t, None(
|
||||||
|
Nil(1),
|
||||||
|
Nil([]byte("foo")),
|
||||||
|
Nil(map[int]int{1: 1}),
|
||||||
|
Nil(&struct{}{}),
|
||||||
|
Nil(interface{}("hi")),
|
||||||
|
Nil(errors.New("some error")),
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
func TestSubset(t *T) {
|
func TestSubset(t *T) {
|
||||||
Fatal(t, All(
|
Fatal(t, All(
|
||||||
Subset([]int{1, 2, 3}, []int{}),
|
Subset([]int{1, 2, 3}, []int{}),
|
||||||
|
Loading…
Reference in New Issue
Block a user