2003-05-22 Ben Maurer <bmaurer@users.sourceforge.net>
[mono.git] / mcs / class / corlib / Test / System.IO / StringWriterTest.cs
1 //\r
2 // System.IO.StringWriter\r
3 //\r
4 // Authors:
5 //      Marcin Szczepanski (marcins@zipworld.com.au)\r
6 //      Ben Maurer <bmaurer@users.sourceforge.net>
7 //\r
8 // TODO: Add some testing for exceptions\r
9 //\r
10 \r
11 using NUnit.Framework;\r
12 using System.IO;\r
13 using System;
14 using System.Globalization;\r
15 using System.Text;\r
16 \r
17 namespace MonoTests.System.IO {\r
18 \r
19 public class StringWriterTest : TestCase {\r
20         public void TestConstructors() {\r
21                 StringBuilder sb = new StringBuilder("Test String");\r
22 \r
23                 StringWriter writer = new StringWriter( sb );\r
24                 AssertEquals( sb, writer.GetStringBuilder() );\r
25         }
26         \r
27         public void TestCultureInfoConstructor() {\r
28 \r
29                 StringWriter writer = new StringWriter(CultureInfo.InvariantCulture);\r
30                 AssertNotNull( writer.GetStringBuilder() );
31                 
32                 AssertEquals( String.Empty, writer.ToString() );
33                 
34                 writer.Write( 'A' );
35                 AssertEquals( "A", writer.ToString() );
36                 
37                 writer.Write( " foo" );
38                 AssertEquals( "A foo", writer.ToString() );
39                 
40                 
41                 char[] testBuffer = "Test String".ToCharArray();
42                 
43                 writer.Write( testBuffer, 0, 4 );
44                 AssertEquals( "A fooTest", writer.ToString() );
45                 
46                 writer.Write( testBuffer, 5, 6 );
47                 AssertEquals( "A fooTestString", writer.ToString() );
48                 
49                 writer = new StringWriter(CultureInfo.InvariantCulture);
50                 writer.Write(null as string);
51                 AssertEquals( "", writer.ToString() );\r
52         }\r
53 \r
54         public void TestWrite() {\r
55                 StringWriter writer = new StringWriter();\r
56 \r
57                 AssertEquals( String.Empty, writer.ToString() );\r
58                 \r
59                 writer.Write( 'A' );\r
60                 AssertEquals( "A", writer.ToString() );\r
61 \r
62                 writer.Write( " foo" );\r
63                 AssertEquals( "A foo", writer.ToString() );\r
64 \r
65                 \r
66                 char[] testBuffer = "Test String".ToCharArray();\r
67 \r
68                 writer.Write( testBuffer, 0, 4 );\r
69                 AssertEquals( "A fooTest", writer.ToString() );\r
70 \r
71                 writer.Write( testBuffer, 5, 6 );\r
72                 AssertEquals( "A fooTestString", writer.ToString() );\r
73 \r
74                 writer = new StringWriter ();\r
75                 writer.Write(null as string);\r
76                 AssertEquals( "", writer.ToString() );\r
77 \r
78         }\r
79 \r
80         public void TestNewLine() {\r
81                 \r
82                 StringWriter writer = new StringWriter();\r
83                 \r
84                 writer.NewLine = "\n\r";\r
85                 AssertEquals ("NewLine 1", "\n\r", writer.NewLine);\r
86                 \r
87                 writer.WriteLine ("first");\r
88                 AssertEquals ("NewLine 2", "first\n\r", writer.ToString());\r
89                 \r
90                 writer.NewLine = "\n";\r
91                 AssertEquals ("NewLine 3", "first\n\r", writer.ToString());\r
92                 \r
93                 writer.WriteLine ("second");\r
94                 AssertEquals ("NewLine 4", "first\n\rsecond\n", writer.ToString());\r
95                 \r
96         }\r
97         \r
98         public void TestWriteLine() {\r
99                 \r
100                 StringWriter writer = new StringWriter();\r
101                 writer.NewLine = "\n";\r
102                 \r
103                 writer.WriteLine ("first line");\r
104                 writer.WriteLine ("second line");\r
105                                 \r
106                 AssertEquals ("WriteLine 1", "first line\nsecond line\n", writer.ToString ());\r
107                 writer.Close ();\r
108         }\r
109         \r
110         public void TestGetStringBuilder() {\r
111                 \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
119         }\r
120         \r
121         public void TestClose() {\r
122                 \r
123                 StringWriter writer = new StringWriter ();\r
124                 writer.Write ("mono");\r
125                 writer.Close ();\r
126                 \r
127                 try {\r
128                         writer.Write ("kicks ass");\r
129                         Fail ("Close 1");\r
130                 } catch (Exception e) {\r
131                         AssertEquals ("Close 2", typeof (ObjectDisposedException), e.GetType ());\r
132                 }\r
133 \r
134                 AssertEquals ("Close 3", "mono", writer.ToString ());\r
135                 writer.Flush ();\r
136                 StringBuilder builder = writer.GetStringBuilder ();\r
137                 AssertEquals ("Close 4", "mono", builder.ToString ());\r
138                 \r
139                 builder.Append (" kicks ass");\r
140                 AssertEquals ("Close 5", "mono kicks ass", writer.ToString ());\r
141         }\r
142 \r
143         public void TestExceptions () {\r
144                 \r
145                 try {\r
146                         StringWriter writer = new StringWriter (null as StringBuilder);\r
147                         Fail();\r
148                 } catch (Exception e) {\r
149                         AssertEquals ("Exceptions 1", typeof (ArgumentNullException), e.GetType ());\r
150                 }\r
151                 {\r
152                 StringWriter writer = new StringWriter (null as IFormatProvider);\r
153                 }\r
154                 try {\r
155                         StringWriter writer = new StringWriter (null as StringBuilder, null as IFormatProvider);\r
156                         Fail ();\r
157                 } catch (Exception e) {\r
158                         AssertEquals ("Exceptions 2", typeof (ArgumentNullException), e.GetType ());\r
159                 }                               \r
160         }\r
161 \r
162 \r
163 }\r
164 \r
165 }\r