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