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