2002/03/07 Nick Drochak <ndrochak@gol.com>
[mono.git] / mcs / class / corlib / Test / System.IO / StringReaderTest.cs
1 //
2 // System.IO.StringWriter
3 //
4 // Author: Marcin Szczepanski (marcins@zipworld.com.au)
5 //
6 // TODO: Add some testing for exceptions
7 //
8 // TODO: Some of the tests could be a bit more thorough
9 //
10
11 using NUnit.Framework;
12 using System.IO;
13 using System;
14
15 namespace MonoTests.System.IO {
16
17 public class StringReaderTest : TestCase {
18
19         public static ITest Suite {
20                 get {
21                         return new TestSuite(typeof(StringReaderTest));
22                 }
23         }
24
25         public StringReaderTest() : base ("MonoTests.System.IO.StringReaderTest testcase") { }
26         public StringReaderTest( string name ): base(name) { }
27
28         public void TestPeekRead() {
29                 StringReader reader = new StringReader( "Test String" );
30
31                 char c = (char)reader.Peek();
32                 AssertEquals("A1", 'T', c );
33
34                 char read = (char)reader.Read();
35
36                 AssertEquals("A2", 'T', read );
37
38                 c = (char)reader.Peek();
39
40                 AssertEquals("A3", 'e', c );
41         }
42
43         public void TestPeekAndReadAtEndOfString() {
44                 StringReader reader = new StringReader("x");
45
46                 char c = (char)reader.Peek();
47                 AssertEquals("A1", 'x', c );
48
49                 c = (char)reader.Read();
50                 AssertEquals("A2", 'x', c);
51
52                 int i = reader.Peek();
53                 AssertEquals("A3", -1, i);
54
55                 i = reader.Read();
56                 AssertEquals("A4", -1, i);
57
58                 i = reader.Peek();
59                 AssertEquals("A5", -1, i);
60         }
61
62         public void TestPeekAndReadEmptyString() {
63                 StringReader reader = new StringReader("");
64
65                 int i = reader.Peek();
66                 AssertEquals("A1", -1, i);
67
68                 i = reader.Read();
69                 AssertEquals("A2", -1, i);
70         }
71
72         public void TestRead() {
73                 StringReader reader = new StringReader( "Test String" );
74
75                 /* Read from start of string */
76                 char[] test = new char[5];
77
78                 int charsRead = reader.Read( test, 0, 5 );
79
80                 AssertEquals( 5, charsRead );
81                 AssertEquals( "Test ", new String(test)  );
82
83                 /* Read to end of string */
84                 //reader = new StringReader( "Test String" );
85
86                 test = new char[6];
87                 charsRead = reader.Read( test, 0, 6 );
88                 AssertEquals( 6, charsRead);
89                 AssertEquals( "String", new String( test )  );
90
91                 /* Read past end of string */
92
93                 test = new char[6];
94                 reader = new StringReader( "Foo" );
95                 charsRead = reader.Read( test, 0, 6 );
96                 AssertEquals( 3, charsRead );
97                 AssertEquals(  "Foo\0\0\0", new String( test ) );
98
99         }
100
101         public void TestReadEOL() {
102                 StringReader reader = new StringReader( "Line1\rLine2\r\nLine3\nLine4" );
103
104                 string test = reader.ReadLine();
105
106                 AssertEquals( "Line1", test );
107
108                 test = reader.ReadLine();
109
110                 AssertEquals( "Line2", test );
111
112                 test = reader.ReadLine();
113
114                 AssertEquals( "Line3", test );
115
116                 test = reader.ReadLine();
117
118                 AssertEquals( "Line4", test );
119         }
120 }
121
122 }