2 // System.Xml.XmlEntityReference.cs
5 // Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
6 // Martin Willemoes Hansen <mwh@sysrq.dk>
8 // (C) 2002 Atsushi Enomoto
9 // (C) 2003 Martin Willemoes Hansen
14 using NUnit
.Framework
;
16 namespace MonoTests
.System
.Xml
19 public class XmlEntityReferenceTests
: Assertion
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
);
33 public void DescendantsRecursively ()
35 string dtd
= "<!DOCTYPE root [<!ELEMENT root (#PCDATA)*>"
36 + "<!ENTITY ent 'value'>"
37 + "<!ENTITY ent2 'my &ent; string'>"
39 string xml
= dtd
+ "<root>&ent;</root>";
40 XmlTextReader xtr
= new XmlTextReader (xml
, XmlNodeType
.Document
, null);
41 XmlDocument doc
= new XmlDocument ();
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
);
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 ();
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
);