File: XmlEntityReferenceTests.cs

package info (click to toggle)
mono 1.2.2.1-1etch1
  • links: PTS
  • area: main
  • in suites: etch
  • size: 142,720 kB
  • ctags: 256,408
  • sloc: cs: 1,495,736; ansic: 249,442; sh: 18,327; xml: 12,463; makefile: 5,046; perl: 1,248; asm: 635; yacc: 285; sql: 7
file content (82 lines) | stat: -rw-r--r-- 2,515 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
//
// System.Xml.XmlEntityReference.cs
//
// Authors:
//   Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
//   Martin Willemoes Hansen <mwh@sysrq.dk>
//
// (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("<root/>");
			XmlEntityReference er = doc.CreateEntityReference("foo");
			doc.DocumentElement.AppendChild(er);
			AssertEquals ("Name", "foo", er.Name);
			AssertEquals ("WriteTo", "<root>&foo;</root>", doc.DocumentElement.OuterXml);
		}

		[Test]
		public void DescendantsRecursively ()
		{
			string dtd = "<!DOCTYPE root [<!ELEMENT root (#PCDATA)*>"
				+ "<!ENTITY ent 'value'>"
				+ "<!ENTITY ent2 'my &ent; string'>"
				+ "]>";
			string xml = dtd + "<root>&ent;</root>";
			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 ("<!DOCTYPE root [<!ENTITY ent 'ent-value'><!ENTITY el '<foo>hoge</foo><bar/>'>]><root/>",
				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 ("<foo>hoge</foo><bar />", ent.InnerXml);
			AssertEquals ("hoge", ent.InnerText);
			AssertEquals (XmlNodeType.Element, ent.FirstChild.NodeType);
		}
	}
}