2003-01-26 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
[mono.git] / mcs / class / System.XML / Test / XmlWhiteSpaceTests.cs
1 //
2 // System.Xml.XmlWhitespaceTests.cs
3 //
4 // Author:
5 //      Duncan Mak  (duncan@ximian.com)
6 //
7 // (C) Ximian, Inc.
8 //
9
10 using System;
11 using System.Xml;
12
13 using NUnit.Framework;
14
15 namespace MonoTests.System.Xml
16 {
17         public class XmlWhitespaceTests : TestCase
18         {
19                 XmlDocument document;
20                 XmlDocument doc2;
21                 XmlWhitespace whitespace;
22                 XmlWhitespace broken;
23                 XmlNode original;
24                 XmlNode deep;
25                 XmlNode shallow;
26                 
27                 public XmlWhitespaceTests () : base ("MonoTests.System.Xml.XmlWhitespaceTests testsuite") {}
28                 public XmlWhitespaceTests (string name) : base (name) {}
29
30                 protected override void SetUp ()
31                 {
32                         document = new XmlDocument ();
33                         document.LoadXml ("<root><foo></foo></root>");
34                         XmlElement element = document.CreateElement ("foo");
35                         whitespace = document.CreateWhitespace ("\r\n");
36                         element.AppendChild (whitespace);
37
38                         doc2 = new XmlDocument ();
39                         doc2.PreserveWhitespace = true;
40                 }
41
42                 public void TestInnerAndOuterXml ()
43                 {
44                         whitespace = doc2.CreateWhitespace ("\r\n\t ");
45                         AssertEquals (String.Empty, whitespace.InnerXml);
46                         AssertEquals ("\r\n\t ", whitespace.OuterXml);
47                 }
48                         
49                 internal void TestXmlNodeBaseProperties (XmlNode original, XmlNode cloned)
50                 {
51 //                      assertequals (original.nodetype + " was incorrectly cloned.",
52 //                                    original.baseuri, cloned.baseuri);                        
53                         AssertNull (cloned.ParentNode);
54                         AssertEquals ("Value incorrectly cloned",
55                                        cloned.Value, original.Value);
56                         
57                         Assert ("Copies, not pointers", !Object.ReferenceEquals (original,cloned));
58                 }
59
60                 public void TestXmlWhitespaceBadConstructor ()
61                 {
62                         try {
63                                 broken = document.CreateWhitespace ("black");                           
64
65                         } catch (ArgumentException) {
66                                 return;
67
68                         } catch (Exception) {
69                                 Fail ("Incorrect Exception thrown.");
70                         }
71                 }
72
73                 public void TestXmlWhitespaceConstructor ()
74                 {
75                         AssertEquals ("whitespace char didn't get copied right",
76                                       "\r\n", whitespace.Data);
77                 }
78                 
79                
80                 public void TestXmlWhitespaceName ()
81                 {
82                         AssertEquals (whitespace.NodeType + " Name property broken",
83                                       whitespace.Name, "#whitespace");
84                 }
85
86                 public void TestXmlWhitespaceLocalName ()
87                 {
88                         AssertEquals (whitespace.NodeType + " LocalName property broken",
89                                       whitespace.LocalName, "#whitespace");
90                 }
91
92                 public void TestXmlWhitespaceNodeType ()
93                 {
94                         AssertEquals ("XmlWhitespace NodeType property broken",
95                                       whitespace.NodeType.ToString (), "Whitespace");
96                 }
97
98                 public void TestXmlWhitespaceIsReadOnly ()
99                 {
100                         AssertEquals ("XmlWhitespace IsReadOnly property broken",
101                                       whitespace.IsReadOnly, false);
102                 }
103
104                 public void TestXmlWhitespaceCloneNode ()
105                 {
106                         original = whitespace;
107
108                         shallow = whitespace.CloneNode (false); // shallow
109                         TestXmlNodeBaseProperties (original, shallow);
110                                                 
111                         deep = whitespace.CloneNode (true); // deep
112                         TestXmlNodeBaseProperties (original, deep);                     
113
114                         AssertEquals ("deep cloning differs from shallow cloning",
115                                       deep.OuterXml, shallow.OuterXml);
116                 }
117         }
118 }