public void testBFSUpVisitAllVertexesExpectedBlocked() { HashSet <int> shouldBeVisited = new HashSet <int>() { 1, 2, 5, 6 }; DirectedNetworkTracer.BFSUp <int, int>(network, 1, (vid) => { if (!shouldBeVisited.Contains(vid)) { Assert.Fail("Вершина " + vid + " не должна быть посещена (или была посещена повторно)"); } else { shouldBeVisited.Remove(vid); } return(false); }, (v, a) => { Vertex <int> vf = network.getVertexFeature(a); //Если задвижка - дальше не идем return(vf.value != ARMAT_CLASS); }); Assert.AreEqual <int>(shouldBeVisited.Count, 0, "Не все вершины были посещены"); }
public void testBFSstopsAndReturnTarget() { //Ищем источник. int grs = DirectedNetworkTracer.BFSUp <int, int>(network, 1, (vid) => { Vertex <int> vf = network.getVertexFeature(vid); //Если vid - источник, то прекращаем выполнение return(vf.value == GRS_CLASS); }, (v, a) => { Vertex <int> vf = network.getVertexFeature(a); //Если vf - задвижка, то дальше не идем return(vf.value != ARMAT_CLASS); }); //должна найтись вершина 6, но не 4 (т.к. перед ней задвижка) Assert.AreEqual(6, grs); }