public void EnumerateWithNoChildren() { var tree = new Tree<int>(7, EnumeratorOrder.DepthFirstSearch); Assert.AreEqual(7, tree.AsEnumerable().First()); tree.Order = EnumeratorOrder.BreadthFirstSearch; Assert.AreEqual(7, tree.AsEnumerable().First()); var subtree = new Tree<int>(5, EnumeratorOrder.BreadthFirstSearch); tree.Add(subtree); Assert.AreEqual(5, tree.AsEnumerable().Last()); tree.Order = EnumeratorOrder.DepthFirstSearch; Assert.AreEqual(5, tree.AsEnumerable().Last()); }
public void EnumeratorValidation() { var implementedInterfaces = typeof(Tree<int>).GetInterfaces(); Assert.IsTrue(implementedInterfaces.Contains(typeof(IEnumerable<int>))); var subtree = new Tree<int>(5, EnumeratorOrder.BreadthFirstSearch) { 1, 2 }; var tree = new Tree<int>(7, EnumeratorOrder.BreadthFirstSearch) { subtree, 10, 15 }; Assert.AreEqual(10, tree.First(i => i % 2 == 0)); var bfs = new int[] { 7, 5, 10, 15, 1, 2 }; var maybeBfs = tree.AsEnumerable().ToArray(); Assert.AreEqual(bfs.Length, maybeBfs.Length); for (int i = 0; i < bfs.Length; i++) { Assert.AreEqual(bfs[i], maybeBfs[i]); } tree.Order = EnumeratorOrder.DepthFirstSearch; Assert.AreEqual(2, tree.First(i => i % 2 == 0)); var dfs = new int[] { 7, 5, 1, 2, 10, 15 }; var maybeDfs = tree.AsEnumerable().ToArray(); Assert.AreEqual(dfs.Length, maybeDfs.Length); for (int i = 0; i < dfs.Length; i++) { Assert.AreEqual(dfs[i], maybeDfs[i]); } }