github.com/YousefHaggyHeroku/pack@v1.5.5/internal/stringset/stringset_test.go (about) 1 package stringset_test 2 3 import ( 4 "sort" 5 "testing" 6 7 "github.com/heroku/color" 8 "github.com/sclevine/spec" 9 "github.com/sclevine/spec/report" 10 11 "github.com/YousefHaggyHeroku/pack/internal/stringset" 12 h "github.com/YousefHaggyHeroku/pack/testhelpers" 13 ) 14 15 func TestStringSet(t *testing.T) { 16 color.Disable(true) 17 defer color.Disable(false) 18 spec.Run(t, "testStringSet", testStringSet, spec.Parallel(), spec.Report(report.Terminal{})) 19 } 20 21 // NOTE: Do NOT use AssertSliceContains() or variants of it in theses tests, as they use `stringset` 22 func testStringSet(t *testing.T, when spec.G, it spec.S) { 23 when("#FromSlice", func() { 24 it("returns a map with elements as unique keys", func() { 25 slice := []string{"a", "b", "a", "c"} 26 27 set := stringset.FromSlice(slice) 28 29 h.AssertEq(t, len(set), 3) 30 31 _, ok := set["a"] 32 h.AssertTrue(t, ok) 33 34 _, ok = set["b"] 35 h.AssertTrue(t, ok) 36 37 _, ok = set["c"] 38 h.AssertTrue(t, ok) 39 }) 40 }) 41 42 when("#Compare", func() { 43 it("returns elements in slice 1 but not in slice 2", func() { 44 slice1 := []string{"a", "b", "c", "d"} 45 slice2 := []string{"a", "c"} 46 47 extra, _, _ := stringset.Compare(slice1, slice2) 48 49 h.AssertEq(t, len(extra), 2) 50 51 sort.Strings(extra) 52 h.AssertEq(t, extra[0], "b") 53 h.AssertEq(t, extra[1], "d") 54 }) 55 56 it("returns elements in slice 2 missing from slice 1", func() { 57 slice1 := []string{"a", "c"} 58 slice2 := []string{"a", "b", "c", "d"} 59 60 _, missing, _ := stringset.Compare(slice1, slice2) 61 62 h.AssertEq(t, len(missing), 2) 63 64 sort.Strings(missing) 65 h.AssertEq(t, missing[0], "b") 66 h.AssertEq(t, missing[1], "d") 67 }) 68 69 it("returns elements present in both slices", func() { 70 slice1 := []string{"a", "b", "c"} 71 slice2 := []string{"b", "c", "d"} 72 73 _, _, common := stringset.Compare(slice1, slice2) 74 75 h.AssertEq(t, len(common), 2) 76 77 sort.Strings(common) 78 h.AssertEq(t, common[0], "b") 79 h.AssertEq(t, common[1], "c") 80 }) 81 }) 82 }