XmlNodeReaderTests.cs 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. //
  2. // System.Xml.XmlNodeReaderTests
  3. //
  4. // Authors:
  5. // Atsushi Enomoto <[email protected]>
  6. // Martin Willemoes Hansen <[email protected]>
  7. //
  8. // (C) 2003 Atsushi Enomoto
  9. // (C) 2003 Martin Willemoes Hansen
  10. //
  11. //
  12. using System;
  13. using System.IO;
  14. using System.Text;
  15. using System.Xml;
  16. using NUnit.Framework;
  17. namespace MonoTests.System.Xml
  18. {
  19. [TestFixture]
  20. public class XmlNodeReaderTests
  21. {
  22. [SetUp]
  23. public void GetReady ()
  24. {
  25. document.LoadXml ("<root attr1='value1'><child /></root>");
  26. }
  27. XmlDocument document = new XmlDocument ();
  28. // MS.NET's not-overriden XmlNodeReader.WriteStartElement(name)
  29. // invokes WriteStartElement(null, name, null).
  30. // WriteStartElement(name, ns) invokes (null, name, ns), too.
  31. [Test]
  32. public void InitialState ()
  33. {
  34. XmlNodeReader nrdr = new XmlNodeReader (document);
  35. Assertion.AssertEquals ("Depth", 0, nrdr.Depth);
  36. Assertion.AssertEquals ("EOF", false, nrdr.EOF);
  37. Assertion.AssertEquals ("HasValue", false, nrdr.HasValue);
  38. Assertion.AssertEquals ("IsEmptyElement", false, nrdr.IsEmptyElement);
  39. Assertion.AssertEquals ("LocalName", String.Empty, nrdr.LocalName);
  40. Assertion.AssertEquals ("NodeType", XmlNodeType.None, nrdr.NodeType);
  41. Assertion.AssertEquals ("ReadState", ReadState.Initial, nrdr.ReadState);
  42. }
  43. [Test]
  44. public void InvalidConstruction ()
  45. {
  46. XmlNodeReader nrdr;
  47. try {
  48. nrdr = new XmlNodeReader (null);
  49. Assertion.Fail ("null reference exception is preferable.");
  50. } catch (NullReferenceException ex) {
  51. }
  52. nrdr = new XmlNodeReader (new XmlDocument ());
  53. nrdr.Read ();
  54. Assertion.AssertEquals ("newDoc.ReadState", ReadState.Error, nrdr.ReadState);
  55. Assertion.AssertEquals ("newDoc.EOF", true, nrdr.EOF);
  56. Assertion.AssertEquals ("newDoc.NodeType", XmlNodeType.None, nrdr.NodeType);
  57. nrdr = new XmlNodeReader (document.CreateDocumentFragment ());
  58. nrdr.Read ();
  59. Assertion.AssertEquals ("Fragment.ReadState", ReadState.Error, nrdr.ReadState);
  60. Assertion.AssertEquals ("Fragment.EOF", true, nrdr.EOF);
  61. Assertion.AssertEquals ("Fragment.NodeType", XmlNodeType.None, nrdr.NodeType);
  62. }
  63. [Test]
  64. public void Read ()
  65. {
  66. XmlNodeReader nrdr = new XmlNodeReader (document);
  67. nrdr.Read ();
  68. Assertion.AssertEquals ("<root>.NodeType", XmlNodeType.Element, nrdr.NodeType);
  69. Assertion.AssertEquals ("<root>.Name", "root", nrdr.Name);
  70. Assertion.AssertEquals ("<root>.ReadState", ReadState.Interactive, nrdr.ReadState);
  71. Assertion.AssertEquals ("<root>.Depth", 0, nrdr.Depth);
  72. // move to 'child'
  73. nrdr.Read ();
  74. Assertion.AssertEquals ("<child/>.Depth", 1, nrdr.Depth);
  75. Assertion.AssertEquals ("<child/>.NodeType", XmlNodeType.Element, nrdr.NodeType);
  76. Assertion.AssertEquals ("<child/>.Name", "child", nrdr.Name);
  77. nrdr.Read ();
  78. Assertion.AssertEquals ("</root>.Depth", 0, nrdr.Depth);
  79. Assertion.AssertEquals ("</root>.NodeType", XmlNodeType.EndElement, nrdr.NodeType);
  80. Assertion.AssertEquals ("</root>.Name", "root", nrdr.Name);
  81. nrdr.Read ();
  82. Assertion.AssertEquals ("end.EOF", true, nrdr.EOF);
  83. Assertion.AssertEquals ("end.NodeType", XmlNodeType.None, nrdr.NodeType);
  84. }
  85. [Test]
  86. public void ReadFromElement ()
  87. {
  88. XmlNodeReader nrdr = new XmlNodeReader (document.DocumentElement);
  89. nrdr.Read ();
  90. Assertion.AssertEquals ("<root>.NodeType", XmlNodeType.Element, nrdr.NodeType);
  91. Assertion.AssertEquals ("<root>.Name", "root", nrdr.Name);
  92. Assertion.AssertEquals ("<root>.ReadState", ReadState.Interactive, nrdr.ReadState);
  93. Assertion.AssertEquals ("<root>.Depth", 0, nrdr.Depth);
  94. }
  95. [Test]
  96. public void ReadString ()
  97. {
  98. XmlDocument doc = new XmlDocument ();
  99. doc.LoadXml ("<root>test of <b>mixed</b> string.<![CDATA[ cdata string.]]></root>");
  100. XmlNodeReader nrdr = new XmlNodeReader (doc);
  101. nrdr.Read ();
  102. string s = nrdr.ReadString ();
  103. Assertion.AssertEquals ("readString.1.ret_val", "test of ", s);
  104. Assertion.AssertEquals ("readString.1.Name", "b", nrdr.Name);
  105. s = nrdr.ReadString ();
  106. Assertion.AssertEquals ("readString.2.ret_val", "mixed", s);
  107. Assertion.AssertEquals ("readString.2.NodeType", XmlNodeType.EndElement, nrdr.NodeType);
  108. s = nrdr.ReadString (); // never proceeds.
  109. Assertion.AssertEquals ("readString.3.ret_val", String.Empty, s);
  110. Assertion.AssertEquals ("readString.3.NodeType", XmlNodeType.EndElement, nrdr.NodeType);
  111. nrdr.Read ();
  112. Assertion.AssertEquals ("readString.4.NodeType", XmlNodeType.Text, nrdr.NodeType);
  113. Assertion.AssertEquals ("readString.4.Value", " string.", nrdr.Value);
  114. s = nrdr.ReadString (); // reads the same Text node.
  115. Assertion.AssertEquals ("readString.5.ret_val", " string. cdata string.", s);
  116. Assertion.AssertEquals ("readString.5.NodeType", XmlNodeType.EndElement, nrdr.NodeType);
  117. }
  118. [Test]
  119. public void RedInnerXml ()
  120. {
  121. XmlDocument doc = new XmlDocument ();
  122. doc.LoadXml ("<root>test of <b>mixed</b> string.</root>");
  123. XmlNodeReader nrdr = new XmlNodeReader (doc);
  124. nrdr.ReadInnerXml ();
  125. Assertion.AssertEquals ("initial.ReadState", ReadState.Error, nrdr.ReadState);
  126. Assertion.AssertEquals ("initial.EOF", true, nrdr.EOF);
  127. Assertion.AssertEquals ("initial.NodeType", XmlNodeType.None, nrdr.NodeType);
  128. }
  129. }
  130. }