1 // XmlAttributeTests.cs : Tests for the XmlAttribute class
3 // Author: Mike Kestner <mkestner@speakeasy.net>
5 // <c> 2002 Mike Kestner
10 using NUnit.Framework;
12 namespace MonoTests.System.Xml
14 public class XmlAttributeTests : TestCase
16 public XmlAttributeTests () : base("MonoTests.System.Xml.XmlAttributeTests testsuite") { }
17 public XmlAttributeTests (string name) : base(name) { }
22 protected override void SetUp()
24 doc = new XmlDocument ();
25 attr = doc.CreateAttribute ("attr1");
29 public void TestAttributes ()
31 AssertNull (attr.Attributes);
34 public void TestAttributeInnerAndOuterXml ()
36 attr = doc.CreateAttribute ("foo", "bar", "http://abc.def");
38 AssertEquals ("baz", attr.InnerXml);
39 AssertEquals ("foo:bar=\"baz\"", attr.OuterXml);
42 public void TestAttributeWithNoValue ()
44 XmlAttribute attribute = doc.CreateAttribute ("name");
45 AssertEquals (String.Empty, attribute.Value);
46 Assert (!attribute.HasChildNodes);
47 AssertNull (attribute.FirstChild);
48 AssertNull (attribute.LastChild);
49 AssertEquals (0, attribute.ChildNodes.Count);
52 public void TestAttributeWithValue ()
54 XmlAttribute attribute = doc.CreateAttribute ("name");
55 attribute.Value = "value";
56 AssertEquals ("value", attribute.Value);
57 Assert (attribute.HasChildNodes);
58 AssertNotNull (attribute.FirstChild);
59 AssertNotNull (attribute.LastChild);
60 AssertEquals (1, attribute.ChildNodes.Count);
61 AssertEquals (XmlNodeType.Text, attribute.ChildNodes [0].NodeType);
62 AssertEquals ("value", attribute.ChildNodes [0].Value);
65 public void TestHasChildNodes ()
67 Assert (attr.HasChildNodes);
70 public void TestName ()
72 AssertEquals ("attr1", attr.Name);
75 public void TestNodeType ()
77 AssertEquals (XmlNodeType.Attribute, attr.NodeType);
80 public void TestOwnerDocument ()
82 AssertSame (doc, attr.OwnerDocument);
85 public void TestParentNode ()
87 AssertNull ("Attr parents not allowed", attr.ParentNode);
90 public void TestValue ()
92 AssertEquals ("val1", attr.Value);
95 public void TestSetInnerTextAndXml ()
97 string original = doc.OuterXml;
98 doc.LoadXml ("<root name='value' />");
99 XmlNodeChangedEventHandler eh = new XmlNodeChangedEventHandler (OnSetInnerText);
101 doc.DocumentElement.Attributes ["name"].InnerText = "a&b";
102 AssertEquals ("setInnerText", "a&b", doc.DocumentElement.Attributes ["name"].Value);
103 doc.DocumentElement.Attributes ["name"].InnerXml = "a&b";
104 AssertEquals ("setInnerXml", "a&b", doc.DocumentElement.Attributes ["name"].Value);
106 doc.NodeChanged += eh;
107 doc.DocumentElement.Attributes ["name"].InnerText = "fire";
108 // If you failed to pass it, then the reason may be loop of event.
109 AssertEquals ("setInnerText.Event", "event was fired", doc.DocumentElement.GetAttribute ("appended"));
110 } catch(Exception ex) {
113 doc.LoadXml (original);
114 doc.NodeChanged -= eh;
118 public void OnSetInnerText (object o, XmlNodeChangedEventArgs e)
120 if(e.NewParent.Value == "fire")
121 doc.DocumentElement.SetAttribute ("appended", "event was fired");