package gc import ( "reflect" "testing" ) func TestTricolorBasic(t *testing.T) { roots := []string{"A", "C"} all := []string{"A", "B", "C", "D", "E", "F", "G"} refs := map[string][]string{ "A": {"B"}, "B": {"A"}, "C": {"D", "F", "B"}, "E": {"F", "G"}, } unreachable := Tricolor(roots, all, lookup(refs)) expected := []string{"E", "G"} if !reflect.DeepEqual(unreachable, expected) { t.Fatalf("incorrect unreachable set: %v != %v", unreachable, expected) } } func lookup(refs map[string][]string) func(id string) []string { return func(ref string) []string { return refs[ref] } }