Exemple #1
0
        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, "Не все вершины были посещены");
        }
Exemple #2
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);
        }