2 // System.Xml.XmlNodeReaderTests
\r
5 // Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
\r
7 // (C) 2003 Atsushi Enomoto
\r
18 using NUnit.Framework;
\r
20 namespace MonoTests.System.Xml
\r
22 public class XmlNodeReaderTests : TestCase
\r
24 public XmlNodeReaderTests () : base ("MonoTests.System.Xml.NodeReaderTests testsuite") {}
\r
25 public XmlNodeReaderTests (string name) : base (name) {}
\r
27 protected override void SetUp ()
\r
29 document.LoadXml ("<root attr1='value1'><child /></root>");
\r
32 XmlDocument document = new XmlDocument ();
\r
34 // MS.NET's not-overriden XmlNodeReader.WriteStartElement(name)
\r
35 // invokes WriteStartElement(null, name, null).
\r
36 // WriteStartElement(name, ns) invokes (null, name, ns), too.
\r
37 public void TestInitialState ()
\r
39 XmlNodeReader nrdr = new XmlNodeReader (document);
\r
40 AssertEquals ("Depth", 0, nrdr.Depth);
\r
41 AssertEquals ("EOF", false, nrdr.EOF);
\r
42 AssertEquals ("HasValue", false, nrdr.HasValue);
\r
43 AssertEquals ("IsEmptyElement", false, nrdr.IsEmptyElement);
\r
44 AssertEquals ("LocalName", String.Empty, nrdr.LocalName);
\r
45 AssertEquals ("NodeType", XmlNodeType.None, nrdr.NodeType);
\r
46 AssertEquals ("ReadState", ReadState.Initial, nrdr.ReadState);
\r
49 public void TestInvalidConstruction ()
\r
53 nrdr = new XmlNodeReader (null);
\r
54 Fail ("null reference exception is preferable.");
\r
55 } catch (NullReferenceException ex) {
\r
57 nrdr = new XmlNodeReader (new XmlDocument ());
\r
59 AssertEquals ("newDoc.ReadState", ReadState.Error, nrdr.ReadState);
\r
60 AssertEquals ("newDoc.EOF", true, nrdr.EOF);
\r
61 AssertEquals ("newDoc.NodeType", XmlNodeType.None, nrdr.NodeType);
\r
62 nrdr = new XmlNodeReader (document.CreateDocumentFragment ());
\r
64 AssertEquals ("Fragment.ReadState", ReadState.Error, nrdr.ReadState);
\r
65 AssertEquals ("Fragment.EOF", true, nrdr.EOF);
\r
66 AssertEquals ("Fragment.NodeType", XmlNodeType.None, nrdr.NodeType);
\r
69 public void TestRead ()
\r
71 XmlNodeReader nrdr = new XmlNodeReader (document);
\r
73 AssertEquals ("<root>.NodeType", XmlNodeType.Element, nrdr.NodeType);
\r
74 AssertEquals ("<root>.Name", "root", nrdr.Name);
\r
75 AssertEquals ("<root>.ReadState", ReadState.Interactive, nrdr.ReadState);
\r
76 AssertEquals ("<root>.Depth", 0, nrdr.Depth);
\r
80 AssertEquals ("<child/>.Depth", 1, nrdr.Depth);
\r
81 AssertEquals ("<child/>.NodeType", XmlNodeType.Element, nrdr.NodeType);
\r
82 AssertEquals ("<child/>.Name", "child", nrdr.Name);
\r
85 AssertEquals ("</root>.Depth", 0, nrdr.Depth);
\r
86 AssertEquals ("</root>.NodeType", XmlNodeType.EndElement, nrdr.NodeType);
\r
87 AssertEquals ("</root>.Name", "root", nrdr.Name);
\r
90 AssertEquals ("end.EOF", true, nrdr.EOF);
\r
91 AssertEquals ("end.NodeType", XmlNodeType.None, nrdr.NodeType);
\r
94 public void TestReadFromElement ()
\r
96 XmlNodeReader nrdr = new XmlNodeReader (document.DocumentElement);
\r
98 AssertEquals ("<root>.NodeType", XmlNodeType.Element, nrdr.NodeType);
\r
99 AssertEquals ("<root>.Name", "root", nrdr.Name);
\r
100 AssertEquals ("<root>.ReadState", ReadState.Interactive, nrdr.ReadState);
\r
101 AssertEquals ("<root>.Depth", 0, nrdr.Depth);
\r
104 public void TestReadString ()
\r
106 XmlDocument doc = new XmlDocument ();
\r
107 doc.LoadXml ("<root>test of <b>mixed</b> string.<![CDATA[ cdata string.]]></root>");
\r
108 XmlNodeReader nrdr = new XmlNodeReader (doc);
\r
110 string s = nrdr.ReadString ();
\r
111 AssertEquals ("readString.1.ret_val", "test of ", s);
\r
112 AssertEquals ("readString.1.Name", "b", nrdr.Name);
\r
113 s = nrdr.ReadString ();
\r
114 AssertEquals ("readString.2.ret_val", "mixed", s);
\r
115 AssertEquals ("readString.2.NodeType", XmlNodeType.EndElement, nrdr.NodeType);
\r
116 s = nrdr.ReadString (); // never proceeds.
\r
117 AssertEquals ("readString.3.ret_val", String.Empty, s);
\r
118 AssertEquals ("readString.3.NodeType", XmlNodeType.EndElement, nrdr.NodeType);
\r
120 AssertEquals ("readString.4.NodeType", XmlNodeType.Text, nrdr.NodeType);
\r
121 AssertEquals ("readString.4.Value", " string.", nrdr.Value);
\r
122 s = nrdr.ReadString (); // reads the same Text node.
\r
123 AssertEquals ("readString.5.ret_val", " string. cdata string.", s);
\r
124 AssertEquals ("readString.5.NodeType", XmlNodeType.EndElement, nrdr.NodeType);
\r
127 public void TestRedInnerXml ()
\r
129 XmlDocument doc = new XmlDocument ();
\r
130 doc.LoadXml ("<root>test of <b>mixed</b> string.</root>");
\r
131 XmlNodeReader nrdr = new XmlNodeReader (doc);
\r
132 nrdr.ReadInnerXml ();
\r
133 AssertEquals ("initial.ReadState", ReadState.Error, nrdr.ReadState);
\r
134 AssertEquals ("initial.EOF", true, nrdr.EOF);
\r
135 AssertEquals ("initial.NodeType", XmlNodeType.None, nrdr.NodeType);
\r