2 // System.IO.StringWriter
\r
5 // Marcin Szczepanski (marcins@zipworld.com.au)
\r
6 // Ben Maurer <bmaurer@users.sourceforge.net>
8 // TODO: Add some testing for exceptions
\r
11 using NUnit.Framework;
\r
14 using System.Globalization;
\r
17 namespace MonoTests.System.IO {
\r
19 public class StringWriterTest : TestCase {
\r
20 public void TestConstructors() {
\r
21 StringBuilder sb = new StringBuilder("Test String");
\r
23 StringWriter writer = new StringWriter( sb );
\r
24 AssertEquals( sb, writer.GetStringBuilder() );
\r
27 public void TestCultureInfoConstructor() {
\r
29 StringWriter writer = new StringWriter(CultureInfo.InvariantCulture);
\r
30 AssertNotNull( writer.GetStringBuilder() );
32 AssertEquals( String.Empty, writer.ToString() );
35 AssertEquals( "A", writer.ToString() );
37 writer.Write( " foo" );
38 AssertEquals( "A foo", writer.ToString() );
41 char[] testBuffer = "Test String".ToCharArray();
43 writer.Write( testBuffer, 0, 4 );
44 AssertEquals( "A fooTest", writer.ToString() );
46 writer.Write( testBuffer, 5, 6 );
47 AssertEquals( "A fooTestString", writer.ToString() );
49 writer = new StringWriter(CultureInfo.InvariantCulture);
50 writer.Write(null as string);
51 AssertEquals( "", writer.ToString() );
\r
54 public void TestWrite() {
\r
55 StringWriter writer = new StringWriter();
\r
57 AssertEquals( String.Empty, writer.ToString() );
\r
59 writer.Write( 'A' );
\r
60 AssertEquals( "A", writer.ToString() );
\r
62 writer.Write( " foo" );
\r
63 AssertEquals( "A foo", writer.ToString() );
\r
66 char[] testBuffer = "Test String".ToCharArray();
\r
68 writer.Write( testBuffer, 0, 4 );
\r
69 AssertEquals( "A fooTest", writer.ToString() );
\r
71 writer.Write( testBuffer, 5, 6 );
\r
72 AssertEquals( "A fooTestString", writer.ToString() );
\r
74 writer = new StringWriter ();
\r
75 writer.Write(null as string);
\r
76 AssertEquals( "", writer.ToString() );
\r
80 public void TestNewLine() {
\r
82 StringWriter writer = new StringWriter();
\r
84 writer.NewLine = "\n\r";
\r
85 AssertEquals ("NewLine 1", "\n\r", writer.NewLine);
\r
87 writer.WriteLine ("first");
\r
88 AssertEquals ("NewLine 2", "first\n\r", writer.ToString());
\r
90 writer.NewLine = "\n";
\r
91 AssertEquals ("NewLine 3", "first\n\r", writer.ToString());
\r
93 writer.WriteLine ("second");
\r
94 AssertEquals ("NewLine 4", "first\n\rsecond\n", writer.ToString());
\r
98 public void TestWriteLine() {
\r
100 StringWriter writer = new StringWriter();
\r
101 writer.NewLine = "\n";
\r
103 writer.WriteLine ("first line");
\r
104 writer.WriteLine ("second line");
\r
106 AssertEquals ("WriteLine 1", "first line\nsecond line\n", writer.ToString ());
\r
110 public void TestGetStringBuilder() {
\r
112 StringWriter writer = new StringWriter ();
\r
113 writer.Write ("line");
\r
114 StringBuilder builder = writer.GetStringBuilder ();
\r
115 builder.Append (12);
\r
116 AssertEquals ("GetStringBuilder 1", "line12", writer.ToString ());
\r
117 writer.Write ("test");
\r
118 AssertEquals ("GetStringBuilder 2", "line12test", builder.ToString ());
\r
121 public void TestClose() {
\r
123 StringWriter writer = new StringWriter ();
\r
124 writer.Write ("mono");
\r
128 writer.Write ("kicks ass");
\r
130 } catch (Exception e) {
\r
131 AssertEquals ("Close 2", typeof (ObjectDisposedException), e.GetType ());
\r
134 AssertEquals ("Close 3", "mono", writer.ToString ());
\r
136 StringBuilder builder = writer.GetStringBuilder ();
\r
137 AssertEquals ("Close 4", "mono", builder.ToString ());
\r
139 builder.Append (" kicks ass");
\r
140 AssertEquals ("Close 5", "mono kicks ass", writer.ToString ());
\r
143 public void TestExceptions () {
\r
146 StringWriter writer = new StringWriter (null as StringBuilder);
\r
148 } catch (Exception e) {
\r
149 AssertEquals ("Exceptions 1", typeof (ArgumentNullException), e.GetType ());
\r
152 StringWriter writer = new StringWriter (null as IFormatProvider);
\r
155 StringWriter writer = new StringWriter (null as StringBuilder, null as IFormatProvider);
\r
157 } catch (Exception e) {
\r
158 AssertEquals ("Exceptions 2", typeof (ArgumentNullException), e.GetType ());
\r