Browse Source

2003-01-21 Atsushi Enomoto <[email protected]>

	*  added XmlNodeReaderTests.cs file and added it to AllTests.cs

svn path=/trunk/mcs/; revision=10765
Atsushi Eno 23 years ago
parent
commit
33b1f7ac3a
2 changed files with 139 additions and 0 deletions
  1. 4 0
      mcs/class/System.XML/Test/ChangeLog
  2. 135 0
      mcs/class/System.XML/Test/XmlNodeReaderTests.cs

+ 4 - 0
mcs/class/System.XML/Test/ChangeLog

@@ -1,3 +1,7 @@
+2003-01-21  Atsushi Enomoto  <[email protected]>
+
+	*  added XmlNodeReaderTests.cs file and added it to AllTests.cs
+
 2003-01-19  Atsushi Enomoto  <[email protected]>
 
 	* XmlElementTests.cs : added TestWriteToDefaultNamespace test.

+ 135 - 0
mcs/class/System.XML/Test/XmlNodeReaderTests.cs

@@ -0,0 +1,135 @@
+//
+// System.Xml.XmlNodeReaderTests
+//
+// Author:
+//   Atsushi Enomoto <[email protected]>
+//
+// (C) 2003 Atsushi Enomoto
+//
+//
+
+
+
+using System;
+using System.IO;
+using System.Text;
+using System.Xml;
+
+using NUnit.Framework;
+
+namespace MonoTests.System.Xml
+{
+	public class XmlNodeReaderTests : TestCase
+	{
+		public XmlNodeReaderTests () : base ("MonoTests.System.Xml.NodeReaderTests testsuite") {}
+		public XmlNodeReaderTests (string name) : base (name) {}
+
+		protected override void SetUp ()
+		{
+			document.LoadXml ("<root attr1='value1'><child /></root>");
+		}
+
+		XmlDocument document = new XmlDocument ();
+
+		// MS.NET's not-overriden XmlNodeReader.WriteStartElement(name)
+		// invokes WriteStartElement(null, name, null). 
+		// WriteStartElement(name, ns) invokes (null, name, ns), too.
+		public void TestInitialState ()
+		{
+			XmlNodeReader nrdr = new XmlNodeReader (document);
+			AssertEquals ("Depth", 0, nrdr.Depth);
+			AssertEquals ("EOF", false, nrdr.EOF);
+			AssertEquals ("HasValue", false, nrdr.HasValue);
+			AssertEquals ("IsEmptyElement", false, nrdr.IsEmptyElement);
+			AssertEquals ("LocalName", String.Empty, nrdr.LocalName);
+			AssertEquals ("NodeType", XmlNodeType.None, nrdr.NodeType);
+			AssertEquals ("ReadState", ReadState.Initial, nrdr.ReadState);
+		}
+
+		public void TestInvalidConstruction ()
+		{
+			XmlNodeReader nrdr;
+			try {
+				nrdr = new XmlNodeReader (null);
+				Fail ("null reference exception is preferable.");
+			} catch (NullReferenceException ex) {
+			}
+			nrdr = new XmlNodeReader (new XmlDocument ());
+			nrdr.Read ();
+			AssertEquals ("newDoc.ReadState", ReadState.Error, nrdr.ReadState);
+			AssertEquals ("newDoc.EOF", true, nrdr.EOF);
+			AssertEquals ("newDoc.NodeType", XmlNodeType.None, nrdr.NodeType);
+			nrdr = new XmlNodeReader (document.CreateDocumentFragment ());
+			nrdr.Read ();
+			AssertEquals ("Fragment.ReadState", ReadState.Error, nrdr.ReadState);
+			AssertEquals ("Fragment.EOF", true, nrdr.EOF);
+			AssertEquals ("Fragment.NodeType", XmlNodeType.None, nrdr.NodeType);
+		}
+
+		public void TestRead ()
+		{
+			XmlNodeReader nrdr = new XmlNodeReader (document);
+			nrdr.Read ();
+			AssertEquals ("<root>.NodeType", XmlNodeType.Element, nrdr.NodeType);
+			AssertEquals ("<root>.Name", "root", nrdr.Name);
+			AssertEquals ("<root>.ReadState", ReadState.Interactive, nrdr.ReadState);
+			AssertEquals ("<root>.Depth", 0, nrdr.Depth);
+
+			// move to 'child'
+			nrdr.Read ();
+			AssertEquals ("<child/>.Depth", 1, nrdr.Depth);
+			AssertEquals ("<child/>.NodeType", XmlNodeType.Element, nrdr.NodeType);
+			AssertEquals ("<child/>.Name", "child", nrdr.Name);
+
+			nrdr.Read ();
+			AssertEquals ("</root>.Depth", 0, nrdr.Depth);
+			AssertEquals ("</root>.NodeType", XmlNodeType.EndElement, nrdr.NodeType);
+			AssertEquals ("</root>.Name", "root", nrdr.Name);
+
+			nrdr.Read ();
+			AssertEquals ("end.EOF", true, nrdr.EOF);
+			AssertEquals ("end.NodeType", XmlNodeType.None, nrdr.NodeType);
+		}
+
+		public void TestReadFromElement ()
+		{
+			XmlNodeReader nrdr = new XmlNodeReader (document.DocumentElement);
+			nrdr.Read ();
+			AssertEquals ("<root>.NodeType", XmlNodeType.Element, nrdr.NodeType);
+			AssertEquals ("<root>.Name", "root", nrdr.Name);
+			AssertEquals ("<root>.ReadState", ReadState.Interactive, nrdr.ReadState);
+			AssertEquals ("<root>.Depth", 0, nrdr.Depth);
+		}
+
+		public void TestReadString ()
+		{
+			XmlDocument doc = new XmlDocument ();
+			doc.LoadXml ("<root>test of <b>mixed</b> string.</root>");
+			XmlNodeReader nrdr = new XmlNodeReader (doc);
+			nrdr.Read ();
+			string s = nrdr.ReadString ();
+			AssertEquals ("readString.1.ret_val", "test of ", s);
+			AssertEquals ("readString.1.Name", "b", nrdr.Name);
+			s = nrdr.ReadString ();
+			AssertEquals ("readString.2.ret_val", "mixed", s);
+			AssertEquals ("readString.2.NodeType", XmlNodeType.EndElement, nrdr.NodeType);
+			s = nrdr.ReadString ();
+			AssertEquals ("readString.3.NodeType", XmlNodeType.EndElement, nrdr.NodeType);
+			s = nrdr.ReadString ();	// never proceeds.
+			AssertEquals ("readString.4.ret_val", String.Empty, s);
+			AssertEquals ("readString.4.NodeType", XmlNodeType.EndElement, nrdr.NodeType);
+		}
+
+		public void TestRedInnerXml ()
+		{
+			XmlDocument doc = new XmlDocument ();
+			doc.LoadXml ("<root>test of <b>mixed</b> string.</root>");
+			XmlNodeReader nrdr = new XmlNodeReader (doc);
+			nrdr.ReadInnerXml ();
+			AssertEquals ("initial.ReadState", ReadState.Error, nrdr.ReadState);
+			AssertEquals ("initial.EOF", true, nrdr.EOF);
+			AssertEquals ("initial.NodeType", XmlNodeType.None, nrdr.NodeType);
+		}
+	}
+
+}