tailscale/util/set/set_test.go
Chris Palmer 8833dc51f1
util/set: add some useful utility functions for Set (#9535)
Also give each type of set its own file.

Updates #cleanup

Signed-off-by: Chris Palmer <cpalmer@tailscale.com>
2023-09-29 14:31:02 -07:00

65 lines
1.1 KiB
Go

// Copyright (c) Tailscale Inc & AUTHORS
// SPDX-License-Identifier: BSD-3-Clause
package set
import (
"slices"
"testing"
)
func TestSet(t *testing.T) {
s := Set[int]{}
s.Add(1)
s.Add(2)
if !s.Contains(1) {
t.Error("missing 1")
}
if !s.Contains(2) {
t.Error("missing 2")
}
if s.Contains(3) {
t.Error("shouldn't have 3")
}
if s.Len() != 2 {
t.Errorf("wrong len %d; want 2", s.Len())
}
more := []int{3, 4}
s.AddSlice(more)
if !s.Contains(3) {
t.Error("missing 3")
}
if !s.Contains(4) {
t.Error("missing 4")
}
if s.Contains(5) {
t.Error("shouldn't have 5")
}
if s.Len() != 4 {
t.Errorf("wrong len %d; want 4", s.Len())
}
es := s.Slice()
if len(es) != 4 {
t.Errorf("slice has wrong len %d; want 4", len(es))
}
for _, e := range []int{1, 2, 3, 4} {
if !slices.Contains(es, e) {
t.Errorf("slice missing %d (%#v)", e, es)
}
}
}
func TestSetOf(t *testing.T) {
s := SetOf[int]([]int{1, 2, 3, 4, 4, 1})
if s.Len() != 4 {
t.Errorf("wrong len %d; want 2", s.Len())
}
for _, n := range []int{1, 2, 3, 4} {
if !s.Contains(n) {
t.Errorf("should contain %d", n)
}
}
}