Пример #1
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());
        }
Пример #2
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));
        }
Пример #3
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);
 }
Пример #4
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);
 }
Пример #5
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);
 }
Пример #6
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);
 }
Пример #7
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);
        }
Пример #8
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);
        }
Пример #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));
        }
Пример #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);
        }
Пример #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));
        }
Пример #12
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));
        }
Пример #13
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());
        }
Пример #14
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));
 }
Пример #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));
 }