XmlDeclarationTests.cs 6.2 KB

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