ConsoleTest.cs 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. // ConsoleTest.cs - NUnit Test Cases for the System.Console class
  2. //
  3. // David Brandt ([email protected])
  4. //
  5. // (C) Ximian, Inc. http://www.ximian.com
  6. //
  7. using NUnit.Framework;
  8. using System;
  9. using System.IO;
  10. namespace MonoTests.System
  11. {
  12. public class ConsoleTest : TestCase
  13. {
  14. public ConsoleTest() {}
  15. TextWriter _err;
  16. TextReader _in;
  17. TextWriter _out;
  18. protected override void SetUp()
  19. {
  20. _err = Console.Error;
  21. _in = Console.In;
  22. _out = Console.Out;
  23. }
  24. protected override void TearDown()
  25. {
  26. Console.SetError(_err);
  27. Console.SetIn(_in);
  28. Console.SetOut(_out);
  29. }
  30. public void TestError() {
  31. AssertNotNull("No error", Console.Error);
  32. }
  33. public void TestIn() {
  34. AssertNotNull("No in", Console.In);
  35. }
  36. public void TestOut() {
  37. AssertNotNull("No out", Console.Out);
  38. }
  39. public void TestOpenStandardError() {
  40. {
  41. Stream err = Console.OpenStandardError();
  42. AssertNotNull("Can't open error", err);
  43. }
  44. {
  45. Stream err = Console.OpenStandardError(512);
  46. AssertNotNull("Can't open error", err);
  47. }
  48. // Spec says these are here, MS implementation says no.
  49. //{
  50. //bool errorThrown = false;
  51. //try {
  52. //Stream err = Console.OpenStandardError(-1);
  53. //} catch (ArgumentOutOfRangeException) {
  54. //errorThrown = true;
  55. //}
  56. //Assert("negative buffer error not thrown",
  57. //errorThrown);
  58. //}
  59. //{
  60. //bool errorThrown = false;
  61. //try {
  62. //Stream err = Console.OpenStandardError(0);
  63. //} catch (ArgumentOutOfRangeException) {
  64. //errorThrown = true;
  65. //}
  66. //Assert("zero buffer error not thrown", errorThrown);
  67. //}
  68. }
  69. public void TestOpenStandardInput() {
  70. {
  71. Stream in1 = Console.OpenStandardInput();
  72. AssertNotNull("Can't open input", in1);
  73. }
  74. {
  75. Stream in1 = Console.OpenStandardInput(512);
  76. AssertNotNull("Can't open input", in1);
  77. }
  78. // see commented-out tests in TestOpenStandardError
  79. }
  80. public void TestOpenStandardOutput() {
  81. {
  82. Stream out1 = Console.OpenStandardOutput();
  83. AssertNotNull("Can't open output", out1);
  84. }
  85. {
  86. Stream out1 = Console.OpenStandardOutput(512);
  87. AssertNotNull("Can't open output", out1);
  88. }
  89. // see commented-out tests in TestOpenStandardError
  90. }
  91. public void TestRead() {
  92. String testStr = "This is a readline test";
  93. Stream s = new MemoryStream();
  94. TextWriter w = new StreamWriter(s);
  95. ((StreamWriter)w).AutoFlush = true;
  96. TextReader r = new StreamReader(s);
  97. Console.SetIn(r);
  98. w.WriteLine(testStr);
  99. s.Position = 0;
  100. char val = (char) Console.Read();
  101. AssertEquals("Wrong read", 'T', val);
  102. }
  103. public void TestReadLine() {
  104. String testStr = "This is a readline test";
  105. Stream s = new MemoryStream();
  106. TextWriter w = new StreamWriter(s);
  107. ((StreamWriter)w).AutoFlush = true;
  108. TextReader r = new StreamReader(s);
  109. Console.SetIn(r);
  110. w.WriteLine(testStr);
  111. s.Position = 0;
  112. String line = Console.ReadLine();
  113. AssertEquals("Wrong line", testStr, line);
  114. }
  115. public void TestSetError() {
  116. {
  117. bool errorThrown = false;
  118. try {
  119. Console.SetError(null);
  120. } catch (ArgumentNullException) {
  121. errorThrown = true;
  122. }
  123. Assert("null error error not thrown", errorThrown);
  124. }
  125. {
  126. String testStr = "This is a stderr test";
  127. Stream s = new MemoryStream();
  128. TextWriter w = new StreamWriter(s);
  129. ((StreamWriter)w).AutoFlush = true;
  130. TextReader r = new StreamReader(s);
  131. Console.SetError(w);
  132. Console.Error.WriteLine(testStr);
  133. s.Position = 0;
  134. String line = r.ReadLine();
  135. AssertEquals("Wrong line", testStr, line);
  136. }
  137. }
  138. public void TestSetIn() {
  139. {
  140. bool errorThrown = false;
  141. try {
  142. Console.SetIn(null);
  143. } catch (ArgumentNullException) {
  144. errorThrown = true;
  145. }
  146. Assert("null in error not thrown", errorThrown);
  147. }
  148. {
  149. String testStr = "This is a stdin test";
  150. Stream s = new MemoryStream();
  151. TextWriter w = new StreamWriter(s);
  152. ((StreamWriter)w).AutoFlush = true;
  153. TextReader r = new StreamReader(s);
  154. Console.SetIn(r);
  155. w.WriteLine(testStr);
  156. s.Position = 0;
  157. String line = Console.In.ReadLine();
  158. AssertEquals("Wrong line", testStr, line);
  159. }
  160. }
  161. public void TestSetOut() {
  162. {
  163. bool errorThrown = false;
  164. try {
  165. Console.SetOut(null);
  166. } catch (ArgumentNullException) {
  167. errorThrown = true;
  168. }
  169. Assert("null out error not thrown", errorThrown);
  170. }
  171. {
  172. String testStr = "This is a stdout test";
  173. Stream s = new MemoryStream();
  174. TextWriter w = new StreamWriter(s);
  175. ((StreamWriter)w).AutoFlush = true;
  176. TextReader r = new StreamReader(s);
  177. Console.SetOut(w);
  178. Console.Out.WriteLine(testStr);
  179. s.Position = 0;
  180. String line = r.ReadLine();
  181. AssertEquals("Wrong line", testStr, line);
  182. }
  183. }
  184. public void TestWrite() {
  185. Stream s = new MemoryStream();
  186. TextWriter w = new StreamWriter(s);
  187. ((StreamWriter)w).AutoFlush = true;
  188. TextReader r = new StreamReader(s);
  189. Console.SetOut(w);
  190. long endPos = 0;
  191. String testStr = "This is a stdout write test";
  192. Console.Write(testStr);
  193. s.Position = endPos;
  194. String line = r.ReadToEnd();
  195. AssertEquals("Wrong line", testStr, line);
  196. endPos = s.Position;
  197. Boolean[] booleans = {true, false};
  198. foreach (bool b in booleans ) {
  199. Console.Write(b);
  200. s.Position = endPos;
  201. line = r.ReadToEnd();
  202. AssertEquals("Wrong boolean", b.ToString(), line);
  203. endPos = s.Position;
  204. }
  205. Char[] chars = {'a', ';', '?'};
  206. foreach (Char c in chars ) {
  207. Console.Write(c);
  208. s.Position = endPos;
  209. line = r.ReadToEnd();
  210. AssertEquals("Wrong char", c.ToString(), line);
  211. endPos = s.Position;
  212. }
  213. // test writing a null value
  214. string x = null;
  215. Console.Write (x);
  216. // TODO - Likewise for char[], decimal, double, int, long, object, single, uint32, uint64
  217. // TODO - write with format string
  218. }
  219. public void TestWriteLine() {
  220. Stream s = new MemoryStream();
  221. TextWriter w = new StreamWriter(s);
  222. ((StreamWriter)w).AutoFlush = true;
  223. TextReader r = new StreamReader(s);
  224. Console.SetOut(w);
  225. long endPos = 0;
  226. String testStr = "This is a stdout writeline test";
  227. Console.WriteLine(testStr);
  228. s.Position = endPos;
  229. String line = r.ReadLine();
  230. AssertEquals("Wrong line", testStr, line);
  231. endPos = s.Position;
  232. Boolean[] booleans = {true, false};
  233. foreach (bool b in booleans ) {
  234. Console.WriteLine(b);
  235. s.Position = endPos;
  236. line = r.ReadLine();
  237. AssertEquals("Wrong boolean", b.ToString(), line);
  238. endPos = s.Position;
  239. }
  240. Char[] chars = {'a', ';', '?'};
  241. foreach (Char c in chars ) {
  242. Console.WriteLine(c);
  243. s.Position = endPos;
  244. line = r.ReadLine();
  245. AssertEquals("Wrong char", c.ToString(), line);
  246. endPos = s.Position;
  247. }
  248. // test writing a null value
  249. string x = null;
  250. Console.WriteLine (x);
  251. // TODO - Likewise for char[], decimal, double, int, long, object, single, uint32, uint64
  252. // TODO - write with format string
  253. }
  254. }
  255. }