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:
parent
0fb24c1a7a
commit
7bf33c2a7f
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue