Exemplo n.º 1
0
 public void TestThatGraphCanBeCreatedWithTwoConnectedNodes()
 {
     var root = new SimpleNode("root");
     root.AddChild(new SimpleNode("child"));
     var graph = new GraphBuilder<SimpleNode>(GetChildren).Build(root);
     Assert.AreEqual(2, graph.Order);
 }
Exemplo n.º 2
0
 public void TestAddedNodeIsReturnedInChildEnumeration()
 {
     var child = new SimpleNode("child");
     var sn1 = new SimpleNode("test");
     sn1.AddChild(child);
     CollectionAssert.Contains(new List<SimpleNode>(sn1.GetChildren()), child);
 }
Exemplo n.º 3
0
 public void TestThatNodeTailsAreReachableThroughEnumeration()
 {
     var root = new SimpleNode("root");
     var child = new SimpleNode("child");
     root.AddChild(child);
     var graph = new GraphBuilder<SimpleNode>(GetChildren).Build(root);
     CollectionAssert.Contains(new List<SimpleNode>(graph.TailsFor(child)), root);
 }
Exemplo n.º 4
0
 public void TestThatBuilderHandlesCycle()
 {
     var root = new SimpleNode("root");
     var child = new SimpleNode("child");
     root.AddChild(child);
     child.AddChild(root);
     var graph = new GraphBuilder<SimpleNode>(GetChildren).Build(root);
     Assert.AreEqual(2, graph.Order);
 }
Exemplo n.º 5
0
        public void TestThatHeadsForRootWithTwoEdgesToChildIncludesChildTwice()
        {
            var root = new SimpleNode("root");
            var child = new SimpleNode("child");
            root.AddChild(child);
            root.AddChild(child);
            var graph = new GraphBuilder<SimpleNode>(GetChildren).Build(root);

            Assert.AreEqual(2, graph.HeadsFor(root).Count());
        }
Exemplo n.º 6
0
        public void TestThatGraphCanBeWalkedFromRoot()
        {
            var root = new SimpleNode("root");
            var child = new SimpleNode("child");
            root.AddChild(child);
            var graph = new GraphBuilder<SimpleNode>(GetChildren).Build(root);

            var result = graph.Walk().Aggregate("", (str, node) => str + node.ToString());
            Assert.AreEqual("rootchild", result);
        }
Exemplo n.º 7
0
        public void TestThatHeadsAreOrderedBasedOnInput()
        {
            var root = new SimpleNode("root");
            var child1 = new SimpleNode("child1");
            var child2 = new SimpleNode("child2");
            root.AddChild(child1);
            root.AddChild(child2);
            var graph = new GraphBuilder<SimpleNode>(GetChildren).Build(root);

            Assert.AreSame(child1, graph.HeadByIndex(root, 0));
        }
Exemplo n.º 8
0
        public void ThatThatThereIsSinglePathBetweenNodeAndItself()
        {
            var root = new SimpleNode("root");
            var graph = new GraphBuilder<SimpleNode>(GetChildren).Build(root);

            var paths = graph.FindPaths(root, root);
            Assert.AreEqual("root", DescribePaths(paths));
        }
Exemplo n.º 9
0
        public void ThatThatPathBetweenNodeAndChildContainsNodeAndChild()
        {
            var root = new SimpleNode("root");
            var child = new SimpleNode("child");
            root.AddChild(child);
            var graph = new GraphBuilder<SimpleNode>(GetChildren).Build(root);

            var paths = graph.FindPaths(root, child);
            Assert.AreEqual("root child", DescribePaths(paths));
        }
Exemplo n.º 10
0
        public void TestThatWalkingIsDepthFirst()
        {
            var root = new SimpleNode("root");
            var child11 = new SimpleNode("child11");
            var child12 = new SimpleNode("child12");
            var child111 = new SimpleNode("child111");
            root.AddChild(child11);
            root.AddChild(child12);
            child11.AddChild(child111);
            var graph = new GraphBuilder<SimpleNode>(GetChildren).Build(root);

            var result = graph.Walk().Aggregate("", (str, node) => str + node.ToString());
            Assert.AreEqual("rootchild11child111child12", result);
        }
Exemplo n.º 11
0
        public void TestThatTwoPathsAreFoundInDiamondGraph()
        {
            var root = new SimpleNode("root");
            var child1 = new SimpleNode("child1");
            var child2 = new SimpleNode("child2");
            var end = new SimpleNode("end");
            root.AddChild(child1);
            root.AddChild(child2);
            child1.AddChild(end);
            child2.AddChild(end);
            var graph = new GraphBuilder<SimpleNode>(GetChildren).Build(root);

            var paths = graph.FindPaths(root, end);
            Assert.AreEqual("root child1 end\nroot child2 end", DescribePaths(paths));
        }
