XmlAttributeTests.cs 3.2 KB

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