2 // System.IO.StringWriter
5 // Marcin Szczepanski (marcins@zipworld.com.au)
6 // Ben Maurer <bmaurer@users.sourceforge.net>
7 // Sebastien Pouliot <sebastien@ximian.com>
9 // Copyright (C) 2004 Novell (http://www.novell.com)
12 using NUnit
.Framework
;
15 using System
.Globalization
;
18 namespace MonoTests
.System
.IO
{
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() );
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() );
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 ());
112 public void TestGetStringBuilder() {
114 StringWriter writer
= new StringWriter ();
115 writer
.Write ("line");
116 StringBuilder builder
= writer
.GetStringBuilder ();
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");
130 writer
.Write ("kicks ass");
132 } catch (Exception e
) {
133 AssertEquals ("Close 2", typeof (ObjectDisposedException
), e
.GetType ());
136 AssertEquals ("Close 3", "mono", writer
.ToString ());
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 () {
148 StringWriter writer
= new StringWriter (null as StringBuilder
);
150 } catch (Exception e
) {
151 AssertEquals ("Exceptions 1", typeof (ArgumentNullException
), e
.GetType ());
154 StringWriter writer
= new StringWriter (null as IFormatProvider
);
157 StringWriter writer
= new StringWriter (null as StringBuilder
, null as IFormatProvider
);
159 } catch (Exception e
) {
160 AssertEquals ("Exceptions 2", typeof (ArgumentNullException
), e
.GetType ());
165 // strangely this is accepted [ExpectedException (typeof (ArgumentNullException))]
166 public void WriteString_Null ()
168 StringWriter writer
= new StringWriter ();
169 writer
.Write (null as String
);
173 [ExpectedException (typeof (ArgumentNullException
))]
174 public void WriteChars_Null ()
176 StringWriter writer
= new StringWriter ();
177 writer
.Write (null, 0, 0);
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);
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);
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);
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
);
217 public void Disposed_Encoding ()
219 StringWriter writer
= new StringWriter ();
221 AssertNotNull ("Disposed-Encoding", writer
.Encoding
);
225 public void Disposed_DoubleClose ()
227 StringWriter writer
= new StringWriter ();
233 public void Disposed_GetStringBuilder ()
235 StringWriter writer
= new StringWriter ();
236 writer
.Write ("Mono");
238 AssertNotNull ("Disposed-GetStringBuilder", writer
.GetStringBuilder ());
242 public void Disposed_ToString ()
244 StringWriter writer
= new StringWriter ();
245 writer
.Write ("Mono");
247 AssertEquals ("Disposed-ToString", "Mono", writer
.ToString ());
251 [ExpectedException (typeof (ObjectDisposedException
))]
252 public void Disposed_WriteChar ()
254 StringWriter writer
= new StringWriter ();
260 [ExpectedException (typeof (ObjectDisposedException
))]
261 public void Disposed_WriteString ()
263 StringWriter writer
= new StringWriter ();
265 writer
.Write ("mono");
269 [ExpectedException (typeof (ObjectDisposedException
))]
270 public void Disposed_WriteChars ()
272 char[] c
= new char [2] { 'a', 'b' }
;
273 StringWriter writer
= new StringWriter ();
275 writer
.Write (c
, 0, 2);