public void CreateTreeAndDestructItNodeByNode() { var tree = new PathTree(); var id1 = new object(); var id2 = new object(); var a = tree.AddNode(MakePath("a"), id1); var b = tree.AddNode(MakePath("a", "b"), id1); var c = tree.AddNode(MakePath("a", "b", "c"), id1); var b2 = tree.AddNode(MakePath("a", "b"), id2); Assert.AreSame(b, b2); Assert.AreSame(b.FirstChild, c); var b3 = tree.RemoveNode(MakePath("a", "b"), id1); Assert.IsNotNull(tree.FindNode(MakePath("a", "b"))); Assert.AreSame(c, b3.FirstChild); var b4 = tree.RemoveNode(MakePath("a", "b"), id2); Assert.IsNotNull(tree.FindNode(MakePath("a", "b"))); Assert.AreSame(c, b3.FirstChild); tree.RemoveNode(MakePath("a", "b", "c"), id1); Assert.IsNull(a.FirstChild); }
public void TestRemovalOfNodeAddedToTheBeginning() { var tree = new PathTree(); var c = tree.AddNode(MakePath("a", "c"), id); var b = tree.AddNode(MakePath("a", "b"), id); var a = tree.AddNode(MakePath("a", "a"), id); Assert.IsNotNull(tree.FindNode(MakePath("a", "a"))); Assert.IsNotNull(tree.FindNode(MakePath("a", "b"))); Assert.IsNotNull(tree.FindNode(MakePath("a", "c"))); tree.RemoveNode(MakePath("a", "b"), id); Assert.AreSame(c, a.Next); Assert.AreSame(a, c.Previous); tree.RemoveNode(MakePath("a", "c"), id); Assert.IsNull(a.Next); tree.RemoveNode(MakePath("a", "a"), id); Assert.IsNull(tree.FindNode(MakePath("a", "a"))); Assert.IsNull(tree.FindNode(MakePath("a", "b"))); Assert.IsNull(tree.FindNode(MakePath("a", "c"))); }
public void AssertSameNodeIsReturned() { var tree = new PathTree(); var b = tree.AddNode(MakePath("a", "b"), id); var firstA = tree.FindNode(MakePath("a")); var newA = tree.AddNode(MakePath("a"), id); Assert.AreSame(firstA, newA); Assert.AreSame(b, firstA.FirstChild); Assert.AreSame(b, firstA.LastChild); }
public void CreateTreeAndRegisterRoot() { var tree = new PathTree(); tree.AddNode(prefix, id); tree.RemoveNode(prefix, id); var node = tree.FindNode(prefix); if (Platform.IsWindows) { Assert.IsNull(node); } else { Assert.IsNotNull(node); Assert.AreEqual(false, node.IsLive); } }