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); }