2009-06-12 Bill Holmes <billholmes54@gmail.com>
[mono.git] / mcs / class / System.XML / Test / System.Xml / XmlDocumentTypeTests.cs
1 //
2 // System.Xml.XmlDocumentTypeTests.cs
3 //
4 // Author: Duncan Mak  (duncan@ximian.com)
5 // Author: Martin Willemoes Hansen (mwh@sysrq.dk)
6 //
7 // (C) Ximian, Inc.
8 // (C) 2003 Martin Willemoes Hansen
9 //
10
11 using System;
12 using System.Xml;
13
14 using NUnit.Framework;
15
16 namespace MonoTests.System.Xml
17 {
18         [TestFixture]
19         public class XmlDocumentTypeTests : Assertion
20         {
21                 XmlDocument document;
22                 XmlDocumentType docType;
23
24                 [SetUp]
25                 public void GetReady ()
26                 {
27                         document = new XmlDocument ();
28                         docType = document.CreateDocumentType ("book", null, null, "<!ELEMENT book ANY>");
29                         document.AppendChild (docType);
30                 }
31
32                 internal void XmlNodeBaseProperties (XmlNode original, XmlNode cloned)
33                 {
34 //                      assertequals (original.nodetype + " was incorrectly cloned.",
35 //                                    original.baseuri, cloned.baseuri);                        
36
37                         AssertNull (cloned.ParentNode);
38                         AssertEquals ("Value incorrectly cloned",
39                                       original.Value, cloned.Value);
40
41                         Assert ("Copies, not pointers", !Object.ReferenceEquals (original, cloned));
42                 }
43
44                 [Test]
45                 public void Name ()
46                 {
47                         AssertEquals ("Getting Name property", "book", docType.Name);
48                 }
49
50                 [Test]
51                 public void LocalName ()
52                 {
53                         AssertEquals ("Getting LocalName property", "book", docType.LocalName);
54                 }
55
56                 [Test]
57                 public void InternalSubset ()
58                 {
59                         AssertEquals ("Getting Internal Subset property",
60                                       "<!ELEMENT book ANY>", docType.InternalSubset);
61                 }
62
63                 [Test]
64                 public void AppendChild ()
65                 {
66                         try {
67                                 XmlDocumentType type1 = document.CreateDocumentType ("book", null, null, null);
68                                 document.AppendChild (type1);
69
70                         } catch (InvalidOperationException) {
71                                 return;
72
73                         } catch (Exception) {                           
74                                 Fail ("Incorrect Exception thrown.");
75                         }
76                 }
77
78                 [Test]
79                 public void NodeType ()
80                 {
81                         AssertEquals ("NodeType property broken",
82                                       docType.NodeType.ToString (), "DocumentType");
83                 }
84                 
85                 [Test]
86                 public void IsReadOnly ()
87                 {
88                         AssertEquals ("IsReadOnly property", "True", docType.IsReadOnly.ToString ());
89                 }
90
91                 [Test]
92                 [ExpectedException (typeof (XmlException))]
93                 public void IncorrectInternalSubset ()
94                 {
95                         XmlDocument doc = new XmlDocument ();
96                         XmlDocumentType doctype = doc.CreateDocumentType (
97                                 "root", "public-hogehoge", null,
98                                 "invalid_intsubset");
99                         doctype = doc.CreateDocumentType ("root",
100                                 "public-hogehoge", null, 
101                                 "<!ENTITY % pe1 '>'> <!ELEMENT e EMPTY%pe1;");
102                 }
103
104                 [Test]
105                 public void CloneNode ()
106                 {
107                         XmlNode original = docType;
108
109                         XmlNode cloned1 = docType.CloneNode (true);
110                         XmlNodeBaseProperties (original, cloned1);
111
112                         XmlNode cloned2 = docType.CloneNode (false);
113                         XmlNodeBaseProperties (original, cloned2);
114
115                         AssertEquals ("Deep and shallow cloning", cloned1.Value, cloned2.Value);
116                 }
117                
118         }
119 }