public void test_create_pages() { WikiPage rootPage = new WikiPage("FrontPage", "some text on the root page", new List <string> { "foo", "bar" }); WikiPage child_page = new WikiPage("Child1", "a child page", new List <string> { "foo" }); rootPage.AddChild(child_page); Assert.AreEqual("FrontPage", rootPage.Title); List <string> children = new List <string>(); foreach (WikiPage p in rootPage.Children()) { children.Add(p.Title); } Assert.IsTrue(children.Contains("Child1")); List <string> parents = new List <string>(); foreach (WikiPage p in child_page.Parents()) { parents.Add(p.Title); } Assert.IsTrue(parents.Contains("FrontPage")); }
public List <WikiPage> Traverse() { List <WikiPage> visited = new List <WikiPage>(); List <WikiPage> toVisit = new List <WikiPage>(); toVisit.Add(root); while (toVisit.Count > 0) { WikiPage node = toVisit[toVisit.Count - 1]; toVisit.Remove(node); if (!visited.Contains(node)) { visited.Add(node); toVisit.AddRange(node.Children()); } } return(visited); }