private bool testArmTask(IDirectedNetwork <CommonJunction, CommonJunction> network, IDirectedNetwork <CommonJunction, CommonJunction> expected_result, int edgeID) { DirectedNetworkTracer tracer = new DirectedNetworkTracer(network); IDirectedNetwork <CommonJunction, CommonJunction> result = tracer.armTask(edgeID).network; return(compareNetworks(result, expected_result)); }
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 testArmatAlgFail() { yEdDirectedNetwork network = new yEdDirectedNetwork(); network.setSymbols(this.symbols_to_classes); network.loadFromXml(this.getExample("test_arm_fail")); DirectedNetworkTracer tracer = new DirectedNetworkTracer(network); tracer.armTask(12); }
private bool testArmExample(string name, int EdgeID) { yEdDirectedNetwork network = new yEdDirectedNetwork(); network.setSymbols(this.symbols_to_classes); network.loadFromXml(this.getExample(name)); DirectedNetworkTracer tracer = new DirectedNetworkTracer(network); yEdDirectedNetwork expected_result = new yEdDirectedNetwork(); expected_result.setSymbols(this.symbols_to_classes); expected_result.loadFromXml(this.getExample(name + "_result")); IDirectedNetwork <CommonJunction, CommonJunction> result = tracer.armTask(EdgeID).network; return(compareNetworks(result, expected_result)); }
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); }