| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- //
- // System.IO.StringWriter
- //
- // Author: Marcin Szczepanski ([email protected])
- //
- // TODO: Add some testing for exceptions
- //
- // TODO: Some of the tests could be a bit more thorough
- //
- using NUnit.Framework;
- using System.IO;
- using System;
- namespace MonoTests.System.IO {
- [TestFixture]
- public class StringReaderTest : Assertion {
- public void TestReadLine() {
- string testme = "a\nb\nc\n";
- StringReader sr = new StringReader (testme);
- string inputLine;
- int lines = 0;
- while ((inputLine = sr.ReadLine ()) != null)
- lines++;
-
- AssertEquals ("Incorrect number of lines", 3, lines);
- }
- public void TestPeekRead() {
- StringReader reader = new StringReader( "Test String" );
- char c = (char)reader.Peek();
- AssertEquals("A1", 'T', c );
- char read = (char)reader.Read();
- AssertEquals("A2", 'T', read );
- c = (char)reader.Peek();
- AssertEquals("A3", 'e', c );
- }
- public void TestPeekAndReadAtEndOfString() {
- StringReader reader = new StringReader("x");
- char c = (char)reader.Peek();
- AssertEquals("A1", 'x', c );
- c = (char)reader.Read();
- AssertEquals("A2", 'x', c);
- int i = reader.Peek();
- AssertEquals("A3", -1, i);
- i = reader.Read();
- AssertEquals("A4", -1, i);
- i = reader.Peek();
- AssertEquals("A5", -1, i);
- }
- public void TestPeekAndReadEmptyString() {
- StringReader reader = new StringReader("");
- int i = reader.Peek();
- AssertEquals("A1", -1, i);
- i = reader.Read();
- AssertEquals("A2", -1, i);
- }
- public void TestRead() {
- StringReader reader = new StringReader( "Test String" );
- /* Read from start of string */
- char[] test = new char[5];
- int charsRead = reader.Read( test, 0, 5 );
- AssertEquals( 5, charsRead );
- AssertEquals( "Test ", new String(test) );
- /* Read to end of string */
- //reader = new StringReader( "Test String" );
- test = new char[6];
- charsRead = reader.Read( test, 0, 6 );
- AssertEquals( 6, charsRead);
- AssertEquals( "String", new String( test ) );
- /* Read past end of string */
- test = new char[6];
- reader = new StringReader( "Foo" );
- charsRead = reader.Read( test, 0, 6 );
- AssertEquals( 3, charsRead );
- AssertEquals( "Foo\0\0\0", new String( test ) );
- /* Check that a new invocation on the empty reader will return 0 */
- charsRead = reader.Read (test, 0, 6);
- AssertEquals (0, charsRead);
-
- }
- public void TestReadEOL() {
- StringReader reader = new StringReader( "Line1\rLine2\r\nLine3\nLine4" );
- string test = reader.ReadLine();
- AssertEquals( "Line1", test );
- test = reader.ReadLine();
- AssertEquals( "Line2", test );
- test = reader.ReadLine();
- AssertEquals( "Line3", test );
- test = reader.ReadLine();
- AssertEquals( "Line4", test );
- }
- public void TestClose() {
-
- StringReader reader = new StringReader("reader");
- reader.Close ();
-
- try {
- reader.Read ();
- Fail();
- } catch (Exception e) {
- AssertEquals ("Close 1", typeof (ObjectDisposedException), e.GetType ());
- }
-
- try {
- reader.Peek ();
- Fail ();
- } catch (Exception e) {
- AssertEquals ("Close 2", typeof (ObjectDisposedException), e.GetType ());
- }
- }
-
- public void TestExceptions() {
-
- StringReader reader;
-
- try {
- reader = new StringReader(null);
- Fail ();
- } catch (Exception e) {
- AssertEquals ("Exception 1", typeof (ArgumentNullException), e.GetType ());
- }
-
- reader = new StringReader ("this is a test\nAnd nothing else");
-
- try {
- reader.Read (null, 0, 12);
- Fail ();
- } catch (Exception e) {
- AssertEquals ("Exception 2", typeof (ArgumentNullException), e.GetType ());
- }
- }
- [Test]
- public void MoreEOL ()
- {
- TextReader tr = new StringReader ("There she was just a walking\n" +
- "Down the street singin'\r" +
- "Do wah diddy diddy dum diddy do");
- int i = 0;
- while (tr.ReadLine () != null)
- i++;
- AssertEquals ("#01", 3, i);
- }
- [Test]
- [ExpectedException (typeof (ArgumentException))]
- public void Read_IndexOverflow ()
- {
- StringReader sr = new StringReader ("Mono");
- sr.Read (new char [4], Int32.MaxValue, 1);
- }
- [Test]
- [ExpectedException (typeof (ArgumentException))]
- public void Read_CountOverflow ()
- {
- StringReader sr = new StringReader ("Mono");
- sr.Read (new char [4], 1, Int32.MaxValue);
- }
- [Test]
- public void Read_DoesntStopAtLineEndings ()
- {
- StringReader reader = new StringReader ("Line1\rLine2\r\nLine3\nLine4");
- AssertEquals (24, reader.Read (new char[24], 0, 24));
- }
- }
- }
|