-//\r
-// System.IO.StringWriter\r
-//\r
+//
+// System.IO.StringWriter
+//
// Authors:
-// Marcin Szczepanski (marcins@zipworld.com.au)\r
+// Marcin Szczepanski (marcins@zipworld.com.au)
// Ben Maurer <bmaurer@users.sourceforge.net>
-//\r
-// TODO: Add some testing for exceptions\r
-//\r
-\r
-using NUnit.Framework;\r
-using System.IO;\r
+// Sebastien Pouliot <sebastien@ximian.com>
+//
+// Copyright (C) 2004 Novell (http://www.novell.com)
+//
+
+using NUnit.Framework;
+using System.IO;
using System;
-using System.Globalization;\r
-using System.Text;\r
-\r
-namespace MonoTests.System.IO {\r
-\r
-[TestFixture]\r
-public class StringWriterTest : Assertion {\r
- public void TestConstructors() {\r
- StringBuilder sb = new StringBuilder("Test String");\r
-\r
- StringWriter writer = new StringWriter( sb );\r
- AssertEquals( sb, writer.GetStringBuilder() );\r
- }\r
-\r
- public void TestCultureInfoConstructor() {\r
-\r
- StringWriter writer = new StringWriter(CultureInfo.InvariantCulture);\r
+using System.Globalization;
+using System.Text;
+
+namespace MonoTests.System.IO {
+
+[TestFixture]
+public class StringWriterTest : Assertion {
+ public void TestConstructors() {
+ StringBuilder sb = new StringBuilder("Test String");
+
+ StringWriter writer = new StringWriter( sb );
+ AssertEquals( sb, writer.GetStringBuilder() );
+ }
+
+ public void TestCultureInfoConstructor() {
+
+ StringWriter writer = new StringWriter(CultureInfo.InvariantCulture);
AssertNotNull( writer.GetStringBuilder() );
AssertEquals( String.Empty, writer.ToString() );
writer = new StringWriter(CultureInfo.InvariantCulture);
writer.Write(null as string);
- AssertEquals( "", writer.ToString() );\r
- }\r
-\r
- public void TestWrite() {\r
- StringWriter writer = new StringWriter();\r
-\r
- AssertEquals( String.Empty, writer.ToString() );\r
- \r
- writer.Write( 'A' );\r
- AssertEquals( "A", writer.ToString() );\r
-\r
- writer.Write( " foo" );\r
- AssertEquals( "A foo", writer.ToString() );\r
-\r
- \r
- char[] testBuffer = "Test String".ToCharArray();\r
-\r
- writer.Write( testBuffer, 0, 4 );\r
- AssertEquals( "A fooTest", writer.ToString() );\r
-\r
- writer.Write( testBuffer, 5, 6 );\r
- AssertEquals( "A fooTestString", writer.ToString() );\r
-\r
- writer = new StringWriter ();\r
- writer.Write(null as string);\r
- AssertEquals( "", writer.ToString() );\r
-\r
- }\r
-\r
- public void TestNewLine() {\r
- \r
- StringWriter writer = new StringWriter();\r
- \r
- writer.NewLine = "\n\r";\r
- AssertEquals ("NewLine 1", "\n\r", writer.NewLine);\r
- \r
- writer.WriteLine ("first");\r
- AssertEquals ("NewLine 2", "first\n\r", writer.ToString());\r
- \r
- writer.NewLine = "\n";\r
- AssertEquals ("NewLine 3", "first\n\r", writer.ToString());\r
- \r
- writer.WriteLine ("second");\r
- AssertEquals ("NewLine 4", "first\n\rsecond\n", writer.ToString());\r
- \r
- }\r
- \r
- public void TestWriteLine() {\r
- \r
- StringWriter writer = new StringWriter();\r
- writer.NewLine = "\n";\r
- \r
- writer.WriteLine ("first line");\r
- writer.WriteLine ("second line");\r
- \r
- AssertEquals ("WriteLine 1", "first line\nsecond line\n", writer.ToString ());\r
- writer.Close ();\r
- }\r
- \r
- public void TestGetStringBuilder() {\r
- \r
- StringWriter writer = new StringWriter ();\r
- writer.Write ("line");\r
- StringBuilder builder = writer.GetStringBuilder ();\r
- builder.Append (12);\r
- AssertEquals ("GetStringBuilder 1", "line12", writer.ToString ());\r
- writer.Write ("test");\r
- AssertEquals ("GetStringBuilder 2", "line12test", builder.ToString ()); \r
- }\r
- \r
- public void TestClose() {\r
- \r
- StringWriter writer = new StringWriter ();\r
- writer.Write ("mono");\r
- writer.Close ();\r
- \r
- try {\r
- writer.Write ("kicks ass");\r
- Fail ("Close 1");\r
- } catch (Exception e) {\r
- AssertEquals ("Close 2", typeof (ObjectDisposedException), e.GetType ());\r
- }\r
-\r
- AssertEquals ("Close 3", "mono", writer.ToString ());\r
- writer.Flush ();\r
- StringBuilder builder = writer.GetStringBuilder ();\r
- AssertEquals ("Close 4", "mono", builder.ToString ());\r
- \r
- builder.Append (" kicks ass");\r
- AssertEquals ("Close 5", "mono kicks ass", writer.ToString ());\r
- }\r
-\r
- public void TestExceptions () {\r
- \r
- try {\r
- StringWriter writer = new StringWriter (null as StringBuilder);\r
- Fail();\r
- } catch (Exception e) {\r
- AssertEquals ("Exceptions 1", typeof (ArgumentNullException), e.GetType ());\r
- }\r
- {\r
- StringWriter writer = new StringWriter (null as IFormatProvider);\r
- }\r
- try {\r
- StringWriter writer = new StringWriter (null as StringBuilder, null as IFormatProvider);\r
- Fail ();\r
- } catch (Exception e) {\r
- AssertEquals ("Exceptions 2", typeof (ArgumentNullException), e.GetType ());\r
- } \r
- }\r
-\r
-\r
-}\r
-\r
-}\r
+ AssertEquals( "", writer.ToString() );
+ }
+
+ public void TestWrite() {
+ StringWriter writer = new StringWriter();
+
+ AssertEquals( String.Empty, writer.ToString() );
+
+ writer.Write( 'A' );
+ AssertEquals( "A", writer.ToString() );
+
+ writer.Write( " foo" );
+ AssertEquals( "A foo", writer.ToString() );
+
+
+ char[] testBuffer = "Test String".ToCharArray();
+
+ writer.Write( testBuffer, 0, 4 );
+ AssertEquals( "A fooTest", writer.ToString() );
+
+ writer.Write( testBuffer, 5, 6 );
+ AssertEquals( "A fooTestString", writer.ToString() );
+
+ writer = new StringWriter ();
+ writer.Write(null as string);
+ AssertEquals( "", writer.ToString() );
+
+ }
+
+ public void TestNewLine() {
+
+ StringWriter writer = new StringWriter();
+
+ writer.NewLine = "\n\r";
+ AssertEquals ("NewLine 1", "\n\r", writer.NewLine);
+
+ writer.WriteLine ("first");
+ AssertEquals ("NewLine 2", "first\n\r", writer.ToString());
+
+ writer.NewLine = "\n";
+ AssertEquals ("NewLine 3", "first\n\r", writer.ToString());
+
+ writer.WriteLine ("second");
+ AssertEquals ("NewLine 4", "first\n\rsecond\n", writer.ToString());
+
+ }
+
+ public void TestWriteLine() {
+
+ StringWriter writer = new StringWriter();
+ writer.NewLine = "\n";
+
+ writer.WriteLine ("first line");
+ writer.WriteLine ("second line");
+
+ AssertEquals ("WriteLine 1", "first line\nsecond line\n", writer.ToString ());
+ writer.Close ();
+ }
+
+ public void TestGetStringBuilder() {
+
+ StringWriter writer = new StringWriter ();
+ writer.Write ("line");
+ StringBuilder builder = writer.GetStringBuilder ();
+ builder.Append (12);
+ AssertEquals ("GetStringBuilder 1", "line12", writer.ToString ());
+ writer.Write ("test");
+ AssertEquals ("GetStringBuilder 2", "line12test", builder.ToString ());
+ }
+
+ public void TestClose() {
+
+ StringWriter writer = new StringWriter ();
+ writer.Write ("mono");
+ writer.Close ();
+
+ try {
+ writer.Write ("kicks ass");
+ Fail ("Close 1");
+ } catch (Exception e) {
+ AssertEquals ("Close 2", typeof (ObjectDisposedException), e.GetType ());
+ }
+
+ AssertEquals ("Close 3", "mono", writer.ToString ());
+ writer.Flush ();
+ StringBuilder builder = writer.GetStringBuilder ();
+ AssertEquals ("Close 4", "mono", builder.ToString ());
+
+ builder.Append (" kicks ass");
+ AssertEquals ("Close 5", "mono kicks ass", writer.ToString ());
+ }
+
+ public void TestExceptions () {
+
+ try {
+ StringWriter writer = new StringWriter (null as StringBuilder);
+ Fail();
+ } catch (Exception e) {
+ AssertEquals ("Exceptions 1", typeof (ArgumentNullException), e.GetType ());
+ }
+ {
+ StringWriter writer = new StringWriter (null as IFormatProvider);
+ }
+ try {
+ StringWriter writer = new StringWriter (null as StringBuilder, null as IFormatProvider);
+ Fail ();
+ } catch (Exception e) {
+ AssertEquals ("Exceptions 2", typeof (ArgumentNullException), e.GetType ());
+ }
+ }
+
+ [Test]
+ // strangely this is accepted [ExpectedException (typeof (ArgumentNullException))]
+ public void WriteString_Null ()
+ {
+ StringWriter writer = new StringWriter ();
+ writer.Write (null as String);
+ }
+
+ [Test]
+ [ExpectedException (typeof (ArgumentNullException))]
+ public void WriteChars_Null ()
+ {
+ StringWriter writer = new StringWriter ();
+ writer.Write (null, 0, 0);
+ }
+
+ [Test]
+ [ExpectedException (typeof (ArgumentOutOfRangeException))]
+ public void WriteChars_IndexNegative ()
+ {
+ char[] c = new char [2] { 'a', 'b' };
+ StringWriter writer = new StringWriter ();
+ writer.Write (c, -1, 0);
+ }
+
+ [Test]
+ [ExpectedException (typeof (ArgumentOutOfRangeException))]
+ public void WriteChars_CountNegative ()
+ {
+ char[] c = new char [2] { 'a', 'b' };
+ StringWriter writer = new StringWriter ();
+ writer.Write (c, 0, -1);
+ }
+
+ [Test]
+ [ExpectedException (typeof (ArgumentException))]
+ public void WriteChars_IndexOverflow ()
+ {
+ char[] c = new char [2] { 'a', 'b' };
+ StringWriter writer = new StringWriter ();
+ writer.Write (c, Int32.MaxValue, 0);
+ }
+
+ [Test]
+ [ExpectedException (typeof (ArgumentException))]
+ public void WriteChars_CountOverflow ()
+ {
+ char[] c = new char [2] { 'a', 'b' };
+ StringWriter writer = new StringWriter ();
+ writer.Write (c, 0, Int32.MaxValue);
+ }
+
+ [Test]
+ public void Disposed_Encoding ()
+ {
+ StringWriter writer = new StringWriter ();
+ writer.Close ();
+ AssertNotNull ("Disposed-Encoding", writer.Encoding);
+ }
+
+ [Test]
+ public void Disposed_DoubleClose ()
+ {
+ StringWriter writer = new StringWriter ();
+ writer.Close ();
+ writer.Close ();
+ }
+
+ [Test]
+ public void Disposed_GetStringBuilder ()
+ {
+ StringWriter writer = new StringWriter ();
+ writer.Write ("Mono");
+ writer.Close ();
+ AssertNotNull ("Disposed-GetStringBuilder", writer.GetStringBuilder ());
+ }
+
+ [Test]
+ public void Disposed_ToString ()
+ {
+ StringWriter writer = new StringWriter ();
+ writer.Write ("Mono");
+ writer.Close ();
+ AssertEquals ("Disposed-ToString", "Mono", writer.ToString ());
+ }
+
+ [Test]
+ [ExpectedException (typeof (ObjectDisposedException))]
+ public void Disposed_WriteChar ()
+ {
+ StringWriter writer = new StringWriter ();
+ writer.Close ();
+ writer.Write ('c');
+ }
+
+ [Test]
+ [ExpectedException (typeof (ObjectDisposedException))]
+ public void Disposed_WriteString ()
+ {
+ StringWriter writer = new StringWriter ();
+ writer.Close ();
+ writer.Write ("mono");
+ }
+
+ [Test]
+ [ExpectedException (typeof (ObjectDisposedException))]
+ public void Disposed_WriteChars ()
+ {
+ char[] c = new char [2] { 'a', 'b' };
+ StringWriter writer = new StringWriter ();
+ writer.Close ();
+ writer.Write (c, 0, 2);
+ }
+}
+
+}