public void Should_ReturnTWoRoot_When_TreeHasTwoElements()
        {
            var tree = new Dictionary <Node, List <Node> >();

            tree[new Node {
                     NodeId = 1
                 }] = new List <Node> {
                new Node {
                    NodeId = 2
                }
            };
            tree[new Node {
                     NodeId = 2
                 }] = new List <Node> {
                new Node {
                    NodeId = 1
                }
            };
            var treeGraphPropagation = new TreeGraphPropagation <Node>(tree);

            var result = treeGraphPropagation.GetOptimisedRoot();

            Assert.AreEqual(result[0].RootNode.NodeId, 1);
            Assert.AreEqual(result[0].Propagation, 1);
            Assert.AreEqual(result[1].RootNode.NodeId, 2);
            Assert.AreEqual(result[1].Propagation, 1);
        }
        public void Should_ReturnOneRoot_When_TestFile10()
        {
            var tree = GetDataFromFile(@"TestFile\Test10.txt");
            var treeGraphPropagation = new TreeGraphPropagation <Node>(tree);

            var result = treeGraphPropagation.GetOptimisedRoot();

            Assert.AreEqual(result[0].RootNode.NodeId, 1);
            Assert.AreEqual(result[0].Propagation, 5);
        }
        public void Should_ReturnTheOnlyElement_When_TreeHasOneElement()
        {
            var tree = new Dictionary <Node, List <Node> >();

            tree[new Node {
                     NodeId = 1
                 }] = new List <Node>();
            var treeGraphPropagation = new TreeGraphPropagation <Node>(tree);

            var result = treeGraphPropagation.GetOptimisedRoot();

            Assert.AreEqual(result[0].RootNode.NodeId, 1);
            Assert.AreEqual(result[0].Propagation, 0);
        }
        public void Should_ReturnOneRoot_When_Tree()
        {
            var tree = new Dictionary <Node, List <Node> >();

            tree[new Node {
                     NodeId = 1
                 }] = new List <Node> {
                new Node {
                    NodeId = 2
                }
            };
            tree[new Node {
                     NodeId = 2
                 }] = new List <Node> {
                new Node {
                    NodeId = 1
                }, new Node {
                    NodeId = 4
                }, new Node {
                    NodeId = 3
                }
            };
            tree[new Node {
                     NodeId = 3
                 }] = new List <Node> {
                new Node {
                    NodeId = 7
                }, new Node {
                    NodeId = 8
                }, new Node {
                    NodeId = 2
                }
            };
            tree[new Node {
                     NodeId = 4
                 }] = new List <Node> {
                new Node {
                    NodeId = 5
                }, new Node {
                    NodeId = 6
                }, new Node {
                    NodeId = 2
                }
            };
            tree[new Node {
                     NodeId = 5
                 }] = new List <Node> {
                new Node {
                    NodeId = 4
                }
            };
            tree[new Node {
                     NodeId = 6
                 }] = new List <Node> {
                new Node {
                    NodeId = 4
                }
            };
            tree[new Node {
                     NodeId = 7
                 }] = new List <Node> {
                new Node {
                    NodeId = 3
                }
            };
            tree[new Node {
                     NodeId = 8
                 }] = new List <Node> {
                new Node {
                    NodeId = 3
                }
            };
            var treeGraphPropagation = new TreeGraphPropagation <Node>(tree);

            var result = treeGraphPropagation.GetOptimisedRoot();

            Assert.AreEqual(result[0].RootNode.NodeId, 2);
            Assert.AreEqual(result[0].Propagation, 2);
        }
        public void Should_ReturnEmptyRoot_When_TreeIsEmpty()
        {
            var treeGraphPropagation = new TreeGraphPropagation <Node>(null);

            Assert.IsNull(treeGraphPropagation.GetOptimisedRoot());
        }