Exemplo n.º 12
0
 public void TestNodesWithSameValueHaveSameHashCode()
 {
     var sn1 = new SimpleNode("test");
     var sn2 = new SimpleNode("test");
     Assert.AreEqual(sn1.GetHashCode(), sn2.GetHashCode());
 }
Exemplo n.º 13
0
 public void TestNodeHasValue()
 {
     var sn = new SimpleNode("test");
     Assert.AreEqual("test", sn.Value);
 }
Exemplo n.º 14
0
 public void AddChild(SimpleNode child)
 {
     _children.Add(child);
 }
Exemplo n.º 15
0
 public void TestThatRootHasOutDegree()
 {
     var root = new SimpleNode("root");
     var child = new SimpleNode("child");
     root.AddChild(child);
     var graph = new GraphBuilder<SimpleNode>(GetChildren).Build(root);
     Assert.AreEqual(1, graph.OutDegreeOf(root));
 }
Exemplo n.º 16
0
 public void TestNodesWithDifferentValuesAreNotEqual()
 {
     var sn1 = new SimpleNode("test");
     var sn2 = new SimpleNode("test2");
     Assert.AreNotEqual(sn1, sn2);
 }
Exemplo n.º 17
0
 public void TestNodesWithDifferentValuesHaveDifferentHashCodes()
 {
     var sn1 = new SimpleNode("test");
     var sn2 = new SimpleNode("test2");
     Assert.AreNotEqual(sn1.GetHashCode(), sn2.GetHashCode());
 }
Exemplo n.º 18
0
 public void TestNodeToStringIsValue()
 {
     var sn = new SimpleNode("test");
     Assert.AreEqual("test", sn.ToString());
 }
Exemplo n.º 19
0
 private static IEnumerable<SimpleNode> GetChildren(SimpleNode node)
 {
     return node.GetChildren();
 }
Exemplo n.º 20
0
 public void TestChildListIsInitiallyEmpty()
 {
     var sn1 = new SimpleNode("test");
     Assert.AreEqual(0, sn1.GetChildren().Count());
 }
Exemplo n.º 21
0
 public void TestThatGraphExposesRootNode()
 {
     var root = new SimpleNode("root");
     var graph = new GraphBuilder<SimpleNode>(GetChildren).Build(root);
     Assert.AreSame(root, graph.Root);
 }
Exemplo n.º 22
0
        public void TestThatTwoPathsAreFoundForTwoEdgesBetweenVertices()
        {
            var root = new SimpleNode("root");
            var child = new SimpleNode("child");
            root.AddChild(child);
            root.AddChild(child);
            var graph = new GraphBuilder<SimpleNode>(GetChildren).Build(root);

            var paths = graph.FindPaths(root, child);
            Assert.AreEqual("root child\nroot child", DescribePaths(paths));
        }
Exemplo n.º 23
0
 public void TestThatRootHeadsAreReachableThroughIndex()
 {
     var root = new SimpleNode("root");
     var child = new SimpleNode("child");
     root.AddChild(child);
     var graph = new GraphBuilder<SimpleNode>(GetChildren).Build(root);
     Assert.AreSame(child, graph.HeadByIndex(root, 0));
 }
Exemplo n.º 24
0
 public void TestNodesWithSameValueAreEqual()
 {
     var sn1 = new SimpleNode("test");
     var sn2 = new SimpleNode("test");
     Assert.AreEqual(sn1, sn2);
 }
Exemplo n.º 25
0
        public void TestThatPathsCanBeFoundWhenThereIsACycle()
        {
            var root = new SimpleNode("root");
            var child = new SimpleNode("child");
            var target = new SimpleNode("target");
            var back = new SimpleNode("back");

            root.AddChild(child);
            child.AddChild(target);
            child.AddChild(back);
            back.AddChild(root);

            var graph = new GraphBuilder<SimpleNode>(GetChildren).Build(root);

            var paths = graph.FindPaths(root, target);

            var result = string.Join("|", paths.Select(path => string.Join(",", path)));
            Assert.AreEqual("root,child,target|root,child,back,root,child,target", result);
        }
Exemplo n.º 26
0
        public void TestThatTailsForChildWithTwoEdgesToRootIncludesRootTwice()
        {
            var root = new SimpleNode("root");
            var child = new SimpleNode("child");
            root.AddChild(child);
            root.AddChild(child);
            var graph = new GraphBuilder<SimpleNode>(GetChildren).Build(root);

            Assert.AreEqual(2, graph.TailsFor(child).Count());
        }