| 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] |
| } |
| } |