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