public void Test_TrySearch_SearchId_Not_In_Tree_Returns_Null()
        {
            var tree      = BuildTreeForTest();
            var traverser = new LevelorderTraversalStrategy();

            var searchStrategy = new SearchByIdStrategy();
            var result         = searchStrategy.TrySearch(tree, 22, traverser);

            Assert.IsNull(result);
        }
        public void Test_TrySearch_SearchId_In_Tree_Returns_Corresponding_Node()
        {
            var tree      = BuildTreeForTest();
            var traverser = new LevelorderTraversalStrategy();

            var searchStrategy = new SearchByIdStrategy();
            var result         = searchStrategy.TrySearch(tree, 5, traverser);

            Assert.IsNotNull(result);
            Assert.IsTrue(result.Id == 5);
        }
        public void Test_Traverse_RootNode_Has_No_Children_RootNode_Visited()
        {
            var rootNode = new MockNode();

            _tree.RootNode = rootNode;

            var traverser = new LevelorderTraversalStrategy();

            traverser.Traverse <object>(_tree, _visitor);

            Assert.IsTrue(rootNode.WasVisisted);
            Assert.IsTrue(_visitor.NodesVisited.Count == 1);
        }
        public void Test_Traverse_RootNode_Has_Children_Tree_Visited_In_Preorder_Order()
        {
            //Preorder pattern is 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11

            var expected = new List <int> {
                1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
            };

            BuildTreeForTest();

            var traverser = new LevelorderTraversalStrategy();

            traverser.Traverse <object>(_tree, _visitor);

            Assert.IsTrue(_visitor.NodesVisited.SequenceEqual(expected));
        }