40 lines
890 B
Go
40 lines
890 B
Go
package stringset_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/jdkaplan/advent-of-code/aoc/stringset"
|
|
)
|
|
|
|
func TestMinus(t *testing.T) {
|
|
a := stringset.Runes("dab")
|
|
b := stringset.Runes("ab")
|
|
u := a.Minus(b)
|
|
if n := len(u); n != 1 {
|
|
t.Fatalf("Expected one value, got %d", n)
|
|
}
|
|
if v := u.Only(); v != "d" {
|
|
t.Errorf(`Expected value to be "d", got %s`, v)
|
|
}
|
|
}
|
|
|
|
func TestIntersect(t *testing.T) {
|
|
t.Run("pairwise", func(t *testing.T) {
|
|
u := stringset.Runes("dab").Intersect(stringset.Runes("ab"))
|
|
expected := stringset.Runes("ab")
|
|
if !u.Equal(expected) {
|
|
t.Errorf(`Expected value to be %s, got %s`, expected, u)
|
|
}
|
|
})
|
|
|
|
t.Run("multiple", func(t *testing.T) {
|
|
u := stringset.Intersect(
|
|
stringset.Runes("dab"),
|
|
stringset.Runes("ab"),
|
|
)
|
|
expected := stringset.Runes("ab")
|
|
if !u.Equal(expected) {
|
|
t.Errorf(`Expected value to be %s, got %s`, expected, u)
|
|
}
|
|
})
|
|
}
|