XmlSignificantWhitespaceTests.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  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
  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. Assert.AreEqual (String.Empty, whitespace.InnerXml);
  41. Assert.AreEqual ("\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. Assert.AreEqual (val, whitespace.Data, "#DataValue.1");
  49. Assert.AreEqual (val, whitespace.Value, "#DataValue.2");
  50. whitespace.Value = val + "\t";
  51. Assert.AreEqual (val + "\t", whitespace.Data, "#DataValue.3");
  52. }
  53. internal void XmlNodeBaseProperties (XmlNode original, XmlNode cloned)
  54. {
  55. // assertequals (original.nodetype + " was incorrectly cloned.",
  56. // original.baseuri, cloned.baseuri);
  57. Assert.IsNull (cloned.ParentNode);
  58. Assert.AreEqual (cloned.Value, original.Value, "Value incorrectly cloned");
  59. Assert.IsTrue (!Object.ReferenceEquals (original, cloned), "Copies, not pointers");
  60. }
  61. [Test]
  62. public void XmlSignificantWhitespaceBadConstructor ()
  63. {
  64. try {
  65. broken = document.CreateSignificantWhitespace ("black");
  66. } catch (ArgumentException) {
  67. return;
  68. } catch (Exception) {
  69. Assert.Fail ("Incorrect Exception thrown.");
  70. }
  71. }
  72. [Test]
  73. public void XmlSignificantWhitespaceConstructor ()
  74. {
  75. Assert.AreEqual ("\r\n", whitespace.Data, "whitespace char didn't get copied right");
  76. }
  77. [Test]
  78. public void XmlSignificantWhitespaceName ()
  79. {
  80. Assert.AreEqual (whitespace.Name, "#significant-whitespace", whitespace.NodeType + " Name property broken");
  81. }
  82. [Test]
  83. public void XmlSignificantWhitespaceLocalName ()
  84. {
  85. Assert.AreEqual (whitespace.LocalName, "#significant-whitespace", whitespace.NodeType + " LocalName property broken");
  86. }
  87. [Test]
  88. public void XmlSignificantWhitespaceNodeType ()
  89. {
  90. Assert.AreEqual (whitespace.NodeType.ToString (), "SignificantWhitespace", "XmlSignificantWhitespace NodeType property broken");
  91. }
  92. [Test]
  93. public void XmlSignificantWhitespaceIsReadOnly ()
  94. {
  95. Assert.AreEqual (whitespace.IsReadOnly, false, "XmlSignificantWhitespace IsReadOnly property broken");
  96. }
  97. [Test]
  98. public void XmlSignificantWhitespaceCloneNode ()
  99. {
  100. original = whitespace;
  101. shallow = whitespace.CloneNode (false); // shallow
  102. XmlNodeBaseProperties (original, shallow);
  103. deep = whitespace.CloneNode (true); // deep
  104. XmlNodeBaseProperties (original, deep);
  105. Assert.AreEqual (deep.OuterXml, shallow.OuterXml, "deep cloning differs from shallow cloning");
  106. }
  107. }
  108. }