mirror of https://github.com/hashicorp/terraform
parent
66b9a6e8e7
commit
77c445a838
@ -0,0 +1,56 @@
|
||||
package dag
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSetDifference(t *testing.T) {
|
||||
cases := []struct {
|
||||
Name string
|
||||
A, B []interface{}
|
||||
Expected []interface{}
|
||||
}{
|
||||
{
|
||||
"same",
|
||||
[]interface{}{1, 2, 3},
|
||||
[]interface{}{3, 1, 2},
|
||||
[]interface{}{},
|
||||
},
|
||||
|
||||
{
|
||||
"A has extra elements",
|
||||
[]interface{}{1, 2, 3},
|
||||
[]interface{}{3, 2},
|
||||
[]interface{}{1},
|
||||
},
|
||||
|
||||
{
|
||||
"B has extra elements",
|
||||
[]interface{}{1, 2, 3},
|
||||
[]interface{}{3, 2, 1, 4},
|
||||
[]interface{}{},
|
||||
},
|
||||
}
|
||||
|
||||
for i, tc := range cases {
|
||||
t.Run(fmt.Sprintf("%d-%s", i, tc.Name), func(t *testing.T) {
|
||||
var one, two, expected Set
|
||||
for _, v := range tc.A {
|
||||
one.Add(v)
|
||||
}
|
||||
for _, v := range tc.B {
|
||||
two.Add(v)
|
||||
}
|
||||
for _, v := range tc.Expected {
|
||||
expected.Add(v)
|
||||
}
|
||||
|
||||
actual := one.Difference(&two)
|
||||
match := actual.Intersection(&expected)
|
||||
if match.Len() != expected.Len() {
|
||||
t.Fatalf("bad: %#v", actual.List())
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Loading…
Reference in new issue