XPathNavigatorTests.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. //
  2. // MonoTests.System.Xml.XPathNavigatorTests
  3. //
  4. // Author:
  5. // Jason Diamond <[email protected]>
  6. //
  7. // (C) 2002 Jason Diamond
  8. //
  9. using System;
  10. using System.Xml;
  11. using System.Xml.XPath;
  12. using NUnit.Framework;
  13. namespace MonoTests.System.Xml
  14. {
  15. public class XPathNavigatorTests : TestCase
  16. {
  17. public XPathNavigatorTests () : base ("MonoTests.System.Xml.XPathNavigatorTests testsuite") {}
  18. public XPathNavigatorTests (string name) : base (name) {}
  19. public void TestCreateNavigator ()
  20. {
  21. XmlDocument document = new XmlDocument ();
  22. document.LoadXml ("<foo />");
  23. XPathNavigator navigator = document.CreateNavigator ();
  24. AssertNotNull (navigator);
  25. }
  26. public void TestPropertiesOnDocument ()
  27. {
  28. XmlDocument document = new XmlDocument ();
  29. document.LoadXml ("<foo:bar xmlns:foo='#foo' />");
  30. XPathNavigator navigator = document.CreateNavigator ();
  31. AssertEquals (XPathNodeType.Root, navigator.NodeType);
  32. AssertEquals (String.Empty, navigator.Name);
  33. AssertEquals (String.Empty, navigator.LocalName);
  34. AssertEquals (String.Empty, navigator.NamespaceURI);
  35. AssertEquals (String.Empty, navigator.Prefix);
  36. Assert (!navigator.HasAttributes);
  37. Assert (navigator.HasChildren);
  38. Assert (!navigator.IsEmptyElement);
  39. }
  40. public void TestPropertiesOnElement ()
  41. {
  42. XmlDocument document = new XmlDocument ();
  43. document.LoadXml ("<foo:bar xmlns:foo='#foo' />");
  44. XPathNavigator navigator = document.DocumentElement.CreateNavigator ();
  45. AssertEquals (XPathNodeType.Element, navigator.NodeType);
  46. AssertEquals ("foo:bar", navigator.Name);
  47. AssertEquals ("bar", navigator.LocalName);
  48. AssertEquals ("#foo", navigator.NamespaceURI);
  49. AssertEquals ("foo", navigator.Prefix);
  50. Assert (!navigator.HasAttributes);
  51. Assert (!navigator.HasChildren);
  52. Assert (navigator.IsEmptyElement);
  53. }
  54. public void TestPropertiesOnAttribute ()
  55. {
  56. XmlDocument document = new XmlDocument ();
  57. document.LoadXml ("<foo bar:baz='quux' xmlns:bar='#bar' />");
  58. XPathNavigator navigator = document.DocumentElement.GetAttributeNode("baz", "#bar").CreateNavigator ();
  59. AssertEquals (XPathNodeType.Attribute, navigator.NodeType);
  60. AssertEquals ("bar:baz", navigator.Name);
  61. AssertEquals ("baz", navigator.LocalName);
  62. AssertEquals ("#bar", navigator.NamespaceURI);
  63. AssertEquals ("bar", navigator.Prefix);
  64. Assert (!navigator.HasAttributes);
  65. Assert (!navigator.HasChildren);
  66. Assert (!navigator.IsEmptyElement);
  67. }
  68. public void TestNavigation ()
  69. {
  70. XmlDocument document = new XmlDocument ();
  71. document.LoadXml ("<foo><bar /><baz /></foo>");
  72. XPathNavigator navigator = document.DocumentElement.CreateNavigator ();
  73. AssertEquals ("foo", navigator.Name);
  74. Assert (navigator.MoveToFirstChild ());
  75. AssertEquals ("bar", navigator.Name);
  76. Assert (navigator.MoveToNext ());
  77. AssertEquals ("baz", navigator.Name);
  78. Assert (!navigator.MoveToNext ());
  79. AssertEquals ("baz", navigator.Name);
  80. Assert (navigator.MoveToPrevious ());
  81. AssertEquals ("bar", navigator.Name);
  82. Assert (!navigator.MoveToPrevious ());
  83. Assert (navigator.MoveToParent ());
  84. AssertEquals ("foo", navigator.Name);
  85. navigator.MoveToRoot ();
  86. AssertEquals (XPathNodeType.Root, navigator.NodeType);
  87. Assert (!navigator.MoveToParent ());
  88. AssertEquals (XPathNodeType.Root, navigator.NodeType);
  89. Assert (navigator.MoveToFirstChild ());
  90. AssertEquals ("foo", navigator.Name);
  91. Assert (navigator.MoveToFirst ());
  92. AssertEquals ("foo", navigator.Name);
  93. Assert (navigator.MoveToFirstChild ());
  94. AssertEquals ("bar", navigator.Name);
  95. Assert (navigator.MoveToNext ());
  96. AssertEquals ("baz", navigator.Name);
  97. Assert (navigator.MoveToFirst ());
  98. AssertEquals ("bar", navigator.Name);
  99. }
  100. public void TestMoveToAndIsSamePosition ()
  101. {
  102. XmlDocument document1 = new XmlDocument ();
  103. document1.LoadXml ("<foo><bar /></foo>");
  104. XPathNavigator navigator1a = document1.DocumentElement.CreateNavigator ();
  105. XPathNavigator navigator1b = document1.DocumentElement.CreateNavigator ();
  106. XmlDocument document2 = new XmlDocument ();
  107. document2.LoadXml ("<foo><bar /></foo>");
  108. XPathNavigator navigator2 = document2.DocumentElement.CreateNavigator ();
  109. AssertEquals ("foo", navigator1a.Name);
  110. Assert (navigator1a.MoveToFirstChild ());
  111. AssertEquals ("bar", navigator1a.Name);
  112. Assert (!navigator1b.IsSamePosition (navigator1a));
  113. AssertEquals ("foo", navigator1b.Name);
  114. Assert (navigator1b.MoveTo (navigator1a));
  115. Assert (navigator1b.IsSamePosition (navigator1a));
  116. AssertEquals ("bar", navigator1b.Name);
  117. Assert (!navigator2.IsSamePosition (navigator1a));
  118. AssertEquals ("foo", navigator2.Name);
  119. Assert (!navigator2.MoveTo (navigator1a));
  120. AssertEquals ("foo", navigator2.Name);
  121. }
  122. public void TestAttributeNavigation ()
  123. {
  124. XmlDocument document = new XmlDocument ();
  125. document.LoadXml ("<foo bar='baz' quux='quuux' />");
  126. XPathNavigator navigator = document.DocumentElement.CreateNavigator ();
  127. AssertEquals (XPathNodeType.Element, navigator.NodeType);
  128. AssertEquals ("foo", navigator.Name);
  129. Assert (navigator.MoveToFirstAttribute ());
  130. AssertEquals (XPathNodeType.Attribute, navigator.NodeType);
  131. AssertEquals ("bar", navigator.Name);
  132. AssertEquals ("baz", navigator.Value);
  133. Assert (navigator.MoveToNextAttribute ());
  134. AssertEquals (XPathNodeType.Attribute, navigator.NodeType);
  135. AssertEquals ("quux", navigator.Name);
  136. AssertEquals ("quuux", navigator.Value);
  137. }
  138. public void TestElementAndRootValues()
  139. {
  140. XmlDocument document = new XmlDocument ();
  141. document.LoadXml ("<foo><bar>baz</bar><quux>quuux</quux></foo>");
  142. XPathNavigator navigator = document.DocumentElement.CreateNavigator ();
  143. AssertEquals (XPathNodeType.Element, navigator.NodeType);
  144. AssertEquals ("foo", navigator.Name);
  145. //AssertEquals ("bazquuux", navigator.Value);
  146. navigator.MoveToRoot ();
  147. //AssertEquals ("bazquuux", navigator.Value);
  148. }
  149. }
  150. }