2009-07-11 Michael Barker <mike@middlesoft.co.uk>
[mono.git] / mcs / class / System.XML / Test / System.Xml / XmlWhiteSpaceTests.cs
1 //
2 // System.Xml.XmlWhitespaceTests.cs
3 //
4 // Authors:
5 //      Duncan Mak  (duncan@ximian.com)
6 //      Martin Willemoes Hansen (mwh@sysrq.dk)
7 //
8 // (C) Ximian, Inc.
9 // (C) 2003 Martin Willemoes Hansen
10 //
11
12 using System;
13 using System.Xml;
14
15 using NUnit.Framework;
16
17 namespace MonoTests.System.Xml
18 {
19         [TestFixture]
20         public class XmlWhiteSpaceTests
21         {
22                 XmlDocument document;
23                 XmlDocument doc2;
24                 XmlWhitespace whitespace;
25                 XmlWhitespace broken;
26                 XmlNode original;
27                 XmlNode deep;
28                 XmlNode shallow;
29                 
30                 [SetUp]
31                 public void GetReady ()
32                 {
33                         document = new XmlDocument ();
34                         document.LoadXml ("<root><foo></foo></root>");
35                         XmlElement element = document.CreateElement ("foo");
36                         whitespace = document.CreateWhitespace ("\r\n");
37                         element.AppendChild (whitespace);
38
39                         doc2 = new XmlDocument ();
40                         doc2.PreserveWhitespace = true;
41                 }
42
43                 [Test]
44                 public void InnerAndOuterXml ()
45                 {
46                         whitespace = doc2.CreateWhitespace ("\r\n\t ");
47                         Assert.AreEqual (String.Empty, whitespace.InnerXml);
48                         Assert.AreEqual ("\r\n\t ", whitespace.OuterXml);
49                 }
50                         
51                 internal void XmlNodeBaseProperties (XmlNode original, XmlNode cloned)
52                 {
53 //                      assertequals (original.nodetype + " was incorrectly cloned.",
54 //                                    original.baseuri, cloned.baseuri);                        
55                         Assert.IsNull (cloned.ParentNode);
56                         Assert.AreEqual (cloned.Value, original.Value, "Value incorrectly cloned");
57                         
58                         Assert.IsTrue (!Object.ReferenceEquals (original, cloned), "Copies, not pointers");
59                 }
60
61                 [Test]
62                 [ExpectedException (typeof (ArgumentException))]
63                 public void XmlWhitespaceBadConstructor ()
64                 {
65                         broken = document.CreateWhitespace ("black");                           
66                 }
67
68                 [Test]
69                 public void XmlWhitespaceConstructor ()
70                 {
71                         Assert.AreEqual ("\r\n", whitespace.Data, "whitespace char didn't get copied right");
72                 }
73                                
74                 [Test]
75                 public void XmlWhitespaceName ()
76                 {
77                         Assert.AreEqual (whitespace.Name, "#whitespace", whitespace.NodeType + " Name property broken");
78                 }
79
80                 [Test]
81                 public void XmlWhitespaceLocalName ()
82                 {
83                         Assert.AreEqual (whitespace.LocalName, "#whitespace", whitespace.NodeType + " LocalName property broken");
84                 }
85
86                 [Test]
87                 public void XmlWhitespaceNodeType ()
88                 {
89                         Assert.AreEqual (whitespace.NodeType.ToString (), "Whitespace", "XmlWhitespace NodeType property broken");
90                 }
91
92                 [Test]
93                 public void XmlWhitespaceIsReadOnly ()
94                 {
95                         Assert.AreEqual (whitespace.IsReadOnly, false, "XmlWhitespace IsReadOnly property broken");
96                 }
97
98                 [Test]
99                 public void XmlWhitespaceCloneNode ()
100                 {
101                         original = whitespace;
102
103                         shallow = whitespace.CloneNode (false); // shallow
104                         XmlNodeBaseProperties (original, shallow);
105                                                 
106                         deep = whitespace.CloneNode (true); // deep
107                         XmlNodeBaseProperties (original, deep);                 
108
109                         Assert.AreEqual (deep.OuterXml, shallow.OuterXml, "deep cloning differs from shallow cloning");
110                 }
111         }
112 }