5 // Jason Diamond (jason@injektilo.org)
7 // (C) 2002 Jason Diamond http://injektilo.org/
13 using NUnit.Framework;
15 namespace Ximian.Mono.Tests
17 public class XmlElementTests : TestCase
19 public XmlElementTests () : base ("Ximian.Mono.Tests.XmlElementTests testsuite") { }
20 public XmlElementTests (string name) : base (name) { }
22 private XmlDocument document;
24 protected override void SetUp()
26 document = new XmlDocument ();
29 private void AssertElement (XmlElement element, string prefix,
30 string localName, string namespaceURI,
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);
40 public void TestCloneNode ()
42 XmlElement element = document.CreateElement ("foo");
43 XmlElement child = document.CreateElement ("bar");
44 XmlElement grandson = document.CreateElement ("baz");
46 element.SetAttribute ("attr1", "val1");
47 element.SetAttribute ("attr2", "val2");
48 element.AppendChild (child);
49 child.SetAttribute ("attr3", "val3");
50 child.AppendChild (grandson);
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));
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);
64 public void TestCreateElement1 ()
66 XmlElement element = document.CreateElement ("name");
67 AssertElement (element, String.Empty, "name", String.Empty, 0);
70 public void TestCreateElement1WithPrefix ()
72 XmlElement element = document.CreateElement ("prefix:localName");
73 AssertElement (element, "prefix", "localName", String.Empty, 0);
76 public void TestCreateElement2 ()
78 XmlElement element = document.CreateElement ("qualifiedName", "namespaceURI");
79 AssertElement (element, String.Empty, "qualifiedName",
83 public void TestCreateElement2WithPrefix ()
85 XmlElement element = document.CreateElement ("prefix:localName", "namespaceURI");
86 AssertElement (element, "prefix", "localName", "namespaceURI", 0);
89 public void TestCreateElement3 ()
91 XmlElement element = document.CreateElement ("prefix", "localName", "namespaceURI");
92 AssertElement (element, "prefix", "localName", "namespaceURI", 0);
95 public void TestInnerAndOuterXml ()
101 element = document.CreateElement ("foo");
102 AssertEquals (String.Empty, element.InnerXml);
103 AssertEquals ("<foo />", element.OuterXml);
105 text = document.CreateTextNode ("bar");
106 element.AppendChild (text);
107 AssertEquals ("bar", element.InnerXml);
108 AssertEquals ("<foo>bar</foo>", element.OuterXml);
110 element.SetAttribute ("baz", "quux");
111 AssertEquals ("bar", element.InnerXml);
112 AssertEquals ("<foo baz=\"quux\">bar</foo>", element.OuterXml);
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);
122 public void TestSetGetAttribute ()
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"));