2009-06-12 Bill Holmes <billholmes54@gmail.com>
[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 : Assertion
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                         AssertEquals (String.Empty, whitespace.InnerXml);
48                         AssertEquals ("\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                         AssertNull (cloned.ParentNode);
56                         AssertEquals ("Value incorrectly cloned",
57                                        cloned.Value, original.Value);
58                         
59                         Assert ("Copies, not pointers", !Object.ReferenceEquals (original,cloned));
60                 }
61
62                 [Test]
63                 [ExpectedException (typeof (ArgumentException))]
64                 public void XmlWhitespaceBadConstructor ()
65                 {
66                         broken = document.CreateWhitespace ("black");                           
67                 }
68
69                 [Test]
70                 public void XmlWhitespaceConstructor ()
71                 {
72                         AssertEquals ("whitespace char didn't get copied right",
73                                       "\r\n", whitespace.Data);
74                 }
75                                
76                 [Test]
77                 public void XmlWhitespaceName ()
78                 {
79                         AssertEquals (whitespace.NodeType + " Name property broken",
80                                       whitespace.Name, "#whitespace");
81                 }
82
83                 [Test]
84                 public void XmlWhitespaceLocalName ()
85                 {
86                         AssertEquals (whitespace.NodeType + " LocalName property broken",
87                                       whitespace.LocalName, "#whitespace");
88                 }
89
90                 [Test]
91                 public void XmlWhitespaceNodeType ()
92                 {
93                         AssertEquals ("XmlWhitespace NodeType property broken",
94                                       whitespace.NodeType.ToString (), "Whitespace");
95                 }
96
97                 [Test]
98                 public void XmlWhitespaceIsReadOnly ()
99                 {
100                         AssertEquals ("XmlWhitespace IsReadOnly property broken",
101                                       whitespace.IsReadOnly, false);
102                 }
103
104                 [Test]
105                 public void XmlWhitespaceCloneNode ()
106                 {
107                         original = whitespace;
108
109                         shallow = whitespace.CloneNode (false); // shallow
110                         XmlNodeBaseProperties (original, shallow);
111                                                 
112                         deep = whitespace.CloneNode (true); // deep
113                         XmlNodeBaseProperties (original, deep);                 
114
115                         AssertEquals ("deep cloning differs from shallow cloning",
116                                       deep.OuterXml, shallow.OuterXml);
117                 }
118         }
119 }