set/set_test.go

197 lines
4.0 KiB
Go
Raw Permalink Normal View History

2025-11-28 13:02:56 -05:00
package set
import "testing"
func TestIntersection(t *testing.T) {
s1 := New[int](1, 2, 3, 4)
s2 := New[int](3, 4, 5, 6)
want := New[int](3, 4)
got := s1.Intersection(s2)
if !got.Equal(want) {
t.Errorf("Intersection() = %v; want %v", got, want)
}
}
func TestIntersection_Empty(t *testing.T) {
s1 := New[int](1, 2)
s2 := New[int](3, 4)
want := New[int]()
got := s1.Intersection(s2)
if !got.Equal(want) {
t.Errorf("Intersection() = %v; want %v", got, want)
}
}
func TestIntersection_Identical(t *testing.T) {
s1 := New[int](1, 2, 3)
s2 := New[int](1, 2, 3)
want := New[int](1, 2, 3)
got := s1.Intersection(s2)
if !got.Equal(want) {
t.Errorf("Intersection() = %v; want %v", got, want)
}
}
func TestIntersection_Subset(t *testing.T) {
s1 := New[int](1, 2, 3, 4, 5)
s2 := New[int](2, 3)
want := New[int](2, 3)
got := s1.Intersection(s2)
if !got.Equal(want) {
t.Errorf("Intersection() = %v; want %v", got, want)
}
}
func TestIntersection_EmptySet(t *testing.T) {
s1 := New[int](1, 2, 3)
s2 := New[int]()
want := New[int]()
got := s1.Intersection(s2)
if !got.Equal(want) {
t.Errorf("Intersection() = %v; want %v", got, want)
}
}
func TestIntersection_BothEmpty(t *testing.T) {
s1 := New[int]()
s2 := New[int]()
want := New[int]()
got := s1.Intersection(s2)
if !got.Equal(want) {
t.Errorf("Intersection() = %v; want %v", got, want)
}
}
func TestDifference(t *testing.T) {
s1 := New[int](1, 2, 3, 4)
s2 := New[int](3, 4, 5, 6)
want := New[int](1, 2)
got := s1.Difference(s2)
if !got.Equal(want) {
t.Errorf("Difference() = %v; want %v", got, want)
}
}
func TestDifference_Empty(t *testing.T) {
s1 := New[int](1, 2)
s2 := New[int](1, 2)
want := New[int]()
got := s1.Difference(s2)
if !got.Equal(want) {
t.Errorf("Difference() = %v; want %v", got, want)
}
}
func TestDifference_Subset(t *testing.T) {
s1 := New[int](1, 2, 3, 4, 5)
s2 := New[int](2, 3)
want := New[int](1, 4, 5)
got := s1.Difference(s2)
if !got.Equal(want) {
t.Errorf("Difference() = %v; want %v", got, want)
}
}
func TestDifference_EmptySet(t *testing.T) {
s1 := New[int](1, 2, 3)
s2 := New[int]()
want := New[int](1, 2, 3)
got := s1.Difference(s2)
if !got.Equal(want) {
t.Errorf("Difference() = %v; want %v", got, want)
}
}
func TestDifference_BothEmpty(t *testing.T) {
s1 := New[int]()
s2 := New[int]()
want := New[int]()
got := s1.Difference(s2)
if !got.Equal(want) {
t.Errorf("Difference() = %v; want %v", got, want)
}
}
func TestUnion(t *testing.T) {
s1 := New[int](1, 2, 3)
s2 := New[int](3, 4, 5)
want := New[int](1, 2, 3, 4, 5)
got := s1.Union(s2)
if !got.Equal(want) {
t.Errorf("Union() = %v; want %v", got, want)
}
}
func TestUnion_EmptySet(t *testing.T) {
s1 := New[int](1, 2, 3)
s2 := New[int]()
want := New[int](1, 2, 3)
got := s1.Union(s2)
if !got.Equal(want) {
t.Errorf("Union() = %v; want %v", got, want)
}
}
func TestUnion_BothEmpty(t *testing.T) {
s1 := New[int]()
s2 := New[int]()
want := New[int]()
got := s1.Union(s2)
if !got.Equal(want) {
t.Errorf("Union() = %v; want %v", got, want)
}
}
func TestAdd(t *testing.T) {
want := New[int](1, 2, 3)
got := New[int]()
got.Add(1)
got.Add(2)
got.Add(3)
if !got.Equal(want) {
t.Errorf("Add() = %v; want %v", got, want)
}
}
func TestRemov(t *testing.T) {
want := New[int](1, 3)
got := New[int](1, 2, 3)
got.Remove(2)
if !got.Equal(want) {
t.Errorf("Remove() = %v; want %v", got, want)
}
}
func TestContains(t *testing.T) {
s := New[int](1, 2, 3)
if !s.Contains(2) {
t.Errorf("Contains(2) = false; want true")
}
if s.Contains(4) {
t.Errorf("Contains(4) = true; want false")
}
}
func TestSize(t *testing.T) {
s := New[int](1, 2, 3, 4)
want := 4
got := s.Size()
if got != want {
t.Errorf("Size() = %d; want %d", got, want)
}
}
func TestToSlice(t *testing.T) {
s := New[int](1, 2, 3)
want := []int{1, 2, 3}
got := s.ToSlice()
mapping := make(map[int]bool)
for _, v := range got {
mapping[v] = true
}
for _, v := range want {
if !mapping[v] {
t.Errorf("ToSlice() missing element %d; got %v", v, got)
}
}
}