Merge pull request #522 from Sarsate/has-all

Added HasAll utility method for string set.
This commit is contained in:
Daniel Smith 2014-07-18 13:38:11 -07:00
commit dd36c45bfe
3 changed files with 22 additions and 1 deletions

View File

@ -34,7 +34,8 @@ func TestValidateVolumes(t *testing.T) {
if len(errs) != 0 {
t.Errorf("expected success: %v", errs)
}
if len(names) != 4 || !names.Has("abc") || !names.Has("123") || !names.Has("abc-123") || !names.Has("empty") {
expectedSet := util.NewStringSet("abc", "123", "abc-123", "empty")
if len(names) != 4 || !names.HasAll(expectedSet) {
t.Errorf("wrong names result: %v", names)
}

View File

@ -50,6 +50,16 @@ func (s StringSet) Has(item string) bool {
return contained
}
// HasAll returns true iff all items are contained in the set.
func (s1 StringSet) HasAll(s2 StringSet) bool {
for item, _ := range s2 {
if !s1.Has(item) {
return false
}
}
return true
}
// List returns the contents as a sorted string slice.
func (s StringSet) List() []string {
res := make([]string, 0, len(s))

View File

@ -23,6 +23,7 @@ import (
func TestStringSet(t *testing.T) {
s := StringSet{}
s2 := StringSet{}
if len(s) != 0 {
t.Errorf("Expected len=0: %d", len(s))
}
@ -41,6 +42,15 @@ func TestStringSet(t *testing.T) {
if s.Has("a") {
t.Errorf("Unexpected contents: %#v", s)
}
s.Insert("a")
s2.Insert("a","b","d")
if s.HasAll(s2) {
t.Errorf("Unexpected contents: %#v", s)
}
s2.Delete("d")
if !s.HasAll(s2) {
t.Errorf("Missing contents: %#v", s)
}
}
func TestNewStringSet(t *testing.T) {