2003-07-12 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
[mono.git] / mcs / class / System.XML / Test / System.Xml / XmlCharacterDataTests.cs
1 //
2 // System.Xml.XmlTextWriterTests
3 //
4 // Author: Kral Ferch <kral_ferch@hotmail.com>
5 // Author: Martin Willemoes Hansen <mwh@sysrq.dk>
6 //
7 // (C) 2002 Kral Ferch
8 // (C) 2003 Martin Willemoes Hansen
9 //
10
11 using System;
12 using System.Xml;
13
14 using NUnit.Framework;
15
16 namespace MonoTests.System.Xml
17 {
18         [TestFixture]
19         public class XmlCharacterDataTests : Assertion
20         {
21                 XmlDocument document;
22                 XmlComment comment;
23                 bool changed;
24                 bool changing;
25
26                 [SetUp]
27                 public void GetReady ()
28                 {
29                         document = new XmlDocument ();
30                         document.NodeChanged += new XmlNodeChangedEventHandler (this.EventNodeChanged);
31                         document.NodeChanging += new XmlNodeChangedEventHandler (this.EventNodeChanging);
32                         comment = document.CreateComment ("foo");
33                 }
34
35                 private void EventNodeChanged(Object sender, XmlNodeChangedEventArgs e)
36                 {
37                         changed = true;
38                 }
39
40                 private void EventNodeChanging (Object sender, XmlNodeChangedEventArgs e)
41                 {
42                         changing = true;
43                 }
44
45                 [Test]
46                 public void AppendData ()
47                 {
48                         changed = false;
49                         changing = false;
50                         comment.AppendData ("bar");
51                         Assert (changed);
52                         Assert (changing);
53                         AssertEquals ("foobar", comment.Data);
54
55                         comment.Value = "foo";
56                         comment.AppendData (null);
57                         AssertEquals ("foo", comment.Data);
58                 }
59
60                 [Test]
61                 public void DeleteData ()
62                 {
63                         comment.Value = "bar";
64                         changed = false;
65                         changing = false;
66                         comment.DeleteData (1, 1);
67                         Assert (changed);
68                         Assert (changing);
69                         AssertEquals ("br", comment.Data);
70
71                         try 
72                         {
73                                 comment.Value = "foo";
74                                 comment.DeleteData(-1, 1);
75                                 Fail ("Expected an ArgumentOutOfRangeException to be thrown.");
76                         } 
77                         catch (ArgumentOutOfRangeException) {}
78
79                         comment.Value = "foo";
80                         comment.DeleteData(1, 5);
81                         AssertEquals("f", comment.Data);
82
83                         comment.Value = "foo";
84                         comment.DeleteData(3, 10);
85                         AssertEquals("foo", comment.Data);
86                 }
87
88                 [Test]
89                 public void InsertData ()
90                 {
91                         comment.Value = "foobaz";
92                         changed = false;
93                         changing = false;
94                         comment.InsertData (3, "bar");
95                         Assert (changed);
96                         Assert (changing);
97                         AssertEquals ("foobarbaz", comment.Data);
98
99                         try 
100                         {
101                                 comment.Value = "foo";
102                                 comment.InsertData (-1, "bar");
103                                 Fail ("Expected an ArgumentOutOfRangeException to be thrown.");
104                         } 
105                         catch (ArgumentOutOfRangeException) {}
106
107                         comment.Value = "foo";
108                         comment.InsertData (3, "bar");
109                         AssertEquals ("foobar", comment.Data);
110
111                         try 
112                         {
113                                 comment.Value = "foo";
114                                 comment.InsertData (4, "bar");
115                                 Fail ("Expected an ArgumentOutOfRangeException to be thrown.");
116                         } 
117                         catch (ArgumentOutOfRangeException) {}
118
119                         try 
120                         {
121                                 comment.Value = "foo";
122                                 comment.InsertData (1, null);
123                                 Fail ("Expected an ArgumentNullException to be thrown.");
124                         } 
125                         catch (ArgumentNullException) {}
126                 }
127
128                 [Test]
129                 public void ReplaceData ()
130                 {
131                         changed = false;
132                         changing = false;
133                         comment.ReplaceData (0, 3, "bar");
134                         Assert (changed);
135                         Assert (changing);
136                         AssertEquals ("bar", comment.Data);
137
138                         comment.Value = "foo";
139                         comment.ReplaceData (2, 3, "bar");
140                         AssertEquals ("fobar", comment.Data);
141
142                         comment.Value = "foo";
143                         comment.ReplaceData (3, 3, "bar");
144                         AssertEquals ("foobar", comment.Data);
145
146                         try 
147                         {
148                                 comment.Value = "foo";
149                                 comment.ReplaceData (4, 3, "bar");
150                                 Fail ("Expected an ArgumentOutOfRangeException to be thrown.");
151                         } 
152                         catch (ArgumentOutOfRangeException) {}
153
154                         try 
155                         {
156                                 comment.Value = "foo";
157                                 comment.ReplaceData (-1, 3, "bar");
158                                 Fail ("Expected an ArgumentOutOfRangeException to be thrown.");
159                         } 
160                         catch (ArgumentOutOfRangeException) {}
161
162                         comment.Value = "foo";
163                         comment.ReplaceData (0, 2, "bar");
164                         AssertEquals ("baro", comment.Data);
165
166                         comment.Value = "foo";
167                         comment.ReplaceData (0, 5, "bar");
168                         AssertEquals ("bar", comment.Data);
169
170                         try 
171                         {
172                                 comment.Value = "foo";
173                                 comment.ReplaceData (1, 1, null);
174                                 Fail ("Expected an ArgumentNullException to be thrown.");
175                         } 
176                         catch (ArgumentNullException) {}
177                 }
178         }
179 }