// [ExpectedException(typeof(AssertFailedException))] public void TreeContainsCorrectRecuriveTreeItems() { var first = new ExtendedClassWithRecursion(); first.Name = "first"; var second = new ExtendedClassWithRecursion(); second.Name = "second"; var third = new ClassWithRecursion(); third.Name = "third"; first.Subclass = second; second.Subclass = first; first.AnotherSubclass = third; third.Subclass = second; var sourceTree = new ObjectTreeItem(first); sourceTree.CreateTree(); Trace.WriteLine(string.Join("\n", sourceTree.RecursionObjectTreeItems.Select(item => item.Parent.Item))); Assert.AreEqual(2, sourceTree.RecursionObjectTreeItems.Count); Assert.IsTrue(sourceTree.RecursionObjectTreeItems.Any(item => item.Parent.Item == second)); Assert.IsFalse(sourceTree.RecursionObjectTreeItems.Any(item => item.Parent.Item == first)); Assert.IsFalse(sourceTree.RecursionObjectTreeItems.Any(item => item.Parent.Item == third)); }
public void RecursiveItemsAreOnlyRecursiveItemsTest() { var first = new ExtendedClassWithRecursion(); first.Name = "first"; var second = new ExtendedClassWithRecursion(); second.Name = "second"; var third = new ClassWithRecursion(); third.Name = "third"; first.Subclass = second; second.Subclass = first; first.AnotherSubclass = third; third.Subclass = second; var sourceTree = new ObjectTreeItem(first); sourceTree.CreateTree(); foreach (var recursiveSourceTreeItem in sourceTree.RecursionObjectTreeItems) { //if (!ReferenceEquals(recursiveSourceTreeItem.Parent.Item, first)) if (recursiveSourceTreeItem.Item != first) { // Tree contains errors, if recursive tree items does not contain root as any of their child Trace.TraceInformation(sourceTree.ToFormattedString()); throw new Exception("<<<< BUG IN OBJECT TREE>>>>>\n" + "In: \"" + recursiveSourceTreeItem.Item + "\"\n" + "Expected Item: \"" + first + "\"\n" + "Actual Items: \"" + recursiveSourceTreeItem.ToFormattedString()); } } }
// [ExpectedException(typeof(AssertFailedException))] public void ToFormattedStringTest() { var first = new ExtendedClassWithRecursion(); first.Name = "first"; var second = new ExtendedClassWithRecursion(); second.Name = "second"; var third = new ClassWithRecursion(); third.Name = "third"; first.Subclass = second; second.Subclass = first; first.AnotherSubclass = third; third.Subclass = second; var sourceTree = new ObjectTreeItem(first); sourceTree.CreateTree(); Trace.WriteLine(sourceTree.ToFormattedString()); }