2
0

XmlDocumentEventTests.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  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 : Assertion
  19. {
  20. public static void Main ()
  21. {
  22. new XmlDocumentEventTests ().InsertingOrder ();
  23. }
  24. private StringBuilder eventLogBuilder = new StringBuilder ();
  25. private XmlDocument GetEventDocument ()
  26. {
  27. XmlDocument document = new XmlDocument ();
  28. SetEvents (document);
  29. return document;
  30. }
  31. private void SetEvents (XmlDocument document)
  32. {
  33. document.NodeInserting += new XmlNodeChangedEventHandler (OnInsertingLog);
  34. document.NodeInserted += new XmlNodeChangedEventHandler (OnInsertedLog);
  35. document.NodeChanging += new XmlNodeChangedEventHandler (OnChangingLog);
  36. document.NodeChanged += new XmlNodeChangedEventHandler (OnChangedLog);
  37. document.NodeRemoving += new XmlNodeChangedEventHandler (OnRemovingLog);
  38. document.NodeRemoved += new XmlNodeChangedEventHandler (OnRemovedLog);
  39. }
  40. private void OnInsertingLog (object o, XmlNodeChangedEventArgs e)
  41. {
  42. eventLogBuilder.Append ("Inserting: " + e.Node.NodeType + " into " + e.NewParent.NodeType + ".\n");
  43. }
  44. private void OnInsertedLog (object o, XmlNodeChangedEventArgs e)
  45. {
  46. eventLogBuilder.Append ("Inserted: " + e.Node.NodeType + " into " + e.NewParent.NodeType + ".\n");
  47. }
  48. private void OnChangingLog (object o, XmlNodeChangedEventArgs e)
  49. {
  50. eventLogBuilder.Append ("Changing: " + e.Node.NodeType + " into " + e.NewParent.NodeType + ".\n");
  51. }
  52. private void OnChangedLog (object o, XmlNodeChangedEventArgs e)
  53. {
  54. eventLogBuilder.Append ("Changed: " + e.Node.NodeType + " into " + e.NewParent.NodeType + ".\n");
  55. }
  56. private void OnRemovingLog (object o, XmlNodeChangedEventArgs e)
  57. {
  58. eventLogBuilder.Append ("Removing: " + e.Node.NodeType + " from " + e.OldParent.NodeType + ".\n");
  59. }
  60. private void OnRemovedLog (object o, XmlNodeChangedEventArgs e)
  61. {
  62. eventLogBuilder.Append ("Removed: " + e.Node.NodeType + " from " + e.OldParent.NodeType + ".\n");
  63. }
  64. [SetUp]
  65. public void SetUp ()
  66. {
  67. eventLogBuilder.Length = 0;
  68. }
  69. private string EventLog {
  70. get { return eventLogBuilder.ToString (); }
  71. }
  72. [Test]
  73. public void InsertingOrder ()
  74. {
  75. XmlDocument document = GetEventDocument ();
  76. XmlElement el = document.CreateElement ("root");
  77. el.AppendChild (document.CreateTextNode ("simple text node."));
  78. document.AppendChild (el);
  79. AssertEquals (
  80. @"Inserting: Text into Element.
  81. Inserted: Text into Element.
  82. Inserting: Element into Document.
  83. Inserted: Element into Document.
  84. ", EventLog);
  85. }
  86. [Test]
  87. public void DefaultAttributeRemoval ()
  88. {
  89. XmlDocument doc = new XmlDocument ();
  90. doc.LoadXml ("<!DOCTYPE root [<!ELEMENT root (#PCDATA)><!ATTLIST root foo CDATA 'foo-def'>]><root></root>");
  91. SetEvents (doc);
  92. doc.DocumentElement.RemoveAll ();
  93. AssertEquals (
  94. @"Removing: Attribute from Element.
  95. Removed: Attribute from Element.
  96. Inserting: Text into Attribute.
  97. Inserted: Text into Attribute.
  98. Inserting: Attribute into Element.
  99. Inserted: Attribute into Element.
  100. ", EventLog);
  101. }
  102. }
  103. }