* XmlSerializerTests.cs: Added some identifiers for AssertEquals.
[mono.git] / mcs / class / System.XML / Test / System.Xml / XmlDeclarationTests.cs
1 //
2 // System.Xml.XmlDeclarationTests.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 XmlDeclarationTests : Assertion
20         {
21                 XmlDocument document;
22                 XmlDeclaration declaration;
23                 
24                 [SetUp]
25                 public void GetReady ()
26                 {
27                         document = new XmlDocument ();
28                         document.LoadXml ("<foo><bar></bar></foo>");
29                         declaration = document.CreateXmlDeclaration ("1.0", null, null);
30                 }
31
32                 [Test]
33                 public void InnerAndOuterXml ()
34                 {
35                         declaration = document.CreateXmlDeclaration ("1.0", null, null);
36                         AssertEquals (String.Empty, declaration.InnerXml);
37                         AssertEquals ("<?xml version=\"1.0\"?>", declaration.OuterXml);
38
39                         declaration = document.CreateXmlDeclaration ("1.0", "doesn't check", null);
40                         AssertEquals (String.Empty, declaration.InnerXml);
41                         AssertEquals ("<?xml version=\"1.0\" encoding=\"doesn't check\"?>", declaration.OuterXml);
42
43                         declaration = document.CreateXmlDeclaration ("1.0", null, "yes");
44                         AssertEquals (String.Empty, declaration.InnerXml);
45                         AssertEquals ("<?xml version=\"1.0\" standalone=\"yes\"?>", declaration.OuterXml);
46
47                         declaration = document.CreateXmlDeclaration ("1.0", "foo", "no");
48                         AssertEquals (String.Empty, declaration.InnerXml);
49                         AssertEquals ("<?xml version=\"1.0\" encoding=\"foo\" standalone=\"no\"?>", declaration.OuterXml);
50                 }
51
52                 internal void XmlNodeBaseProperties (XmlNode original, XmlNode cloned)
53                 {
54 //                      assertequals (original.nodetype + " was incorrectly cloned.",
55 //                                    original.baseuri, cloned.baseuri);                        
56                         AssertNull (cloned.ParentNode);
57
58                         AssertEquals ("Value incorrectly cloned",
59                                       original.Value, cloned.Value);
60                         
61                         Assert ("Copies, not pointers", !Object.ReferenceEquals (original,cloned));
62                 }
63
64                 [Test]
65                 public void Constructor ()
66                 {
67                         try {
68                                 XmlDeclaration broken = document.CreateXmlDeclaration ("2.0", null, null);
69                         } catch (ArgumentException) {
70                                 return;
71
72                         } catch (Exception e) {
73                                 Fail("first arg null, wrong exception: " + e.ToString());
74                         }
75                 }
76
77                 [Test]
78                 public void NodeType ()
79                 {
80                         AssertEquals ("incorrect NodeType returned", XmlNodeType.XmlDeclaration, declaration.NodeType);
81                 }
82
83                 [Test]
84                 public void Names ()
85                 {
86                         AssertEquals ("Name is incorrect", "xml", declaration.Name);
87                         AssertEquals ("LocalName is incorrect", "xml", declaration.LocalName);
88                 }
89
90                 [Test]
91                 public void EncodingProperty ()
92                 {
93                         XmlDeclaration d1 = document.CreateXmlDeclaration ("1.0", "foo", null);
94                         AssertEquals ("Encoding property", "foo", d1.Encoding);
95
96                         XmlDeclaration d2 = document.CreateXmlDeclaration ("1.0", null, null);
97                         AssertEquals ("null Encoding property", String.Empty, d2.Encoding);
98                 }
99
100                 [Test]
101                 [ExpectedException (typeof (XmlException))]
102                 public void InvalidInnerText ()
103                 {
104                         declaration.InnerText = "version='1.0a'";
105                 }
106
107                 [Test]
108                 public void StandaloneProperty ()
109                 {
110                         XmlDeclaration d1 = document.CreateXmlDeclaration ("1.0", null, "yes");
111                         AssertEquals ("Yes standalone property", "yes", d1.Standalone);
112
113                         XmlDeclaration d2 = document.CreateXmlDeclaration ("1.0", null, "no");
114                         AssertEquals ("No standalone property", "no", d2.Standalone);
115
116                         XmlDeclaration d3 = document.CreateXmlDeclaration ("1.0", null, null);
117                         AssertEquals ("null Standalone property", String.Empty, d3.Standalone);
118                 }
119
120                 [Test]
121                 public void ValueProperty ()
122                 {
123                         string expected = "version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"yes\"" ;
124
125                         XmlDeclaration d = document.CreateXmlDeclaration ("1.0", "ISO-8859-1", "yes");
126                         AssertEquals ("Value property", expected, d.Value);
127
128                         d.Value = expected;
129                         AssertEquals ("Value round-trip", expected, d.Value);
130
131                         d.Value = "   " + expected;
132                         AssertEquals ("Value round-trip (padded)", expected, d.Value);
133
134                         d.Value = "version=\"1.0\"     encoding=\"ISO-8859-1\" standalone=\"yes\"" ;
135                         AssertEquals ("Value round-trip (padded 2)", expected, d.Value);
136
137                         d.Value = "version=\"1.0\"\tencoding=\"ISO-8859-1\" standalone=\"yes\"" ;
138                         AssertEquals ("Value round-trip (\\t)", expected, d.Value);
139
140                         d.Value = "version=\"1.0\"\n    encoding=\"ISO-8859-1\" standalone=\"yes\"" ;
141                         AssertEquals ("Value round-trip (\\n)", expected, d.Value);
142
143                         d.Value = "version=\"1.0\"    encoding  =   \"ISO-8859-1\" standalone = \"yes\"" ;
144                         AssertEquals ("Value round-trip (spaces)", expected, d.Value);
145
146                         d.Value = "version='1.0' encoding='ISO-8859-1' standalone='yes'" ;
147                         AssertEquals ("Value round-trip ('s)", expected, d.Value);
148
149                 }
150
151                 [Test]
152                 public void XmlCommentCloneNode ()
153                 {
154                         XmlNode original = declaration;
155
156                         XmlNode shallow = declaration.CloneNode (false); // shallow
157                         XmlNodeBaseProperties (original, shallow);
158                         
159                         XmlNode deep = declaration.CloneNode (true); // deep
160                         XmlNodeBaseProperties (original, deep);
161
162                         AssertEquals ("deep cloning differs from shallow cloning",
163                                       deep.OuterXml, shallow.OuterXml);
164                 }
165         }
166 }