XPathNavigatorTests.cs 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. //
  2. // MonoTests.System.Xml.XPathNavigatorTests
  3. //
  4. // Authors:
  5. // Jason Diamond <[email protected]>
  6. // Martin Willemoes Hansen <[email protected]>
  7. //
  8. // (C) 2002 Jason Diamond
  9. // (C) 2003 Martin Willemoes Hansen
  10. //
  11. using System;
  12. using System.Xml;
  13. using System.Xml.XPath;
  14. using NUnit.Framework;
  15. namespace MonoTests.System.Xml
  16. {
  17. [TestFixture]
  18. public class XPathNavigatorTests
  19. {
  20. XmlDocument document;
  21. XPathNavigator navigator;
  22. [SetUp]
  23. public void GetReady ()
  24. {
  25. document = new XmlDocument ();
  26. }
  27. [Test]
  28. public void CreateNavigator ()
  29. {
  30. document.LoadXml ("<foo />");
  31. navigator = document.CreateNavigator ();
  32. Assertion.AssertNotNull (navigator);
  33. }
  34. [Test]
  35. public void PropertiesOnDocument ()
  36. {
  37. document.LoadXml ("<foo:bar xmlns:foo='#foo' />");
  38. navigator = document.CreateNavigator ();
  39. Assertion.AssertEquals (XPathNodeType.Root, navigator.NodeType);
  40. Assertion.AssertEquals (String.Empty, navigator.Name);
  41. Assertion.AssertEquals (String.Empty, navigator.LocalName);
  42. Assertion.AssertEquals (String.Empty, navigator.NamespaceURI);
  43. Assertion.AssertEquals (String.Empty, navigator.Prefix);
  44. Assertion.Assert (!navigator.HasAttributes);
  45. Assertion.Assert (navigator.HasChildren);
  46. Assertion.Assert (!navigator.IsEmptyElement);
  47. }
  48. [Test]
  49. public void PropertiesOnElement ()
  50. {
  51. document.LoadXml ("<foo:bar xmlns:foo='#foo' />");
  52. navigator = document.DocumentElement.CreateNavigator ();
  53. Assertion.AssertEquals (XPathNodeType.Element, navigator.NodeType);
  54. Assertion.AssertEquals ("foo:bar", navigator.Name);
  55. Assertion.AssertEquals ("bar", navigator.LocalName);
  56. Assertion.AssertEquals ("#foo", navigator.NamespaceURI);
  57. Assertion.AssertEquals ("foo", navigator.Prefix);
  58. Assertion.Assert (!navigator.HasAttributes);
  59. Assertion.Assert (!navigator.HasChildren);
  60. Assertion.Assert (navigator.IsEmptyElement);
  61. }
  62. [Test]
  63. public void PropertiesOnAttribute ()
  64. {
  65. document.LoadXml ("<foo bar:baz='quux' xmlns:bar='#bar' />");
  66. navigator = document.DocumentElement.GetAttributeNode("baz", "#bar").CreateNavigator ();
  67. Assertion.AssertEquals (XPathNodeType.Attribute, navigator.NodeType);
  68. Assertion.AssertEquals ("bar:baz", navigator.Name);
  69. Assertion.AssertEquals ("baz", navigator.LocalName);
  70. Assertion.AssertEquals ("#bar", navigator.NamespaceURI);
  71. Assertion.AssertEquals ("bar", navigator.Prefix);
  72. Assertion.Assert (!navigator.HasAttributes);
  73. Assertion.Assert (!navigator.HasChildren);
  74. Assertion.Assert (!navigator.IsEmptyElement);
  75. }
  76. [Test]
  77. public void Navigation ()
  78. {
  79. document.LoadXml ("<foo><bar /><baz /></foo>");
  80. navigator = document.DocumentElement.CreateNavigator ();
  81. Assertion.AssertEquals ("foo", navigator.Name);
  82. Assertion.Assert (navigator.MoveToFirstChild ());
  83. Assertion.AssertEquals ("bar", navigator.Name);
  84. Assertion.Assert (navigator.MoveToNext ());
  85. Assertion.AssertEquals ("baz", navigator.Name);
  86. Assertion.Assert (!navigator.MoveToNext ());
  87. Assertion.AssertEquals ("baz", navigator.Name);
  88. Assertion.Assert (navigator.MoveToPrevious ());
  89. Assertion.AssertEquals ("bar", navigator.Name);
  90. Assertion.Assert (!navigator.MoveToPrevious ());
  91. Assertion.Assert (navigator.MoveToParent ());
  92. Assertion.AssertEquals ("foo", navigator.Name);
  93. navigator.MoveToRoot ();
  94. Assertion.AssertEquals (XPathNodeType.Root, navigator.NodeType);
  95. Assertion.Assert (!navigator.MoveToParent ());
  96. Assertion.AssertEquals (XPathNodeType.Root, navigator.NodeType);
  97. Assertion.Assert (navigator.MoveToFirstChild ());
  98. Assertion.AssertEquals ("foo", navigator.Name);
  99. Assertion.Assert (navigator.MoveToFirst ());
  100. Assertion.AssertEquals ("foo", navigator.Name);
  101. Assertion.Assert (navigator.MoveToFirstChild ());
  102. Assertion.AssertEquals ("bar", navigator.Name);
  103. Assertion.Assert (navigator.MoveToNext ());
  104. Assertion.AssertEquals ("baz", navigator.Name);
  105. Assertion.Assert (navigator.MoveToFirst ());
  106. Assertion.AssertEquals ("bar", navigator.Name);
  107. }
  108. [Test]
  109. public void MoveToAndIsSamePosition ()
  110. {
  111. XmlDocument document1 = new XmlDocument ();
  112. document1.LoadXml ("<foo><bar /></foo>");
  113. XPathNavigator navigator1a = document1.DocumentElement.CreateNavigator ();
  114. XPathNavigator navigator1b = document1.DocumentElement.CreateNavigator ();
  115. XmlDocument document2 = new XmlDocument ();
  116. document2.LoadXml ("<foo><bar /></foo>");
  117. XPathNavigator navigator2 = document2.DocumentElement.CreateNavigator ();
  118. Assertion.AssertEquals ("foo", navigator1a.Name);
  119. Assertion.Assert (navigator1a.MoveToFirstChild ());
  120. Assertion.AssertEquals ("bar", navigator1a.Name);
  121. Assertion.Assert (!navigator1b.IsSamePosition (navigator1a));
  122. Assertion.AssertEquals ("foo", navigator1b.Name);
  123. Assertion.Assert (navigator1b.MoveTo (navigator1a));
  124. Assertion.Assert (navigator1b.IsSamePosition (navigator1a));
  125. Assertion.AssertEquals ("bar", navigator1b.Name);
  126. Assertion.Assert (!navigator2.IsSamePosition (navigator1a));
  127. Assertion.AssertEquals ("foo", navigator2.Name);
  128. Assertion.Assert (!navigator2.MoveTo (navigator1a));
  129. Assertion.AssertEquals ("foo", navigator2.Name);
  130. }
  131. [Test]
  132. public void AttributeNavigation ()
  133. {
  134. document.LoadXml ("<foo bar='baz' quux='quuux' />");
  135. navigator = document.DocumentElement.CreateNavigator ();
  136. Assertion.AssertEquals (XPathNodeType.Element, navigator.NodeType);
  137. Assertion.AssertEquals ("foo", navigator.Name);
  138. Assertion.Assert (navigator.MoveToFirstAttribute ());
  139. Assertion.AssertEquals (XPathNodeType.Attribute, navigator.NodeType);
  140. Assertion.AssertEquals ("bar", navigator.Name);
  141. Assertion.AssertEquals ("baz", navigator.Value);
  142. Assertion.Assert (navigator.MoveToNextAttribute ());
  143. Assertion.AssertEquals (XPathNodeType.Attribute, navigator.NodeType);
  144. Assertion.AssertEquals ("quux", navigator.Name);
  145. Assertion.AssertEquals ("quuux", navigator.Value);
  146. }
  147. [Test]
  148. public void ElementAndRootValues()
  149. {
  150. document.LoadXml ("<foo><bar>baz</bar><quux>quuux</quux></foo>");
  151. navigator = document.DocumentElement.CreateNavigator ();
  152. Assertion.AssertEquals (XPathNodeType.Element, navigator.NodeType);
  153. Assertion.AssertEquals ("foo", navigator.Name);
  154. //Assertion.AssertEquals ("bazquuux", navigator.Value);
  155. navigator.MoveToRoot ();
  156. //Assertion.AssertEquals ("bazquuux", navigator.Value);
  157. }
  158. [Test]
  159. public void DocumentWithXmlDeclaration ()
  160. {
  161. document.LoadXml ("<?xml version=\"1.0\" standalone=\"yes\"?>\"<Root><foo>bar</foo></Root>");
  162. navigator = document.CreateNavigator ();
  163. navigator.MoveToRoot ();
  164. navigator.MoveToFirstChild ();
  165. Assertion.AssertEquals (XPathNodeType.Element, navigator.NodeType);
  166. Assertion.AssertEquals ("Root", navigator.Name);
  167. }
  168. }
  169. }