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 [ExpectedException (typeof (XmlException))]
102 public void InvalidInnerText ()
104 declaration.InnerText = "version='1.0a'";
108 public void StandaloneProperty ()
110 XmlDeclaration d1 = document.CreateXmlDeclaration ("1.0", null, "yes");
111 AssertEquals ("Yes standalone property", "yes", d1.Standalone);
113 XmlDeclaration d2 = document.CreateXmlDeclaration ("1.0", null, "no");
114 AssertEquals ("No standalone property", "no", d2.Standalone);
116 XmlDeclaration d3 = document.CreateXmlDeclaration ("1.0", null, null);
117 AssertEquals ("null Standalone property", String.Empty, d3.Standalone);
121 public void ValueProperty ()
123 string expected = "version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"yes\"" ;
125 XmlDeclaration d = document.CreateXmlDeclaration ("1.0", "ISO-8859-1", "yes");
126 AssertEquals ("Value property", expected, d.Value);
129 AssertEquals ("Value round-trip", expected, d.Value);
131 d.Value = " " + expected;
132 AssertEquals ("Value round-trip (padded)", expected, d.Value);
134 d.Value = "version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"yes\"" ;
135 AssertEquals ("Value round-trip (padded 2)", expected, d.Value);
137 d.Value = "version=\"1.0\"\tencoding=\"ISO-8859-1\" standalone=\"yes\"" ;
138 AssertEquals ("Value round-trip (\\t)", expected, d.Value);
140 d.Value = "version=\"1.0\"\n encoding=\"ISO-8859-1\" standalone=\"yes\"" ;
141 AssertEquals ("Value round-trip (\\n)", expected, d.Value);
143 d.Value = "version=\"1.0\" encoding = \"ISO-8859-1\" standalone = \"yes\"" ;
144 AssertEquals ("Value round-trip (spaces)", expected, d.Value);
146 d.Value = "version='1.0' encoding='ISO-8859-1' standalone='yes'" ;
147 AssertEquals ("Value round-trip ('s)", expected, d.Value);
152 public void XmlCommentCloneNode ()
154 XmlNode original = declaration;
156 XmlNode shallow = declaration.CloneNode (false); // shallow
157 XmlNodeBaseProperties (original, shallow);
159 XmlNode deep = declaration.CloneNode (true); // deep
160 XmlNodeBaseProperties (original, deep);
162 AssertEquals ("deep cloning differs from shallow cloning",
163 deep.OuterXml, shallow.OuterXml);