Remove loop from TestWalker_removeVertex

There's no timing dependent behavior here, since V1 must be visited
before V2, Remove and Update must be called before V2 is visited.
This commit is contained in:
James Bardin 2017-02-20 15:07:09 -05:00
parent 0fb24c1a7a
commit 7bf33c2a7f
1 changed files with 27 additions and 33 deletions

View File

@ -106,9 +106,7 @@ func TestWalker_newVertex(t *testing.T) {
var w *Walker var w *Walker
cb := func(v Vertex) error { cb := func(v Vertex) error {
if v == 2 { if v == 2 {
defer func() { defer close(done2)
close(done2)
}()
} }
return recordF(v) return recordF(v)
} }
@ -141,42 +139,38 @@ func TestWalker_newVertex(t *testing.T) {
} }
func TestWalker_removeVertex(t *testing.T) { func TestWalker_removeVertex(t *testing.T) {
// Run it a bunch of times since it is timing dependent var g AcyclicGraph
for i := 0; i < 50; i++ { g.Add(1)
var g AcyclicGraph g.Add(2)
g.Add(1) g.Connect(BasicEdge(1, 2))
g.Add(2)
g.Connect(BasicEdge(1, 2))
// Record function // Record function
var order []interface{} var order []interface{}
recordF := walkCbRecord(&order) recordF := walkCbRecord(&order)
// Build a callback that delays until we close a channel var w *Walker
var w *Walker cb := func(v Vertex) error {
cb := func(v Vertex) error { if v == 1 {
if v == 1 { g.Remove(2)
g.Remove(2) w.Update(&g)
w.Update(&g)
}
return recordF(v)
} }
// Add the initial vertices return recordF(v)
w = &Walker{Callback: cb} }
w.Update(&g)
// Wait // Add the initial vertices
if err := w.Wait(); err != nil { w = &Walker{Callback: cb}
t.Fatalf("err: %s", err) w.Update(&g)
}
// Check // Wait
expected := []interface{}{1} if err := w.Wait(); err != nil {
if !reflect.DeepEqual(order, expected) { t.Fatalf("err: %s", err)
t.Fatalf("bad: %#v", order) }
}
// Check
expected := []interface{}{1}
if !reflect.DeepEqual(order, expected) {
t.Fatalf("bad: %#v", order)
} }
} }