2 // System.Xml.XmlDeclarationTests.cs
4 // Author: Duncan Mak (duncan@ximian.com)
5 // Author: Martin Willemoes Hansen (mwh@sysrq.dk)
8 // (C) 2003 Martin Willemoes Hansen
14 using NUnit
.Framework
;
16 namespace MonoTests
.System
.Xml
19 public class XmlDeclarationTests
: Assertion
22 XmlDeclaration declaration
;
25 public void GetReady ()
27 document
= new XmlDocument ();
28 document
.LoadXml ("<foo><bar></bar></foo>");
29 declaration
= document
.CreateXmlDeclaration ("1.0", null, null);
33 public void InnerAndOuterXml ()
35 declaration
= document
.CreateXmlDeclaration ("1.0", null, null);
36 AssertEquals (String
.Empty
, declaration
.InnerXml
);
37 AssertEquals ("<?xml version=\"1.0\"?>", declaration
.OuterXml
);
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
);
43 declaration
= document
.CreateXmlDeclaration ("1.0", null, "yes");
44 AssertEquals (String
.Empty
, declaration
.InnerXml
);
45 AssertEquals ("<?xml version=\"1.0\" standalone=\"yes\"?>", declaration
.OuterXml
);
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
);
52 internal void XmlNodeBaseProperties (XmlNode original
, XmlNode cloned
)
54 // assertequals (original.nodetype + " was incorrectly cloned.",
55 // original.baseuri, cloned.baseuri);
56 AssertNull (cloned
.ParentNode
);
58 AssertEquals ("Value incorrectly cloned",
59 original
.Value
, cloned
.Value
);
61 Assert ("Copies, not pointers", !Object
.ReferenceEquals (original
,cloned
));
65 public void Constructor ()
68 XmlDeclaration broken
= document
.CreateXmlDeclaration ("2.0", null, null);
69 } catch (ArgumentException
) {
72 } catch (Exception e
) {
73 Fail("first arg null, wrong exception: " + e
.ToString());
78 public void NodeType ()
80 AssertEquals ("incorrect NodeType returned", XmlNodeType
.XmlDeclaration
, declaration
.NodeType
);
86 AssertEquals ("Name is incorrect", "xml", declaration
.Name
);
87 AssertEquals ("LocalName is incorrect", "xml", declaration
.LocalName
);
91 public void EncodingProperty ()
93 XmlDeclaration d1
= document
.CreateXmlDeclaration ("1.0", "foo", null);
94 AssertEquals ("Encoding property", "foo", d1
.Encoding
);
96 XmlDeclaration d2
= document
.CreateXmlDeclaration ("1.0", null, null);
97 AssertEquals ("null Encoding property", String
.Empty
, d2
.Encoding
);
101 public void ValidInnerText ()
103 declaration
.InnerText
= "version='1.0'";
105 declaration
.InnerText
= "version='1.0' encoding='euc-jp'";
107 declaration
.InnerText
= "version='1.0' standalone='no'";
109 declaration
.InnerText
= "version='1.0' encoding='iso-8859-1' standalone=\"yes\"";
111 declaration
.InnerText
= @"version = '1.0' encoding =
112 'euc-jp' standalone = 'yes' ";
114 declaration
.InnerText
= " version = '1.0'";
118 [ExpectedException (typeof (XmlException
))]
119 public void InvalidInnerText ()
121 declaration
.InnerText
= "version='1.0a'";
125 [ExpectedException (typeof (XmlException
))]
126 public void InvalidInnerText2 ()
128 declaration
.InnerText
= "version='1.0' encoding='euc-kr\"";
132 [ExpectedException (typeof (XmlException
))]
133 public void InvalidInnerText3 ()
135 declaration
.InnerText
= "version='2.0'";
139 [ExpectedException (typeof (XmlException
))]
140 public void InvalidInnerText4 ()
142 declaration
.InnerText
= "version='1.0' standalone='Yeah!!!!!'";
146 [ExpectedException (typeof (XmlException
))]
147 public void InvalidInnerText5 ()
149 declaration
.InnerText
= "version='1.0'standalone='yes'";
153 [ExpectedException (typeof (XmlException
))]
154 public void InvalidInnerText6 ()
156 declaration
.InnerText
= "version='1.0'standalone='yes' encoding='utf-8'";
160 public void StandaloneProperty ()
162 XmlDeclaration d1
= document
.CreateXmlDeclaration ("1.0", null, "yes");
163 AssertEquals ("Yes standalone property", "yes", d1
.Standalone
);
165 XmlDeclaration d2
= document
.CreateXmlDeclaration ("1.0", null, "no");
166 AssertEquals ("No standalone property", "no", d2
.Standalone
);
168 XmlDeclaration d3
= document
.CreateXmlDeclaration ("1.0", null, null);
169 AssertEquals ("null Standalone property", String
.Empty
, d3
.Standalone
);
173 public void ValueProperty ()
175 string expected
= "version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"yes\"" ;
177 XmlDeclaration d
= document
.CreateXmlDeclaration ("1.0", "ISO-8859-1", "yes");
178 AssertEquals ("Value property", expected
, d
.Value
);
181 AssertEquals ("Value round-trip", expected
, d
.Value
);
183 d
.Value
= " " + expected
;
184 AssertEquals ("Value round-trip (padded)", expected
, d
.Value
);
186 d
.Value
= "version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"yes\"" ;
187 AssertEquals ("Value round-trip (padded 2)", expected
, d
.Value
);
189 d
.Value
= "version=\"1.0\"\tencoding=\"ISO-8859-1\" standalone=\"yes\"" ;
190 AssertEquals ("Value round-trip (\\t)", expected
, d
.Value
);
192 d
.Value
= "version=\"1.0\"\n encoding=\"ISO-8859-1\" standalone=\"yes\"" ;
193 AssertEquals ("Value round-trip (\\n)", expected
, d
.Value
);
195 d
.Value
= "version=\"1.0\" encoding = \"ISO-8859-1\" standalone = \"yes\"" ;
196 AssertEquals ("Value round-trip (spaces)", expected
, d
.Value
);
198 d
.Value
= "version='1.0' encoding='ISO-8859-1' standalone='yes'" ;
199 AssertEquals ("Value round-trip ('s)", expected
, d
.Value
);
204 public void XmlCommentCloneNode ()
206 XmlNode original
= declaration
;
208 XmlNode shallow
= declaration
.CloneNode (false); // shallow
209 XmlNodeBaseProperties (original
, shallow
);
211 XmlNode deep
= declaration
.CloneNode (true); // deep
212 XmlNodeBaseProperties (original
, deep
);
214 AssertEquals ("deep cloning differs from shallow cloning",
215 deep
.OuterXml
, shallow
.OuterXml
);