massert: implement Len
This commit is contained in:
parent
d3a81f9613
commit
0a4be2f8cd
@ -8,6 +8,7 @@ import (
|
||||
"path/filepath"
|
||||
"reflect"
|
||||
"runtime"
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
"text/tabwriter"
|
||||
@ -393,3 +394,18 @@ func HasKey(set, elem interface{}) Assertion {
|
||||
return errors.New("value not a key in the map")
|
||||
}, toStr(set)+" has key "+toStr(elem), 0)
|
||||
}
|
||||
|
||||
// Len asserts that the given set has the given number of elements in it. The
|
||||
// set may be an array, a slice, or a map. A nil value'd set is considered to be
|
||||
// a length of zero.
|
||||
func Len(set interface{}, length int) Assertion {
|
||||
return newAssertion(func() error {
|
||||
setVV, err := toSet(set, false)
|
||||
if err != nil {
|
||||
return err
|
||||
} else if len(setVV) != length {
|
||||
return errors.New("set not correct length")
|
||||
}
|
||||
return nil
|
||||
}, toStr(set)+" has length "+strconv.Itoa(length), 0)
|
||||
}
|
||||
|
@ -172,3 +172,27 @@ func TestHasKey(t *T) {
|
||||
HasKey(map[int]int{2: 2}, 1),
|
||||
))
|
||||
}
|
||||
|
||||
func TestLen(t *T) {
|
||||
Fatal(t, All(
|
||||
Len([]int(nil), 0),
|
||||
Len([]int{}, 0),
|
||||
Len([]int{1}, 1),
|
||||
Len([]int{1, 2}, 2),
|
||||
Len(map[int]int(nil), 0),
|
||||
Len(map[int]int{}, 0),
|
||||
Len(map[int]int{1: 1}, 1),
|
||||
Len(map[int]int{1: 1, 2: 2}, 2),
|
||||
))
|
||||
|
||||
Fatal(t, None(
|
||||
Len([]int(nil), 1),
|
||||
Len([]int{}, 1),
|
||||
Len([]int{1}, 0),
|
||||
Len([]int{1}, 2),
|
||||
Len([]int{1, 2}, 1),
|
||||
Len([]int{1, 2}, 3),
|
||||
Len(map[int]int(nil), 1),
|
||||
Len(map[int]int{}, 1),
|
||||
))
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user