List check utils.

This commit is contained in:
Andrey Smirnov
2013-12-16 16:18:32 +04:00
parent 0151af17c7
commit f58db85edf
2 changed files with 39 additions and 0 deletions

23
utils/list.go Normal file
View File

@@ -0,0 +1,23 @@
package utils
import (
"fmt"
)
// StringsIsSubset checks that subset is strict subset of full, and returns
// error formatted with errorFmt otherwise
func StringsIsSubset(subset []string, full []string, errorFmt string) error {
for checked := range subset {
found := false
for s := range full {
if checked == s {
found = true
break
}
}
if !found {
return fmt.Errorf(errorFmt, checked, full)
}
}
return nil
}

16
utils/list_test.go Normal file
View File

@@ -0,0 +1,16 @@
package utils
import (
. "launchpad.net/gocheck"
)
type ListSuite struct {
}
func (s *ListSuite) TestStringsIsSubset(c *C) {
err := StringsIsSubset([]string{"a", "b"}, []string{"a", "b", "c"}, "[%s]")
c.Assert(err, IsNil)
err = StringsIsSubset([]string{"b", "a"}, []string{"b", "c"}, "[%s]")
c.Assert(err, ErrorMatches, "[a]")
}