diff --git a/pkg/util/set.go b/pkg/util/set.go index bc50c86cba3..8445fb61044 100644 --- a/pkg/util/set.go +++ b/pkg/util/set.go @@ -39,9 +39,11 @@ func (s StringSet) Insert(items ...string) { } } -// Delete removes item from the set. -func (s StringSet) Delete(item string) { - delete(s, item) +// Delete removes all items from the set. +func (s StringSet) Delete(items ...string) { + for _, item := range items { + delete(s, item) + } } // Has returns true iff item is contained in the set. diff --git a/pkg/util/set_test.go b/pkg/util/set_test.go index 9b35aedc3d8..6fb02355700 100644 --- a/pkg/util/set_test.go +++ b/pkg/util/set_test.go @@ -59,6 +59,29 @@ func TestStringSet(t *testing.T) { } } +func TestStringSetDeleteMultiples(t *testing.T) { + s := StringSet{} + s.Insert("a", "b", "c") + if len(s) != 3 { + t.Errorf("Expected len=3: %d", len(s)) + } + + s.Delete("a", "c") + if len(s) != 1 { + t.Errorf("Expected len=1: %d", len(s)) + } + if s.Has("a") { + t.Errorf("Unexpected contents: %#v", s) + } + if s.Has("c") { + t.Errorf("Unexpected contents: %#v", s) + } + if !s.Has("b") { + t.Errorf("Missing contents: %#v", s) + } + +} + func TestNewStringSet(t *testing.T) { s := NewStringSet("a", "b", "c") if len(s) != 3 {