public async Task StackoverflowSearch(string start, string end, int maxVisit) { var startNode = new Webpage(start, Webpage.Stackoverflow); var visited = 0; var bfs = new AsyncBreadthFirstSearch<Webpage>( n => n.Url == end || Interlocked.Increment(ref visited) > maxVisit ); await bfs.VisitAsync(startNode); Assert.Contains(bfs.Discovered, n => n.Url == end); }
public async Task ReasonablyComplicatedGraph() { var h = new AsyncNode("h"); var g = new AsyncNode("g"); var f = new AsyncNode("f"); var e = new AsyncNode("e", h); var d = new AsyncNode("d"); var c = new AsyncNode("c", f, g); var b = new AsyncNode("b", d, e); var a = new AsyncNode("a", b, c); var bfs = new AsyncBreadthFirstSearch<AsyncNode>(n => false); await bfs.VisitAsync(a); Assert.Equal(new[] { a, b, c, d, e, f, g, h }, bfs.Discovered); }