StringReaderTest.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. //
  2. // System.IO.StringWriter
  3. //
  4. // Author: Marcin Szczepanski ([email protected])
  5. //
  6. // TODO: Add some testing for exceptions
  7. //
  8. // TODO: Some of the tests could be a bit more thorough
  9. //
  10. using NUnit.Framework;
  11. using System.IO;
  12. using System;
  13. namespace MonoTests.System.IO {
  14. public class StringReaderTest : TestCase {
  15. public void TestReadLine() {
  16. string testme = "a\nb\nc\n";
  17. StringReader sr = new StringReader (testme);
  18. string inputLine;
  19. int lines = 0;
  20. while ((inputLine = sr.ReadLine ()) != null)
  21. lines++;
  22. AssertEquals ("Incorrect number of lines", 3, lines);
  23. }
  24. public void TestPeekRead() {
  25. StringReader reader = new StringReader( "Test String" );
  26. char c = (char)reader.Peek();
  27. AssertEquals("A1", 'T', c );
  28. char read = (char)reader.Read();
  29. AssertEquals("A2", 'T', read );
  30. c = (char)reader.Peek();
  31. AssertEquals("A3", 'e', c );
  32. }
  33. public void TestPeekAndReadAtEndOfString() {
  34. StringReader reader = new StringReader("x");
  35. char c = (char)reader.Peek();
  36. AssertEquals("A1", 'x', c );
  37. c = (char)reader.Read();
  38. AssertEquals("A2", 'x', c);
  39. int i = reader.Peek();
  40. AssertEquals("A3", -1, i);
  41. i = reader.Read();
  42. AssertEquals("A4", -1, i);
  43. i = reader.Peek();
  44. AssertEquals("A5", -1, i);
  45. }
  46. public void TestPeekAndReadEmptyString() {
  47. StringReader reader = new StringReader("");
  48. int i = reader.Peek();
  49. AssertEquals("A1", -1, i);
  50. i = reader.Read();
  51. AssertEquals("A2", -1, i);
  52. }
  53. public void TestRead() {
  54. StringReader reader = new StringReader( "Test String" );
  55. /* Read from start of string */
  56. char[] test = new char[5];
  57. int charsRead = reader.Read( test, 0, 5 );
  58. AssertEquals( 5, charsRead );
  59. AssertEquals( "Test ", new String(test) );
  60. /* Read to end of string */
  61. //reader = new StringReader( "Test String" );
  62. test = new char[6];
  63. charsRead = reader.Read( test, 0, 6 );
  64. AssertEquals( 6, charsRead);
  65. AssertEquals( "String", new String( test ) );
  66. /* Read past end of string */
  67. test = new char[6];
  68. reader = new StringReader( "Foo" );
  69. charsRead = reader.Read( test, 0, 6 );
  70. AssertEquals( 3, charsRead );
  71. AssertEquals( "Foo\0\0\0", new String( test ) );
  72. /* Check that a new invocation on the empty reader will return 0 */
  73. charsRead = reader.Read (test, 0, 6);
  74. AssertEquals (0, charsRead);
  75. }
  76. public void TestReadEOL() {
  77. StringReader reader = new StringReader( "Line1\rLine2\r\nLine3\nLine4" );
  78. string test = reader.ReadLine();
  79. AssertEquals( "Line1", test );
  80. test = reader.ReadLine();
  81. AssertEquals( "Line2", test );
  82. test = reader.ReadLine();
  83. AssertEquals( "Line3", test );
  84. test = reader.ReadLine();
  85. AssertEquals( "Line4", test );
  86. }
  87. public void TestClose() {
  88. StringReader reader = new StringReader("reader");
  89. reader.Close ();
  90. try {
  91. reader.Read ();
  92. Fail();
  93. } catch (Exception e) {
  94. AssertEquals ("Close 1", typeof (ObjectDisposedException), e.GetType ());
  95. }
  96. try {
  97. reader.Peek ();
  98. Fail ();
  99. } catch (Exception e) {
  100. AssertEquals ("Close 2", typeof (ObjectDisposedException), e.GetType ());
  101. }
  102. }
  103. public void TestExceptions() {
  104. StringReader reader;
  105. try {
  106. reader = new StringReader(null);
  107. Fail ();
  108. } catch (Exception e) {
  109. AssertEquals ("Exception 1", typeof (ArgumentNullException), e.GetType ());
  110. }
  111. reader = new StringReader ("this is a test\nAnd nothing else");
  112. try {
  113. reader.Read (null, 0, 12);
  114. Fail ();
  115. } catch (Exception e) {
  116. AssertEquals ("Exception 2", typeof (ArgumentNullException), e.GetType ());
  117. }
  118. }
  119. }
  120. }