(DISTFILES): Comment out a few missing files.
[mono-project.git] / mcs / class / System.XML / Test / System.Xml / XmlEntityReferenceTests.cs
blob200dd50deb23ff813fe5d6247deb096b33db192c
1 //
2 // System.Xml.XmlEntityReference.cs
3 //
4 // Authors:
5 // Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
6 // Martin Willemoes Hansen <mwh@sysrq.dk>
7 //
8 // (C) 2002 Atsushi Enomoto
9 // (C) 2003 Martin Willemoes Hansen
12 using System;
13 using System.Xml;
14 using NUnit.Framework;
16 namespace MonoTests.System.Xml
18 [TestFixture]
19 public class XmlEntityReferenceTests : Assertion
21 [Test]
22 public void WriteTo ()
24 XmlDocument doc = new XmlDocument();
25 doc.LoadXml("<root/>");
26 XmlEntityReference er = doc.CreateEntityReference("foo");
27 doc.DocumentElement.AppendChild(er);
28 AssertEquals ("Name", "foo", er.Name);
29 AssertEquals ("WriteTo", "<root>&foo;</root>", doc.DocumentElement.OuterXml);
32 [Test]
33 public void DescendantsRecursively ()
35 string dtd = "<!DOCTYPE root [<!ELEMENT root (#PCDATA)*>"
36 + "<!ENTITY ent 'value'>"
37 + "<!ENTITY ent2 'my &ent; string'>"
38 + "]>";
39 string xml = dtd + "<root>&ent;</root>";
40 XmlTextReader xtr = new XmlTextReader (xml, XmlNodeType.Document, null);
41 XmlDocument doc = new XmlDocument ();
42 doc.Load (xtr);
43 XmlEntity ent = (XmlEntity) doc.DocumentType.Entities.GetNamedItem ("ent2");
44 AssertEquals ("ent2", ent.Name);
45 AssertEquals ("my ", ent.FirstChild.Value);
46 AssertNotNull (ent.FirstChild.NextSibling.FirstChild);
47 AssertEquals ("value", ent.FirstChild.NextSibling.FirstChild.Value);
50 [Test]
51 public void ChildNodes ()
53 XmlTextReader xtr = new XmlTextReader ("<!DOCTYPE root [<!ENTITY ent 'ent-value'><!ENTITY el '<foo>hoge</foo><bar/>'>]><root/>",
54 XmlNodeType.Document, null);
55 XmlDocument doc = new XmlDocument ();
57 doc.Load (xtr);
58 XmlEntityReference ent = doc.CreateEntityReference ("ent");
59 // ChildNodes are not added yet.
60 AssertNull (ent.FirstChild);
61 doc.DocumentElement.AppendChild (ent);
62 // ChildNodes are added here.
63 AssertNotNull (ent.FirstChild);
65 ent = doc.CreateEntityReference ("foo");
66 AssertNull (ent.FirstChild);
67 // Entity value is empty when the matching DTD entity
68 // node does not exist.
69 doc.DocumentElement.AppendChild (ent);
70 AssertNotNull (ent.FirstChild);
72 AssertEquals (String.Empty, ent.FirstChild.Value);
74 ent = doc.CreateEntityReference ("el");
75 AssertEquals ("", ent.InnerText);
76 doc.DocumentElement.AppendChild (ent);
77 AssertEquals ("<foo>hoge</foo><bar />", ent.InnerXml);
78 AssertEquals ("hoge", ent.InnerText);
79 AssertEquals (XmlNodeType.Element, ent.FirstChild.NodeType);