public void Test_GetDepthFirstEnumerator()
        {
            GraphNode<string> rootGraphNode = new GraphNode<string>("root");
            GraphNode<string> leftParentGraphNode = new GraphNode<string>("leftParent");
            GraphNode<string> leftFirstChildGraphNode = new GraphNode<string>("leftFirstChild");
            GraphNode<string> leftSecondChildGraphNode = new GraphNode<string>("leftSecondChild");
            GraphNode<string> rightParentGraphNode = new GraphNode<string>("rightParent");
            GraphNode<string> rightChildGraphNode = new GraphNode<string>("rightChild");
            GraphNode<string> rightGrandChildGraphNode = new GraphNode<string>("rightGrandChild");

            rootGraphNode.AddChild(leftParentGraphNode);
            leftParentGraphNode.AddChild(leftFirstChildGraphNode);
            leftParentGraphNode.AddChild(leftSecondChildGraphNode);
            rootGraphNode.AddChild(rightParentGraphNode);
            rightParentGraphNode.AddChild(rightChildGraphNode);
            rightChildGraphNode.AddChild(rightGrandChildGraphNode);

            GraphNode<string>[] expected = new[]
            {
                rootGraphNode,
                leftParentGraphNode,
                leftFirstChildGraphNode,
                leftSecondChildGraphNode,
                rightParentGraphNode,
                rightChildGraphNode,
                rightGrandChildGraphNode
            };

            Assert.That(expected.Zip(rootGraphNode.GetDepthFirstEnumerator(), (x, y) => x.Equals(y)).All(x => x), Is.True);
        }