2 // MonoTests.System.Xml.XPathNavigatorTests
5 // Jason Diamond <jason@injektilo.org>
7 // (C) 2002 Jason Diamond
12 using System.Xml.XPath;
14 using NUnit.Framework;
16 namespace MonoTests.System.Xml
18 public class XPathNavigatorTests : TestCase
20 public XPathNavigatorTests () : base ("MonoTests.System.Xml.XPathNavigatorTests testsuite") {}
21 public XPathNavigatorTests (string name) : base (name) {}
23 public void TestCreateNavigator ()
25 XmlDocument document = new XmlDocument ();
26 document.LoadXml ("<foo />");
27 XPathNavigator navigator = document.CreateNavigator ();
28 AssertNotNull (navigator);
31 public void TestPropertiesOnDocument ()
33 XmlDocument document = new XmlDocument ();
34 document.LoadXml ("<foo:bar xmlns:foo='#foo' />");
35 XPathNavigator navigator = document.CreateNavigator ();
37 AssertEquals (XPathNodeType.Root, navigator.NodeType);
38 AssertEquals (String.Empty, navigator.Name);
39 AssertEquals (String.Empty, navigator.LocalName);
40 AssertEquals (String.Empty, navigator.NamespaceURI);
41 AssertEquals (String.Empty, navigator.Prefix);
42 Assert (!navigator.HasAttributes);
43 Assert (navigator.HasChildren);
44 Assert (!navigator.IsEmptyElement);
47 public void TestPropertiesOnElement ()
49 XmlDocument document = new XmlDocument ();
50 document.LoadXml ("<foo:bar xmlns:foo='#foo' />");
51 XPathNavigator navigator = document.DocumentElement.CreateNavigator ();
53 AssertEquals (XPathNodeType.Element, navigator.NodeType);
54 AssertEquals ("foo:bar", navigator.Name);
55 AssertEquals ("bar", navigator.LocalName);
56 AssertEquals ("#foo", navigator.NamespaceURI);
57 AssertEquals ("foo", navigator.Prefix);
58 Assert (!navigator.HasAttributes);
59 Assert (!navigator.HasChildren);
60 Assert (navigator.IsEmptyElement);
63 public void TestPropertiesOnAttribute ()
65 XmlDocument document = new XmlDocument ();
66 document.LoadXml ("<foo bar:baz='quux' xmlns:bar='#bar' />");
67 XPathNavigator navigator = document.DocumentElement.GetAttributeNode("baz", "#bar").CreateNavigator ();
69 AssertEquals (XPathNodeType.Attribute, navigator.NodeType);
70 AssertEquals ("bar:baz", navigator.Name);
71 AssertEquals ("baz", navigator.LocalName);
72 AssertEquals ("#bar", navigator.NamespaceURI);
73 AssertEquals ("bar", navigator.Prefix);
74 Assert (!navigator.HasAttributes);
75 Assert (!navigator.HasChildren);
76 Assert (!navigator.IsEmptyElement);
79 public void TestNavigation ()
81 XmlDocument document = new XmlDocument ();
82 document.LoadXml ("<foo><bar /><baz /></foo>");
83 XPathNavigator navigator = document.DocumentElement.CreateNavigator ();
85 AssertEquals ("foo", navigator.Name);
86 Assert (navigator.MoveToFirstChild ());
87 AssertEquals ("bar", navigator.Name);
88 Assert (navigator.MoveToNext ());
89 AssertEquals ("baz", navigator.Name);
90 Assert (!navigator.MoveToNext ());
91 AssertEquals ("baz", navigator.Name);
92 Assert (navigator.MoveToPrevious ());
93 AssertEquals ("bar", navigator.Name);
94 Assert (!navigator.MoveToPrevious ());
95 Assert (navigator.MoveToParent ());
96 AssertEquals ("foo", navigator.Name);
97 navigator.MoveToRoot ();
98 AssertEquals (XPathNodeType.Root, navigator.NodeType);
99 Assert (!navigator.MoveToParent ());
100 AssertEquals (XPathNodeType.Root, navigator.NodeType);
101 Assert (navigator.MoveToFirstChild ());
102 AssertEquals ("foo", navigator.Name);
103 Assert (navigator.MoveToFirst ());
104 AssertEquals ("foo", navigator.Name);
105 Assert (navigator.MoveToFirstChild ());
106 AssertEquals ("bar", navigator.Name);
107 Assert (navigator.MoveToNext ());
108 AssertEquals ("baz", navigator.Name);
109 Assert (navigator.MoveToFirst ());
110 AssertEquals ("bar", navigator.Name);
113 public void TestMoveToAndIsSamePosition ()
115 XmlDocument document1 = new XmlDocument ();
116 document1.LoadXml ("<foo><bar /></foo>");
117 XPathNavigator navigator1a = document1.DocumentElement.CreateNavigator ();
118 XPathNavigator navigator1b = document1.DocumentElement.CreateNavigator ();
120 XmlDocument document2 = new XmlDocument ();
121 document2.LoadXml ("<foo><bar /></foo>");
122 XPathNavigator navigator2 = document2.DocumentElement.CreateNavigator ();
124 AssertEquals ("foo", navigator1a.Name);
125 Assert (navigator1a.MoveToFirstChild ());
126 AssertEquals ("bar", navigator1a.Name);
128 Assert (!navigator1b.IsSamePosition (navigator1a));
129 AssertEquals ("foo", navigator1b.Name);
130 Assert (navigator1b.MoveTo (navigator1a));
131 Assert (navigator1b.IsSamePosition (navigator1a));
132 AssertEquals ("bar", navigator1b.Name);
134 Assert (!navigator2.IsSamePosition (navigator1a));
135 AssertEquals ("foo", navigator2.Name);
136 Assert (!navigator2.MoveTo (navigator1a));
137 AssertEquals ("foo", navigator2.Name);
140 public void TestAttributeNavigation ()
142 XmlDocument document = new XmlDocument ();
143 document.LoadXml ("<foo bar='baz' quux='quuux' />");
144 XPathNavigator navigator = document.DocumentElement.CreateNavigator ();
146 AssertEquals (XPathNodeType.Element, navigator.NodeType);
147 AssertEquals ("foo", navigator.Name);
148 Assert (navigator.MoveToFirstAttribute ());
149 AssertEquals (XPathNodeType.Attribute, navigator.NodeType);
150 AssertEquals ("bar", navigator.Name);
151 AssertEquals ("baz", navigator.Value);
152 Assert (navigator.MoveToNextAttribute ());
153 AssertEquals (XPathNodeType.Attribute, navigator.NodeType);
154 AssertEquals ("quux", navigator.Name);
155 AssertEquals ("quuux", navigator.Value);
158 public void TestElementAndRootValues()
160 XmlDocument document = new XmlDocument ();
161 document.LoadXml ("<foo><bar>baz</bar><quux>quuux</quux></foo>");
162 XPathNavigator navigator = document.DocumentElement.CreateNavigator ();
164 AssertEquals (XPathNodeType.Element, navigator.NodeType);
165 AssertEquals ("foo", navigator.Name);
166 //AssertEquals ("bazquuux", navigator.Value);
168 navigator.MoveToRoot ();
169 //AssertEquals ("bazquuux", navigator.Value);