87 lines
1.3 KiB
Go
87 lines
1.3 KiB
Go
package schema
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func TestSetAdd(t *testing.T) {
|
|
s := &Set{F: testSetInt}
|
|
s.Add(1)
|
|
s.Add(5)
|
|
s.Add(25)
|
|
|
|
expected := []interface{}{1, 5, 25}
|
|
actual := s.List()
|
|
if !reflect.DeepEqual(actual, expected) {
|
|
t.Fatalf("bad: %#v", actual)
|
|
}
|
|
}
|
|
|
|
func TestSetContains(t *testing.T) {
|
|
s := &Set{F: testSetInt}
|
|
s.Add(5)
|
|
|
|
if s.Contains(2) {
|
|
t.Fatal("should not contain")
|
|
}
|
|
if !s.Contains(5) {
|
|
t.Fatal("should contain")
|
|
}
|
|
}
|
|
|
|
func TestSetDifference(t *testing.T) {
|
|
s1 := &Set{F: testSetInt}
|
|
s2 := &Set{F: testSetInt}
|
|
|
|
s1.Add(1)
|
|
s1.Add(5)
|
|
|
|
s2.Add(5)
|
|
s2.Add(25)
|
|
|
|
expected := []interface{}{1}
|
|
actual := s1.Difference(s2).List()
|
|
if !reflect.DeepEqual(actual, expected) {
|
|
t.Fatalf("bad: %#v", actual)
|
|
}
|
|
}
|
|
|
|
func TestSetIntersection(t *testing.T) {
|
|
s1 := &Set{F: testSetInt}
|
|
s2 := &Set{F: testSetInt}
|
|
|
|
s1.Add(1)
|
|
s1.Add(5)
|
|
|
|
s2.Add(5)
|
|
s2.Add(25)
|
|
|
|
expected := []interface{}{5}
|
|
actual := s1.Intersection(s2).List()
|
|
if !reflect.DeepEqual(actual, expected) {
|
|
t.Fatalf("bad: %#v", actual)
|
|
}
|
|
}
|
|
|
|
func TestSetUnion(t *testing.T) {
|
|
s1 := &Set{F: testSetInt}
|
|
s2 := &Set{F: testSetInt}
|
|
|
|
s1.Add(1)
|
|
s1.Add(5)
|
|
|
|
s2.Add(5)
|
|
s2.Add(25)
|
|
|
|
expected := []interface{}{1, 5, 25}
|
|
actual := s1.Union(s2).List()
|
|
if !reflect.DeepEqual(actual, expected) {
|
|
t.Fatalf("bad: %#v", actual)
|
|
}
|
|
}
|
|
|
|
func testSetInt(v interface{}) int {
|
|
return v.(int)
|
|
}
|