// // System.Xml.XmlNodeReaderTests // // Author: // Atsushi Enomoto // // (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 (""); } 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 (".NodeType", XmlNodeType.Element, nrdr.NodeType); AssertEquals (".Name", "root", nrdr.Name); AssertEquals (".ReadState", ReadState.Interactive, nrdr.ReadState); AssertEquals (".Depth", 0, nrdr.Depth); // move to 'child' nrdr.Read (); AssertEquals (".Depth", 1, nrdr.Depth); AssertEquals (".NodeType", XmlNodeType.Element, nrdr.NodeType); AssertEquals (".Name", "child", nrdr.Name); nrdr.Read (); AssertEquals (".Depth", 0, nrdr.Depth); AssertEquals (".NodeType", XmlNodeType.EndElement, nrdr.NodeType); AssertEquals (".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 (".NodeType", XmlNodeType.Element, nrdr.NodeType); AssertEquals (".Name", "root", nrdr.Name); AssertEquals (".ReadState", ReadState.Interactive, nrdr.ReadState); AssertEquals (".Depth", 0, nrdr.Depth); } public void TestReadString () { XmlDocument doc = new XmlDocument (); doc.LoadXml ("test of mixed string."); 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 ("test of mixed string."); 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); } } }