Can now scan most location paths (without predicates).
[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 Ximian.Mono.Tests
16 {
17         public class XmlWhitespaceTests : TestCase
18         {
19                 XmlDocument document;
20                 XmlWhitespace whitespace;
21                 XmlWhitespace broken;
22                 XmlNode original;
23                 XmlNode deep;
24                 XmlNode shallow;
25                 
26                 public XmlWhitespaceTests ()
27                         : base ("Ximian.Mono.Tests.XmlWhitespaceTests testsuite")
28                 {
29                 }
30
31                 public XmlWhitespaceTests (string name)
32                         : base (name)
33                 {
34                 }
35
36                 protected override void SetUp ()
37                 {
38                         document = new XmlDocument ();
39                         document.LoadXml ("<root><foo></foo></root>");
40                         XmlElement element = document.CreateElement ("foo");
41                         whitespace = document.CreateWhitespace ("\r\n");
42                         element.AppendChild (whitespace);
43                 }
44
45                 internal void TestXmlNodeBaseProperties (XmlNode original, XmlNode cloned)
46                 {
47 //                      assertequals (original.nodetype + " was incorrectly cloned.",
48 //                                    original.baseuri, cloned.baseuri);                        
49                         AssertNull (cloned.ParentNode);
50                         AssertEquals ("Value incorrectly cloned",
51                                        cloned.Value, original.Value);
52                         
53                         Assert ("Copies, not pointers", !Object.ReferenceEquals (original,cloned));
54                 }
55
56                 public void TestXmlWhitespaceBadConstructor ()
57                 {
58                         try {
59                                 broken = document.CreateWhitespace ("black");                           
60                         } catch (Exception e) {
61                                 AssertEquals ("Incorrect Exception thrown",
62                                               e.GetType (), Type.GetType ("System.ArgumentException"));
63                         }
64                 }
65
66                 public void TestXmlWhitespaceConstructor ()
67                 {
68                         AssertEquals ("whitespace char didn't get copied right",
69                                       "\r\n", whitespace.Data);
70                 }
71                 
72                
73                 public void TestXmlWhitespaceName ()
74                 {
75                         AssertEquals (whitespace.NodeType + " Name property broken",
76                                       whitespace.Name, "#whitespace");
77                 }
78
79                 public void TestXmlWhitespaceLocalName ()
80                 {
81                         AssertEquals (whitespace.NodeType + " LocalName property broken",
82                                       whitespace.LocalName, "#whitespace");
83                 }
84
85                 public void TestXmlWhitespaceNodeType ()
86                 {
87                         AssertEquals ("XmlWhitespace NodeType property broken",
88                                       whitespace.NodeType.ToString (), "Whitespace");
89                 }
90
91                 public void TestXmlWhitespaceIsReadOnly ()
92                 {
93                         AssertEquals ("XmlWhitespace IsReadOnly property broken",
94                                       whitespace.IsReadOnly, false);
95                 }
96
97                 public void TestXmlWhitespaceCloneNode ()
98                 {
99                         original = whitespace;
100
101                         shallow = whitespace.CloneNode (false); // shallow
102                         TestXmlNodeBaseProperties (original, shallow);
103                                                 
104                         deep = whitespace.CloneNode (true); // deep
105                         TestXmlNodeBaseProperties (original, deep);                     
106
107                         AssertEquals ("deep cloning differs from shallow cloning",
108                                       deep.OuterXml, shallow.OuterXml);
109                 }
110         }
111 }