XmlSignificantWhitespaceTests.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. //
  2. // System.Xml.XmlWhitespaceTests.cs
  3. //
  4. // Authors:
  5. // Duncan Mak ([email protected])
  6. // Martin Willemoes Hansen ([email protected])
  7. //
  8. // (C) Ximian, Inc.
  9. // (C) 2003 Martin Willemoes Hansen
  10. //
  11. using System;
  12. using System.Xml;
  13. using NUnit.Framework;
  14. namespace MonoTests.System.Xml
  15. {
  16. [TestFixture]
  17. public class XmlSignificantWhitespaceTests : Assertion
  18. {
  19. XmlDocument document;
  20. XmlDocument doc2;
  21. XmlSignificantWhitespace whitespace;
  22. XmlSignificantWhitespace broken;
  23. XmlNode original;
  24. XmlNode deep;
  25. XmlNode shallow;
  26. [SetUp]
  27. public void GetReady ()
  28. {
  29. document = new XmlDocument ();
  30. document.LoadXml ("<root><foo></foo></root>");
  31. XmlElement element = document.CreateElement ("foo");
  32. whitespace = document.CreateSignificantWhitespace ("\r\n");
  33. element.AppendChild (whitespace);
  34. doc2 = new XmlDocument ();
  35. }
  36. [Test]
  37. public void InnerAndOuterXml ()
  38. {
  39. whitespace = doc2.CreateSignificantWhitespace ("\r\n\t ");
  40. AssertEquals (String.Empty, whitespace.InnerXml);
  41. AssertEquals ("\r\n\t ", whitespace.OuterXml);
  42. }
  43. [Test]
  44. public void DataAndValue ()
  45. {
  46. string val = "\t\t\r\n ";
  47. whitespace = doc2.CreateSignificantWhitespace (val);
  48. AssertEquals ("#DataValue.1", val, whitespace.Data);
  49. AssertEquals ("#DataValue.2", val, whitespace.Value);
  50. whitespace.Value = val + "\t";
  51. AssertEquals ("#DataValue.3", val + "\t", whitespace.Data);
  52. }
  53. internal void XmlNodeBaseProperties (XmlNode original, XmlNode cloned)
  54. {
  55. // assertequals (original.nodetype + " was incorrectly cloned.",
  56. // original.baseuri, cloned.baseuri);
  57. AssertNull (cloned.ParentNode);
  58. AssertEquals ("Value incorrectly cloned",
  59. cloned.Value, original.Value);
  60. Assert ("Copies, not pointers", !Object.ReferenceEquals (original,cloned));
  61. }
  62. [Test]
  63. public void XmlSignificantWhitespaceBadConstructor ()
  64. {
  65. try {
  66. broken = document.CreateSignificantWhitespace ("black");
  67. } catch (ArgumentException) {
  68. return;
  69. } catch (Exception) {
  70. Fail ("Incorrect Exception thrown.");
  71. }
  72. }
  73. [Test]
  74. public void XmlSignificantWhitespaceConstructor ()
  75. {
  76. AssertEquals ("whitespace char didn't get copied right",
  77. "\r\n", whitespace.Data);
  78. }
  79. [Test]
  80. public void XmlSignificantWhitespaceName ()
  81. {
  82. AssertEquals (whitespace.NodeType + " Name property broken",
  83. whitespace.Name, "#significant-whitespace");
  84. }
  85. [Test]
  86. public void XmlSignificantWhitespaceLocalName ()
  87. {
  88. AssertEquals (whitespace.NodeType + " LocalName property broken",
  89. whitespace.LocalName, "#significant-whitespace");
  90. }
  91. [Test]
  92. public void XmlSignificantWhitespaceNodeType ()
  93. {
  94. AssertEquals ("XmlSignificantWhitespace NodeType property broken",
  95. whitespace.NodeType.ToString (), "SignificantWhitespace");
  96. }
  97. [Test]
  98. public void XmlSignificantWhitespaceIsReadOnly ()
  99. {
  100. AssertEquals ("XmlSignificantWhitespace IsReadOnly property broken",
  101. whitespace.IsReadOnly, false);
  102. }
  103. [Test]
  104. public void XmlSignificantWhitespaceCloneNode ()
  105. {
  106. original = whitespace;
  107. shallow = whitespace.CloneNode (false); // shallow
  108. XmlNodeBaseProperties (original, shallow);
  109. deep = whitespace.CloneNode (true); // deep
  110. XmlNodeBaseProperties (original, deep);
  111. AssertEquals ("deep cloning differs from shallow cloning",
  112. deep.OuterXml, shallow.OuterXml);
  113. }
  114. }
  115. }