XmlDocumentEventTests.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. //
  2. // XmlDocumentEventTests.cs
  3. //
  4. // Author:
  5. // Atsushi Enomoto <[email protected]>
  6. //
  7. // (C)2004 Novell Inc.
  8. //
  9. // This class is a set of event test.
  10. //
  11. using NUnit.Framework;
  12. using System;
  13. using System.Text;
  14. using System.Xml;
  15. namespace MonoTests.System.Xml
  16. {
  17. [TestFixture]
  18. public class XmlDocumentEventTests
  19. {
  20. private StringBuilder eventLogBuilder = new StringBuilder ();
  21. private XmlDocument GetEventDocument ()
  22. {
  23. XmlDocument document = new XmlDocument ();
  24. SetEvents (document);
  25. return document;
  26. }
  27. private void SetEvents (XmlDocument document)
  28. {
  29. document.NodeInserting += new XmlNodeChangedEventHandler (OnInsertingLog);
  30. document.NodeInserted += new XmlNodeChangedEventHandler (OnInsertedLog);
  31. document.NodeChanging += new XmlNodeChangedEventHandler (OnChangingLog);
  32. document.NodeChanged += new XmlNodeChangedEventHandler (OnChangedLog);
  33. document.NodeRemoving += new XmlNodeChangedEventHandler (OnRemovingLog);
  34. document.NodeRemoved += new XmlNodeChangedEventHandler (OnRemovedLog);
  35. }
  36. private void OnInsertingLog (object o, XmlNodeChangedEventArgs e)
  37. {
  38. eventLogBuilder.Append ("Inserting: " + e.Node.NodeType + " into " + e.NewParent.NodeType + ".\n");
  39. }
  40. private void OnInsertedLog (object o, XmlNodeChangedEventArgs e)
  41. {
  42. eventLogBuilder.Append ("Inserted: " + e.Node.NodeType + " into " + e.NewParent.NodeType + ".\n");
  43. }
  44. private void OnChangingLog (object o, XmlNodeChangedEventArgs e)
  45. {
  46. eventLogBuilder.Append ("Changing: " + e.Node.NodeType + " into " + e.NewParent.NodeType + ".\n");
  47. }
  48. private void OnChangedLog (object o, XmlNodeChangedEventArgs e)
  49. {
  50. eventLogBuilder.Append ("Changed: " + e.Node.NodeType + " into " + e.NewParent.NodeType + ".\n");
  51. }
  52. private void OnRemovingLog (object o, XmlNodeChangedEventArgs e)
  53. {
  54. eventLogBuilder.Append ("Removing: " + e.Node.NodeType + " from " + e.OldParent.NodeType + ".\n");
  55. }
  56. private void OnRemovedLog (object o, XmlNodeChangedEventArgs e)
  57. {
  58. eventLogBuilder.Append ("Removed: " + e.Node.NodeType + " from " + e.OldParent.NodeType + ".\n");
  59. }
  60. [SetUp]
  61. public void SetUp ()
  62. {
  63. eventLogBuilder.Length = 0;
  64. }
  65. private string EventLog {
  66. get { return eventLogBuilder.ToString (); }
  67. }
  68. [Test]
  69. public void InsertingOrder ()
  70. {
  71. XmlDocument document = GetEventDocument ();
  72. XmlElement el = document.CreateElement ("root");
  73. el.AppendChild (document.CreateTextNode ("simple text node."));
  74. document.AppendChild (el);
  75. Assert.AreEqual ("Inserting: Text into Element.\n" +
  76. "Inserted: Text into Element.\n" +
  77. "Inserting: Element into Document.\n" +
  78. "Inserted: Element into Document.\n",
  79. EventLog);
  80. }
  81. [Test]
  82. public void DefaultAttributeRemoval ()
  83. {
  84. XmlDocument doc = new XmlDocument ();
  85. doc.LoadXml ("<!DOCTYPE root [<!ELEMENT root (#PCDATA)><!ATTLIST root foo CDATA 'foo-def'>]><root></root>");
  86. SetEvents (doc);
  87. doc.DocumentElement.RemoveAll ();
  88. Assert.AreEqual ("Removing: Attribute from Element.\n" +
  89. "Removed: Attribute from Element.\n" +
  90. "Inserting: Text into Attribute.\n" +
  91. "Inserted: Text into Attribute.\n" +
  92. "Inserting: Attribute into Element.\n" +
  93. "Inserted: Attribute into Element.\n",
  94. EventLog);
  95. }
  96. }
  97. }