2 // System.Xml.XmlDeclarationTests.cs
5 // Duncan Mak (duncan@ximian.com)
13 using NUnit.Framework;
15 namespace MonoTests.System.Xml
17 public class XmlDeclarationTests : TestCase
21 XmlDeclaration declaration;
23 public XmlDeclarationTests () : base ("MonoTests.System.Xml.XmlDeclarationTests testsuite") {}
25 public XmlDeclarationTests (string name) : base (name) {}
27 protected override void SetUp ()
29 document = new XmlDocument ();
30 document.LoadXml ("<foo><bar></bar></foo>");
31 declaration = document.CreateXmlDeclaration ("1.0", null, null);
34 public void TestInnerAndOuterXml ()
36 declaration = document.CreateXmlDeclaration ("1.0", null, null);
37 AssertEquals (String.Empty, declaration.InnerXml);
38 AssertEquals ("<?xml version=\"1.0\"?>", declaration.OuterXml);
40 declaration = document.CreateXmlDeclaration ("1.0", "doesn't check", null);
41 AssertEquals (String.Empty, declaration.InnerXml);
42 AssertEquals ("<?xml version=\"1.0\" encoding=\"doesn't check\"?>", declaration.OuterXml);
44 declaration = document.CreateXmlDeclaration ("1.0", null, "yes");
45 AssertEquals (String.Empty, declaration.InnerXml);
46 AssertEquals ("<?xml version=\"1.0\" standalone=\"yes\"?>", declaration.OuterXml);
48 declaration = document.CreateXmlDeclaration ("1.0", "foo", "no");
49 AssertEquals (String.Empty, declaration.InnerXml);
50 AssertEquals ("<?xml version=\"1.0\" encoding=\"foo\" standalone=\"no\"?>", declaration.OuterXml);
53 internal void TestXmlNodeBaseProperties (XmlNode original, XmlNode cloned)
55 // assertequals (original.nodetype + " was incorrectly cloned.",
56 // original.baseuri, cloned.baseuri);
57 AssertNull (cloned.ParentNode);
59 AssertEquals ("Value incorrectly cloned",
60 original.Value, cloned.Value);
62 Assert ("Copies, not pointers", !Object.ReferenceEquals (original,cloned));
65 public void TestConstructor ()
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());
77 public void TestNodeType ()
79 AssertEquals ("incorrect NodeType returned", XmlNodeType.XmlDeclaration, declaration.NodeType);
82 public void TestNames ()
84 AssertEquals ("Name is incorrect", "xml", declaration.Name);
85 AssertEquals ("LocalName is incorrect", "xml", declaration.LocalName);
88 public void TestEncodingProperty ()
90 XmlDeclaration d1 = document.CreateXmlDeclaration ("1.0", "foo", null);
91 AssertEquals ("Encoding property", "foo", d1.Encoding);
93 XmlDeclaration d2 = document.CreateXmlDeclaration ("1.0", null, null);
94 AssertEquals ("null Encoding property", String.Empty, d2.Encoding);
97 public void TestStandaloneProperty ()
99 XmlDeclaration d1 = document.CreateXmlDeclaration ("1.0", null, "yes");
100 AssertEquals ("Yes standalone property", "yes", d1.Standalone);
102 XmlDeclaration d2 = document.CreateXmlDeclaration ("1.0", null, "no");
103 AssertEquals ("No standalone property", "no", d2.Standalone);
105 XmlDeclaration d3 = document.CreateXmlDeclaration ("1.0", null, null);
106 AssertEquals ("null Standalone property", String.Empty, d3.Standalone);
109 public void TestValueProperty ()
111 string expected = "version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"yes\"" ;
113 XmlDeclaration d = document.CreateXmlDeclaration ("1.0", "ISO-8859-1", "yes");
114 AssertEquals ("Value property", expected, d.Value);
117 AssertEquals ("Value round-trip", expected, d.Value);
119 d.Value = " " + expected;
120 AssertEquals ("Value round-trip (padded)", expected, d.Value);
122 d.Value = "version=\"1.0\" encoding=\"ISO-8859-1\" standalone=\"yes\"" ;
123 AssertEquals ("Value round-trip (padded 2)", expected, d.Value);
125 d.Value = "version=\"1.0\"\tencoding=\"ISO-8859-1\" standalone=\"yes\"" ;
126 AssertEquals ("Value round-trip (\\t)", expected, d.Value);
128 d.Value = "version=\"1.0\"\n encoding=\"ISO-8859-1\" standalone=\"yes\"" ;
129 AssertEquals ("Value round-trip (\\n)", expected, d.Value);
131 d.Value = "version=\"1.0\" encoding = \"ISO-8859-1\" standalone = \"yes\"" ;
132 AssertEquals ("Value round-trip (spaces)", expected, d.Value);
134 d.Value = "version='1.0' encoding='ISO-8859-1' standalone='yes'" ;
135 AssertEquals ("Value round-trip ('s)", expected, d.Value);
139 public void TestXmlCommentCloneNode ()
141 XmlNode original = declaration;
143 XmlNode shallow = declaration.CloneNode (false); // shallow
144 TestXmlNodeBaseProperties (original, shallow);
146 XmlNode deep = declaration.CloneNode (true); // deep
147 TestXmlNodeBaseProperties (original, deep);
149 AssertEquals ("deep cloning differs from shallow cloning",
150 deep.OuterXml, shallow.OuterXml);