示例#1
0
        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);
        }