public void RootedNavigator() { var source = new TestSource5(); var nav = new NavigableNavigator(source, source.Get(1)); // go to (/root) /1 Assert.IsTrue(nav.MoveToFirstChild()); Assert.AreEqual(NavigableNavigator.StatePosition.Element, nav.InternalState.Position); Assert.AreEqual(1, (nav.UnderlyingObject as TestContent).Id); // go to (/root) /1/prop1 Assert.IsTrue(nav.MoveToFirstChild()); // go to (/root) /1/prop2 Assert.IsTrue(nav.MoveToNext()); // go to (/root) /1/3 Assert.IsTrue(nav.MoveToNext()); Assert.AreEqual(NavigableNavigator.StatePosition.Element, nav.InternalState.Position); Assert.AreEqual(3, (nav.UnderlyingObject as TestContent).Id); // go to (/root) /1 Assert.IsTrue(nav.MoveToParent()); Assert.AreEqual(NavigableNavigator.StatePosition.Element, nav.InternalState.Position); Assert.AreEqual(1, (nav.UnderlyingObject as TestContent).Id); // go to (/root) ie root Assert.IsTrue(nav.MoveToParent()); Assert.AreEqual(NavigableNavigator.StatePosition.Root, nav.InternalState.Position); Assert.IsFalse(nav.MoveToParent()); // can't go there Assert.IsFalse(nav.MoveToId("2")); }
public void MoveToId() { var source = new TestSource5(); var nav = new NavigableNavigator(source); // move to /root/1/3 Assert.IsTrue(nav.MoveToId("3")); Assert.AreEqual(NavigableNavigator.StatePosition.Element, nav.InternalState.Position); Assert.AreEqual(3, (nav.UnderlyingObject as TestContent).Id); // move to /root/1 Assert.IsTrue(nav.MoveToParent()); Assert.AreEqual(NavigableNavigator.StatePosition.Element, nav.InternalState.Position); Assert.AreEqual(1, (nav.UnderlyingObject as TestContent).Id); // move to /root Assert.IsTrue(nav.MoveToParent()); Assert.AreEqual(NavigableNavigator.StatePosition.Element, nav.InternalState.Position); Assert.AreEqual(-1, (nav.UnderlyingObject as TestContent).Id); // move up Assert.IsTrue(nav.MoveToParent()); Assert.AreEqual(NavigableNavigator.StatePosition.Root, nav.InternalState.Position); Assert.IsFalse(nav.MoveToParent()); // move to /root/1 Assert.IsTrue(nav.MoveToId("1")); Assert.AreEqual(NavigableNavigator.StatePosition.Element, nav.InternalState.Position); Assert.AreEqual(1, (nav.UnderlyingObject as TestContent).Id); // move to /root Assert.IsTrue(nav.MoveToParent()); Assert.AreEqual(NavigableNavigator.StatePosition.Element, nav.InternalState.Position); Assert.AreEqual(-1, (nav.UnderlyingObject as TestContent).Id); // move up Assert.IsTrue(nav.MoveToParent()); Assert.AreEqual(NavigableNavigator.StatePosition.Root, nav.InternalState.Position); Assert.IsFalse(nav.MoveToParent()); // move to /root Assert.IsTrue(nav.MoveToId("-1")); Assert.AreEqual(NavigableNavigator.StatePosition.Element, nav.InternalState.Position); Assert.AreEqual(-1, (nav.UnderlyingObject as TestContent).Id); // move up Assert.IsTrue(nav.MoveToParent()); Assert.AreEqual(NavigableNavigator.StatePosition.Root, nav.InternalState.Position); Assert.IsFalse(nav.MoveToParent()); // get lost Assert.IsFalse(nav.MoveToId("666")); }