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); }
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); }
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); }
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); }
public void AddNullToTopology_DoesNotThrow() { var algorithm = new NodeToposort2(3); Assert.DoesNotThrow(() => algorithm.AddToTopology(null)); }