**** Merged from MCS ****
[mono-project.git] / mcs / class / corlib / Test / System.IO / StringWriterTest.cs
blob870dd8fb2c363135742193747c6230cb927afaec
1 //
2 // System.IO.StringWriter
3 //
4 // Authors:
5 // Marcin Szczepanski (marcins@zipworld.com.au)
6 // Ben Maurer <bmaurer@users.sourceforge.net>
7 // Sebastien Pouliot <sebastien@ximian.com>
8 //
9 // Copyright (C) 2004 Novell (http://www.novell.com)
12 using NUnit.Framework;
13 using System.IO;
14 using System;
15 using System.Globalization;
16 using System.Text;
18 namespace MonoTests.System.IO {
20 [TestFixture]
21 public class StringWriterTest : Assertion {
22 public void TestConstructors() {
23 StringBuilder sb = new StringBuilder("Test String");
25 StringWriter writer = new StringWriter( sb );
26 AssertEquals( sb, writer.GetStringBuilder() );
29 public void TestCultureInfoConstructor() {
31 StringWriter writer = new StringWriter(CultureInfo.InvariantCulture);
32 AssertNotNull( writer.GetStringBuilder() );
34 AssertEquals( String.Empty, writer.ToString() );
36 writer.Write( 'A' );
37 AssertEquals( "A", writer.ToString() );
39 writer.Write( " foo" );
40 AssertEquals( "A foo", writer.ToString() );
43 char[] testBuffer = "Test String".ToCharArray();
45 writer.Write( testBuffer, 0, 4 );
46 AssertEquals( "A fooTest", writer.ToString() );
48 writer.Write( testBuffer, 5, 6 );
49 AssertEquals( "A fooTestString", writer.ToString() );
51 writer = new StringWriter(CultureInfo.InvariantCulture);
52 writer.Write(null as string);
53 AssertEquals( "", writer.ToString() );
56 public void TestWrite() {
57 StringWriter writer = new StringWriter();
59 AssertEquals( String.Empty, writer.ToString() );
61 writer.Write( 'A' );
62 AssertEquals( "A", writer.ToString() );
64 writer.Write( " foo" );
65 AssertEquals( "A foo", writer.ToString() );
68 char[] testBuffer = "Test String".ToCharArray();
70 writer.Write( testBuffer, 0, 4 );
71 AssertEquals( "A fooTest", writer.ToString() );
73 writer.Write( testBuffer, 5, 6 );
74 AssertEquals( "A fooTestString", writer.ToString() );
76 writer = new StringWriter ();
77 writer.Write(null as string);
78 AssertEquals( "", writer.ToString() );
82 public void TestNewLine() {
84 StringWriter writer = new StringWriter();
86 writer.NewLine = "\n\r";
87 AssertEquals ("NewLine 1", "\n\r", writer.NewLine);
89 writer.WriteLine ("first");
90 AssertEquals ("NewLine 2", "first\n\r", writer.ToString());
92 writer.NewLine = "\n";
93 AssertEquals ("NewLine 3", "first\n\r", writer.ToString());
95 writer.WriteLine ("second");
96 AssertEquals ("NewLine 4", "first\n\rsecond\n", writer.ToString());
100 public void TestWriteLine() {
102 StringWriter writer = new StringWriter();
103 writer.NewLine = "\n";
105 writer.WriteLine ("first line");
106 writer.WriteLine ("second line");
108 AssertEquals ("WriteLine 1", "first line\nsecond line\n", writer.ToString ());
109 writer.Close ();
112 public void TestGetStringBuilder() {
114 StringWriter writer = new StringWriter ();
115 writer.Write ("line");
116 StringBuilder builder = writer.GetStringBuilder ();
117 builder.Append (12);
118 AssertEquals ("GetStringBuilder 1", "line12", writer.ToString ());
119 writer.Write ("test");
120 AssertEquals ("GetStringBuilder 2", "line12test", builder.ToString ());
123 public void TestClose() {
125 StringWriter writer = new StringWriter ();
126 writer.Write ("mono");
127 writer.Close ();
129 try {
130 writer.Write ("kicks ass");
131 Fail ("Close 1");
132 } catch (Exception e) {
133 AssertEquals ("Close 2", typeof (ObjectDisposedException), e.GetType ());
136 AssertEquals ("Close 3", "mono", writer.ToString ());
137 writer.Flush ();
138 StringBuilder builder = writer.GetStringBuilder ();
139 AssertEquals ("Close 4", "mono", builder.ToString ());
141 builder.Append (" kicks ass");
142 AssertEquals ("Close 5", "mono kicks ass", writer.ToString ());
145 public void TestExceptions () {
147 try {
148 StringWriter writer = new StringWriter (null as StringBuilder);
149 Fail();
150 } catch (Exception e) {
151 AssertEquals ("Exceptions 1", typeof (ArgumentNullException), e.GetType ());
154 StringWriter writer = new StringWriter (null as IFormatProvider);
156 try {
157 StringWriter writer = new StringWriter (null as StringBuilder, null as IFormatProvider);
158 Fail ();
159 } catch (Exception e) {
160 AssertEquals ("Exceptions 2", typeof (ArgumentNullException), e.GetType ());
164 [Test]
165 // strangely this is accepted [ExpectedException (typeof (ArgumentNullException))]
166 public void WriteString_Null ()
168 StringWriter writer = new StringWriter ();
169 writer.Write (null as String);
172 [Test]
173 [ExpectedException (typeof (ArgumentNullException))]
174 public void WriteChars_Null ()
176 StringWriter writer = new StringWriter ();
177 writer.Write (null, 0, 0);
180 [Test]
181 [ExpectedException (typeof (ArgumentOutOfRangeException))]
182 public void WriteChars_IndexNegative ()
184 char[] c = new char [2] { 'a', 'b' };
185 StringWriter writer = new StringWriter ();
186 writer.Write (c, -1, 0);
189 [Test]
190 [ExpectedException (typeof (ArgumentOutOfRangeException))]
191 public void WriteChars_CountNegative ()
193 char[] c = new char [2] { 'a', 'b' };
194 StringWriter writer = new StringWriter ();
195 writer.Write (c, 0, -1);
198 [Test]
199 [ExpectedException (typeof (ArgumentException))]
200 public void WriteChars_IndexOverflow ()
202 char[] c = new char [2] { 'a', 'b' };
203 StringWriter writer = new StringWriter ();
204 writer.Write (c, Int32.MaxValue, 0);
207 [Test]
208 [ExpectedException (typeof (ArgumentException))]
209 public void WriteChars_CountOverflow ()
211 char[] c = new char [2] { 'a', 'b' };
212 StringWriter writer = new StringWriter ();
213 writer.Write (c, 0, Int32.MaxValue);
216 [Test]
217 public void Disposed_Encoding ()
219 StringWriter writer = new StringWriter ();
220 writer.Close ();
221 AssertNotNull ("Disposed-Encoding", writer.Encoding);
224 [Test]
225 public void Disposed_DoubleClose ()
227 StringWriter writer = new StringWriter ();
228 writer.Close ();
229 writer.Close ();
232 [Test]
233 public void Disposed_GetStringBuilder ()
235 StringWriter writer = new StringWriter ();
236 writer.Write ("Mono");
237 writer.Close ();
238 AssertNotNull ("Disposed-GetStringBuilder", writer.GetStringBuilder ());
241 [Test]
242 public void Disposed_ToString ()
244 StringWriter writer = new StringWriter ();
245 writer.Write ("Mono");
246 writer.Close ();
247 AssertEquals ("Disposed-ToString", "Mono", writer.ToString ());
250 [Test]
251 [ExpectedException (typeof (ObjectDisposedException))]
252 public void Disposed_WriteChar ()
254 StringWriter writer = new StringWriter ();
255 writer.Close ();
256 writer.Write ('c');
259 [Test]
260 [ExpectedException (typeof (ObjectDisposedException))]
261 public void Disposed_WriteString ()
263 StringWriter writer = new StringWriter ();
264 writer.Close ();
265 writer.Write ("mono");
268 [Test]
269 [ExpectedException (typeof (ObjectDisposedException))]
270 public void Disposed_WriteChars ()
272 char[] c = new char [2] { 'a', 'b' };
273 StringWriter writer = new StringWriter ();
274 writer.Close ();
275 writer.Write (c, 0, 2);