Ejemplo n.º 1
0
        public void AllRefsToSingle_SingleItemAppears()
        {
            var n1      = CreateNode("1");
            var n2      = CreateNode("2");
            var n3      = CreateNode("3");
            var central = CreateNode("C");

            n1.State = new StateRefTo(central);
            n2.State = new StateRefTo(central);
            n3.State = new StateRefTo(central);
            var algorithm = new NodeToposort2(3);

            algorithm.AddToTopology(n2);
            algorithm.AddToTopology(n1);
            algorithm.AddToTopology(central);
            algorithm.AddToTopology(n3);

            algorithm.OptimizeTopology();

            Assert.AreEqual(1, algorithm.NonReferenceOrdered.Length);
            Assert.AreEqual(central, algorithm.NonReferenceOrdered[0]);
            Assert.IsEmpty(algorithm.NonReferenceOrdered[0].Ancestors);
            Assert.IsEmpty(n1.Ancestors);
            Assert.IsEmpty(n2.Ancestors);
            Assert.IsEmpty(n3.Ancestors);
        }
Ejemplo n.º 2
0
        public void NotObviousFourRefCycle()
        {
            var n1 = CreateNode("1");
            var n2 = CreateNode("2");
            var n3 = CreateNode("3");
            var n4 = CreateNode("4");

            n1.State = new StateRefTo(n2);
            n3.State = new StateRefTo(n1);
            n2.State = new StateRefTo(n4);
            var algorithm = new NodeToposort2(3);

            algorithm.AddToTopology(n3);
            algorithm.AddToTopology(n2);
            algorithm.AddToTopology(n1);
            algorithm.AddToTopology(n4);

            algorithm.OptimizeTopology();

            Assert.AreEqual(1, algorithm.NonReferenceOrdered.Length);
            Assert.AreEqual(n4, algorithm.NonReferenceOrdered[0]);
            Assert.IsEmpty(algorithm.NonReferenceOrdered[0].Ancestors);
            Assert.IsEmpty(n1.Ancestors);
            Assert.IsEmpty(n2.Ancestors);
            Assert.IsEmpty(n3.Ancestors);
        }
Ejemplo n.º 3
0
        public void ThreeNodesAncestorLine()
        {
            var n1 = CreateNode("1");
            var n2 = CreateNode("2");
            var n3 = CreateNode("3");

            n1.AddAncestor(n3);
            n2.AddAncestor(n1);

            var algorithm = new NodeToposort2(3);

            algorithm.AddToTopology(n1);
            algorithm.AddToTopology(n2);
            algorithm.AddToTopology(n3);
            algorithm.OptimizeTopology();
            CollectionAssert.AreEqual(new [] { n2, n1, n3 }, algorithm.NonReferenceOrdered);
        }
Ejemplo n.º 4
0
        public void ThreeAncestorsCycle_HasSingleNodeWithNoAncestors()
        {
            var n1 = CreateNode("1");
            var n2 = CreateNode("2");
            var n3 = CreateNode("3");

            n1.AddAncestor(n3);
            n2.AddAncestor(n1);
            n3.AddAncestor(n2);

            var algorithm = new NodeToposort2(3);

            algorithm.AddToTopology(n1);
            algorithm.AddToTopology(n2);
            algorithm.AddToTopology(n3);
            algorithm.OptimizeTopology();

            Assert.AreEqual(1, algorithm.NonReferenceOrdered.Length);
            Assert.IsEmpty(algorithm.NonReferenceOrdered[0].Ancestors);
            Assert.IsEmpty(n1.Ancestors);
            Assert.IsEmpty(n2.Ancestors);
            Assert.IsEmpty(n3.Ancestors);
        }
Ejemplo n.º 5
0
        public void AddNullToTopology_DoesNotThrow()
        {
            var algorithm = new NodeToposort2(3);

            Assert.DoesNotThrow(() => algorithm.AddToTopology(null));
        }