// // System.Xml.XmlEntityReference.cs // // Authors: // Atsushi Enomoto // Martin Willemoes Hansen // // (C) 2002 Atsushi Enomoto // (C) 2003 Martin Willemoes Hansen // using System; using System.Xml; using NUnit.Framework; namespace MonoTests.System.Xml { [TestFixture] public class XmlEntityReferenceTests : Assertion { [Test] public void WriteTo () { XmlDocument doc = new XmlDocument(); doc.LoadXml(""); XmlEntityReference er = doc.CreateEntityReference("foo"); doc.DocumentElement.AppendChild(er); AssertEquals ("Name", "foo", er.Name); AssertEquals ("WriteTo", "&foo;", doc.DocumentElement.OuterXml); } [Test] public void DescendantsRecursively () { string dtd = "" + "" + "" + "]>"; string xml = dtd + "&ent;"; XmlTextReader xtr = new XmlTextReader (xml, XmlNodeType.Document, null); XmlDocument doc = new XmlDocument (); doc.Load (xtr); XmlEntity ent = (XmlEntity) doc.DocumentType.Entities.GetNamedItem ("ent2"); AssertEquals ("ent2", ent.Name); AssertEquals ("my ", ent.FirstChild.Value); AssertNotNull (ent.FirstChild.NextSibling.FirstChild); AssertEquals ("value", ent.FirstChild.NextSibling.FirstChild.Value); } [Test] public void ChildNodes () { XmlTextReader xtr = new XmlTextReader ("hoge'>]>", XmlNodeType.Document, null); XmlDocument doc = new XmlDocument (); doc.Load (xtr); XmlEntityReference ent = doc.CreateEntityReference ("ent"); // ChildNodes are not added yet. AssertNull (ent.FirstChild); doc.DocumentElement.AppendChild (ent); // ChildNodes are added here. AssertNotNull (ent.FirstChild); ent = doc.CreateEntityReference ("foo"); AssertNull (ent.FirstChild); // Entity value is empty when the matching DTD entity // node does not exist. doc.DocumentElement.AppendChild (ent); AssertNotNull (ent.FirstChild); AssertEquals (String.Empty, ent.FirstChild.Value); ent = doc.CreateEntityReference ("el"); AssertEquals ("", ent.InnerText); doc.DocumentElement.AppendChild (ent); AssertEquals ("hoge", ent.InnerXml); AssertEquals ("hoge", ent.InnerText); AssertEquals (XmlNodeType.Element, ent.FirstChild.NodeType); } } }