2
0

XmlAttributeTests.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. // XmlAttributeTests.cs : Tests for the XmlAttribute class
  2. //
  3. // Author: Mike Kestner <[email protected]>
  4. // Author: Martin Willemoes Hansen <[email protected]>
  5. //
  6. // (C) 2002 Mike Kestner
  7. // (C) 2003 Martin Willemoes Hansen
  8. using System;
  9. using System.Xml;
  10. using NUnit.Framework;
  11. namespace MonoTests.System.Xml
  12. {
  13. [TestFixture]
  14. public class XmlAttributeTests
  15. {
  16. XmlDocument doc;
  17. XmlAttribute attr;
  18. [SetUp]
  19. public void GetReady()
  20. {
  21. doc = new XmlDocument ();
  22. attr = doc.CreateAttribute ("attr1");
  23. attr.Value = "val1";
  24. }
  25. [Test]
  26. public void Attributes ()
  27. {
  28. Assertion.AssertNull (attr.Attributes);
  29. }
  30. [Test]
  31. public void AttributeInnerAndOuterXml ()
  32. {
  33. attr = doc.CreateAttribute ("foo", "bar", "http://abc.def");
  34. attr.Value = "baz";
  35. Assertion.AssertEquals ("baz", attr.InnerXml);
  36. Assertion.AssertEquals ("foo:bar=\"baz\"", attr.OuterXml);
  37. }
  38. [Test]
  39. public void AttributeWithNoValue ()
  40. {
  41. XmlAttribute attribute = doc.CreateAttribute ("name");
  42. Assertion.AssertEquals (String.Empty, attribute.Value);
  43. Assertion.Assert (!attribute.HasChildNodes);
  44. Assertion.AssertNull (attribute.FirstChild);
  45. Assertion.AssertNull (attribute.LastChild);
  46. Assertion.AssertEquals (0, attribute.ChildNodes.Count);
  47. }
  48. [Test]
  49. public void AttributeWithValue ()
  50. {
  51. XmlAttribute attribute = doc.CreateAttribute ("name");
  52. attribute.Value = "value";
  53. Assertion.AssertEquals ("value", attribute.Value);
  54. Assertion.Assert (attribute.HasChildNodes);
  55. Assertion.AssertNotNull (attribute.FirstChild);
  56. Assertion.AssertNotNull (attribute.LastChild);
  57. Assertion.AssertEquals (1, attribute.ChildNodes.Count);
  58. Assertion.AssertEquals (XmlNodeType.Text, attribute.ChildNodes [0].NodeType);
  59. Assertion.AssertEquals ("value", attribute.ChildNodes [0].Value);
  60. }
  61. [Test]
  62. public void HasChildNodes ()
  63. {
  64. Assertion.Assert (attr.HasChildNodes);
  65. }
  66. [Test]
  67. public void Name ()
  68. {
  69. Assertion.AssertEquals ("attr1", attr.Name);
  70. }
  71. [Test]
  72. public void NodeType ()
  73. {
  74. Assertion.AssertEquals (XmlNodeType.Attribute, attr.NodeType);
  75. }
  76. [Test]
  77. public void OwnerDocument ()
  78. {
  79. Assertion.AssertSame (doc, attr.OwnerDocument);
  80. }
  81. [Test]
  82. public void ParentNode ()
  83. {
  84. Assertion.AssertNull ("Attr parents not allowed", attr.ParentNode);
  85. }
  86. [Test]
  87. public void Value ()
  88. {
  89. Assertion.AssertEquals ("val1", attr.Value);
  90. }
  91. [Test]
  92. public void SetInnerTextAndXml ()
  93. {
  94. string original = doc.OuterXml;
  95. doc.LoadXml ("<root name='value' />");
  96. XmlNodeChangedEventHandler eh = new XmlNodeChangedEventHandler (OnSetInnerText);
  97. try {
  98. doc.DocumentElement.Attributes ["name"].InnerText = "a&b";
  99. Assertion.AssertEquals ("setInnerText", "a&b", doc.DocumentElement.Attributes ["name"].Value);
  100. doc.DocumentElement.Attributes ["name"].InnerXml = "a&amp;b";
  101. Assertion.AssertEquals ("setInnerXml", "a&b", doc.DocumentElement.Attributes ["name"].Value);
  102. doc.NodeChanged += eh;
  103. doc.DocumentElement.Attributes ["name"].InnerText = "fire";
  104. // If you failed to pass it, then the reason may be loop of event.
  105. Assertion.AssertEquals ("setInnerText.Event", "event was fired", doc.DocumentElement.GetAttribute ("appended"));
  106. } catch(Exception ex) {
  107. Assertion.Fail(ex.Message);
  108. } finally {
  109. doc.LoadXml (original);
  110. doc.NodeChanged -= eh;
  111. }
  112. }
  113. public void OnSetInnerText (object o, XmlNodeChangedEventArgs e)
  114. {
  115. if(e.NewParent.Value == "fire")
  116. doc.DocumentElement.SetAttribute ("appended", "event was fired");
  117. }
  118. }
  119. }