InnerXml, OuterXml, WriteContentTo, and WriteTo for most XmlNode derivatives.
[mono.git] / mcs / class / System.XML / Test / XmlElementTests.cs
1 //
2 // XmlElementTests
3 //
4 // Author:
5 //   Jason Diamond (jason@injektilo.org)
6 //
7 // (C) 2002 Jason Diamond  http://injektilo.org/
8 //
9
10 using System;
11 using System.Xml;
12
13 using NUnit.Framework;
14
15 namespace Ximian.Mono.Tests
16 {
17         public class XmlElementTests : TestCase
18         {
19                 public XmlElementTests () : base ("Ximian.Mono.Tests.XmlElementTests testsuite") { }
20                 public XmlElementTests (string name) : base (name) { }
21
22                 private XmlDocument document;
23
24                 protected override void SetUp()
25                 {
26                         document = new XmlDocument ();
27                 }
28
29                 private void AssertElement (XmlElement element, string prefix,
30                                             string localName, string namespaceURI,
31                                             int attributesCount)
32                 {
33                         AssertEquals (prefix != String.Empty ? prefix + ":" + localName : localName, element.Name);
34                         AssertEquals (prefix, element.Prefix);
35                         AssertEquals (localName, element.LocalName);
36                         AssertEquals (namespaceURI, element.NamespaceURI);
37                         //AssertEquals (attributesCount, element.Attributes.Count);
38                 }
39
40                 public void TestCloneNode ()
41                 {
42                         XmlElement element = document.CreateElement ("foo");
43                         XmlElement child = document.CreateElement ("bar");
44                         XmlElement grandson = document.CreateElement ("baz");
45
46                         element.SetAttribute ("attr1", "val1");
47                         element.SetAttribute ("attr2", "val2");
48                         element.AppendChild (child);
49                         child.SetAttribute ("attr3", "val3");
50                         child.AppendChild (grandson);
51                         
52                         document.AppendChild (element);
53                         XmlNode deep = element.CloneNode (true);
54                         // AssertEquals ("These should be the same", deep.OuterXml, element.OuterXml); 
55                         AssertNull ("This is not null", deep.ParentNode);
56                         Assert ("Copies, not pointers", !Object.ReferenceEquals (element,deep));
57
58                         XmlNode shallow = element.CloneNode (false);
59                         AssertNull ("This is not null", shallow.ParentNode);
60                         Assert ("Copies, not pointers", !Object.ReferenceEquals (element,shallow));
61                         AssertEquals ("Shallow clones shalt have no children!", false, shallow.HasChildNodes);
62                 }
63
64                 public void TestCreateElement1 ()
65                 {
66                         XmlElement element = document.CreateElement ("name");
67                         AssertElement (element, String.Empty, "name", String.Empty, 0);
68                 }
69
70                 public void TestCreateElement1WithPrefix ()
71                 {
72                         XmlElement element = document.CreateElement ("prefix:localName");
73                         AssertElement (element, "prefix", "localName", String.Empty, 0);
74                 }
75
76                 public void TestCreateElement2 ()
77                 {
78                         XmlElement element = document.CreateElement ("qualifiedName", "namespaceURI");
79                         AssertElement (element, String.Empty, "qualifiedName",
80                                        "namespaceURI", 0);
81                 }
82
83                 public void TestCreateElement2WithPrefix ()
84                 {
85                         XmlElement element = document.CreateElement ("prefix:localName", "namespaceURI");
86                         AssertElement (element, "prefix", "localName", "namespaceURI", 0);
87                 }
88
89                 public void TestCreateElement3 ()
90                 {
91                         XmlElement element = document.CreateElement ("prefix", "localName", "namespaceURI");
92                         AssertElement (element, "prefix", "localName", "namespaceURI", 0);
93                 }
94
95                 public void TestInnerAndOuterXml ()
96                 {
97                         XmlElement element;
98                         XmlText text;
99                         XmlComment comment;
100                         
101                         element = document.CreateElement ("foo");
102                         AssertEquals (String.Empty, element.InnerXml);
103                         AssertEquals ("<foo />", element.OuterXml);
104
105                         text = document.CreateTextNode ("bar");
106                         element.AppendChild (text);
107                         AssertEquals ("bar", element.InnerXml);
108                         AssertEquals ("<foo>bar</foo>", element.OuterXml);
109
110                         element.SetAttribute ("baz", "quux");
111                         AssertEquals ("bar", element.InnerXml);
112                         AssertEquals ("<foo baz=\"quux\">bar</foo>", element.OuterXml);
113
114                         comment = document.CreateComment ("squonk");
115                         element.AppendChild (comment);
116                         AssertEquals ("bar<!--squonk-->", element.InnerXml);
117                         AssertEquals ("<foo baz=\"quux\">bar<!--squonk--></foo>", element.OuterXml);
118
119
120                 }
121
122                 public void TestSetGetAttribute ()
123                 {
124                         XmlElement element = document.CreateElement ("foo");
125                         element.SetAttribute ("attr1", "val1");
126                         element.SetAttribute ("attr2", "val2");
127                         AssertEquals ("val1", element.GetAttribute ("attr1"));
128                         AssertEquals ("val2", element.GetAttribute ("attr2"));
129                 }
130         }
131 }