2 // System.Xml.XmlWhitespaceTests.cs
5 // Duncan Mak (duncan@ximian.com)
13 using NUnit.Framework;
15 namespace MonoTests.System.Xml
17 public class XmlSignificantWhitespaceTests : TestCase
21 XmlSignificantWhitespace whitespace;
22 XmlSignificantWhitespace broken;
27 public XmlSignificantWhitespaceTests () : base ("MonoTests.System.Xml.XmlWhitespaceTests testsuite") {}
28 public XmlSignificantWhitespaceTests (string name) : base (name) {}
30 protected override void SetUp ()
32 document = new XmlDocument ();
33 document.LoadXml ("<root><foo></foo></root>");
34 XmlElement element = document.CreateElement ("foo");
35 whitespace = document.CreateSignificantWhitespace ("\r\n");
36 element.AppendChild (whitespace);
38 doc2 = new XmlDocument ();
41 public void TestInnerAndOuterXml ()
43 whitespace = doc2.CreateSignificantWhitespace ("\r\n\t ");
44 AssertEquals (String.Empty, whitespace.InnerXml);
45 AssertEquals ("\r\n\t ", whitespace.OuterXml);
48 public void TestDataAndValue ()
50 string val = "\t\t\r\n ";
51 whitespace = doc2.CreateSignificantWhitespace (val);
52 AssertEquals ("#DataValue.1", val, whitespace.Data);
53 AssertEquals ("#DataValue.2", val, whitespace.Value);
54 whitespace.Value = val + "\t";
55 AssertEquals ("#DataValue.3", val + "\t", whitespace.Data);
58 internal void TestXmlNodeBaseProperties (XmlNode original, XmlNode cloned)
60 // assertequals (original.nodetype + " was incorrectly cloned.",
61 // original.baseuri, cloned.baseuri);
62 AssertNull (cloned.ParentNode);
63 AssertEquals ("Value incorrectly cloned",
64 cloned.Value, original.Value);
66 Assert ("Copies, not pointers", !Object.ReferenceEquals (original,cloned));
69 public void TestXmlSignificantWhitespaceBadConstructor ()
72 broken = document.CreateSignificantWhitespace ("black");
74 } catch (ArgumentException) {
78 Fail ("Incorrect Exception thrown.");
82 public void TestXmlSignificantWhitespaceConstructor ()
84 AssertEquals ("whitespace char didn't get copied right",
85 "\r\n", whitespace.Data);
89 public void TestXmlSignificantWhitespaceName ()
91 AssertEquals (whitespace.NodeType + " Name property broken",
92 whitespace.Name, "#significant-whitespace");
95 public void TestXmlSignificantWhitespaceLocalName ()
97 AssertEquals (whitespace.NodeType + " LocalName property broken",
98 whitespace.LocalName, "#significant-whitespace");
101 public void TestXmlSignificantWhitespaceNodeType ()
103 AssertEquals ("XmlSignificantWhitespace NodeType property broken",
104 whitespace.NodeType.ToString (), "SignificantWhitespace");
107 public void TestXmlSignificantWhitespaceIsReadOnly ()
109 AssertEquals ("XmlSignificantWhitespace IsReadOnly property broken",
110 whitespace.IsReadOnly, false);
113 public void TestXmlSignificantWhitespaceCloneNode ()
115 original = whitespace;
117 shallow = whitespace.CloneNode (false); // shallow
118 TestXmlNodeBaseProperties (original, shallow);
120 deep = whitespace.CloneNode (true); // deep
121 TestXmlNodeBaseProperties (original, deep);
123 AssertEquals ("deep cloning differs from shallow cloning",
124 deep.OuterXml, shallow.OuterXml);