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 XmlDeclaration d = document.CreateXmlDeclaration ("1.0", "UTF-8", "yes");
112 AssertEquals ("Value property", "version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"",
116 public void TestXmlCommentCloneNode ()
118 XmlNode original = declaration;
120 XmlNode shallow = declaration.CloneNode (false); // shallow
121 TestXmlNodeBaseProperties (original, shallow);
123 XmlNode deep = declaration.CloneNode (true); // deep
124 TestXmlNodeBaseProperties (original, deep);
126 AssertEquals ("deep cloning differs from shallow cloning",
127 deep.OuterXml, shallow.OuterXml);