public void GetPreviousEntryWorks()
        {
            var tree = new HierarchyObjectMock("root",
                                               new HierarchyObjectMock("child1",
                                                                       new HierarchyObjectMock("child1-1"),
                                                                       new HierarchyObjectMock("child1-2",
                                                                                               new HierarchyObjectMock("child1-2-1"),
                                                                                               new HierarchyObjectMock("child1-2-2",
                                                                                                                       new HierarchyObjectMock("child1-2-2-1"))),
                                                                       new HierarchyObjectMock("child1-3",
                                                                                               new HierarchyObjectMock("child1-3-1")),
                                                                       new HierarchyObjectMock("child1-4")));

            var navigator = new HierarchyObjectNavigator();

            Assert.AreEqual("child1-4", GetPreviousItem(navigator, tree, "root"));
            Assert.AreEqual("root", GetPreviousItem(navigator, tree, "child1"));
            Assert.AreEqual("child1", GetPreviousItem(navigator, tree, "child1-1"));
            Assert.AreEqual("child1-1", GetPreviousItem(navigator, tree, "child1-2"));
            Assert.AreEqual("child1-2", GetPreviousItem(navigator, tree, "child1-2-1"));
            Assert.AreEqual("child1-2-2", GetPreviousItem(navigator, tree, "child1-2-2-1"));
            Assert.AreEqual("child1-2-2-1", GetPreviousItem(navigator, tree, "child1-3"));
            Assert.AreEqual("child1-3", GetPreviousItem(navigator, tree, "child1-3-1"));
            Assert.AreEqual("child1-3-1", GetPreviousItem(navigator, tree, "child1-4"));
        }
    public void GetPreviousEntryForSingleEntryWorks() {
      var tree = new HierarchyObjectMock("root");

      var navigator = new HierarchyObjectNavigator();
      Assert.AreEqual("root", GetPreviousItem(navigator, tree, "root"));
      Assert.AreEqual("root", GetNextItem(navigator, tree, "root"));
    }
        public void GetPreviousEntryForSingleEntryWorks()
        {
            var tree = new HierarchyObjectMock("root");

            var navigator = new HierarchyObjectNavigator();

            Assert.AreEqual("root", GetPreviousItem(navigator, tree, "root"));
            Assert.AreEqual("root", GetNextItem(navigator, tree, "root"));
        }
        private string GetNextItem(HierarchyObjectNavigator navigator, HierarchyObjectMock root, string value)
        {
            var node = FindNode(root, value);

            if (node == null)
            {
                return(null);
            }
            return(GetNextItem(navigator, node));
        }
        private string GetPreviousItem(HierarchyObjectNavigator navigator, HierarchyObjectMock tree)
        {
            var item = navigator.GetPreviousItem(tree) as HierarchyObjectMock;

            if (item == null)
            {
                return(null);
            }
            return(item.Value);
        }
 private HierarchyObjectMock FindNode(HierarchyObjectMock root, string value) {
   if (root == null)
     return null;
   if (root.Value == value)
     return root;
   foreach (var child in root.ChildMocks) {
     var result = FindNode(child, value);
     if (result != null)
       return result;
   }
   return null;
 }
 private HierarchyObjectMock FindNode(HierarchyObjectMock root, string value)
 {
     if (root == null)
     {
         return(null);
     }
     if (root.Value == value)
     {
         return(root);
     }
     foreach (var child in root.ChildMocks)
     {
         var result = FindNode(child, value);
         if (result != null)
         {
             return(result);
         }
     }
     return(null);
 }
    public void GetNextEntryWorks() {
      var tree = new HierarchyObjectMock("root",
        new HierarchyObjectMock("child1",
          new HierarchyObjectMock("child1-1"),
          new HierarchyObjectMock("child1-2",
            new HierarchyObjectMock("child1-2-1"),
            new HierarchyObjectMock("child1-2-2",
              new HierarchyObjectMock("child1-2-2-1"))),
          new HierarchyObjectMock("child1-3",
            new HierarchyObjectMock("child1-3-1")),
          new HierarchyObjectMock("child1-4")));

      var navigator = new HierarchyObjectNavigator();
      Assert.AreEqual("child1", GetNextItem(navigator, tree, "root"));
      Assert.AreEqual("child1-1", GetNextItem(navigator, tree, "child1"));
      Assert.AreEqual("child1-2", GetNextItem(navigator, tree, "child1-1"));
      Assert.AreEqual("child1-2-1", GetNextItem(navigator, tree, "child1-2"));
      Assert.AreEqual("child1-2-2", GetNextItem(navigator, tree, "child1-2-1"));
      Assert.AreEqual("child1-3", GetNextItem(navigator, tree, "child1-2-2-1"));
      Assert.AreEqual("child1-4", GetNextItem(navigator, tree, "child1-3-1"));
      Assert.AreEqual("root", GetNextItem(navigator, tree, "child1-4"));
    }
 private string GetPreviousItem(HierarchyObjectNavigator navigator, HierarchyObjectMock root, string value) {
   var node = FindNode(root, value);
   if (node == null)
     return null;
   return GetPreviousItem(navigator, node);
 }
 private string GetNextItem(HierarchyObjectNavigator navigator, HierarchyObjectMock tree) {
   var item = navigator.GetNextItem(tree) as HierarchyObjectMock;
   if (item == null)
     return null;
   return item.Value;
 }