1 // ConsoleTest.cs - NUnit Test Cases for the System.Console class
3 // David Brandt (bucky@keystreams.com)
5 // (C) Ximian, Inc. http://www.ximian.com
13 namespace MonoTests.System
16 public class ConsoleTest : TestCase
18 public ConsoleTest() {}
23 protected override void SetUp()
30 protected override void TearDown()
32 Console.SetError(_err);
37 public void TestError() {
38 AssertNotNull("No error", Console.Error);
41 public void TestIn() {
42 AssertNotNull("No in", Console.In);
45 public void TestOut() {
46 AssertNotNull("No out", Console.Out);
49 public void TestOpenStandardError() {
51 Stream err = Console.OpenStandardError();
52 AssertNotNull("Can't open error", err);
55 Stream err = Console.OpenStandardError(512);
56 AssertNotNull("Can't open error", err);
58 // Spec says these are here, MS implementation says no.
60 //bool errorThrown = false;
62 //Stream err = Console.OpenStandardError(-1);
63 //} catch (ArgumentOutOfRangeException) {
66 //Assert("negative buffer error not thrown",
70 //bool errorThrown = false;
72 //Stream err = Console.OpenStandardError(0);
73 //} catch (ArgumentOutOfRangeException) {
76 //Assert("zero buffer error not thrown", errorThrown);
80 public void TestOpenStandardInput() {
82 Stream in1 = Console.OpenStandardInput();
83 AssertNotNull("Can't open input", in1);
86 Stream in1 = Console.OpenStandardInput(512);
87 AssertNotNull("Can't open input", in1);
89 // see commented-out tests in TestOpenStandardError
92 public void TestOpenStandardOutput() {
94 Stream out1 = Console.OpenStandardOutput();
95 AssertNotNull("Can't open output", out1);
98 Stream out1 = Console.OpenStandardOutput(512);
99 AssertNotNull("Can't open output", out1);
101 // see commented-out tests in TestOpenStandardError
104 public void TestRead() {
105 String testStr = "This is a readline test";
106 Stream s = new MemoryStream();
107 TextWriter w = new StreamWriter(s);
108 ((StreamWriter)w).AutoFlush = true;
109 TextReader r = new StreamReader(s);
111 w.WriteLine(testStr);
113 char val = (char) Console.Read();
114 AssertEquals("Wrong read", 'T', val);
117 public void TestReadLine() {
118 String testStr = "This is a readline test";
119 Stream s = new MemoryStream();
120 TextWriter w = new StreamWriter(s);
121 ((StreamWriter)w).AutoFlush = true;
122 TextReader r = new StreamReader(s);
124 w.WriteLine(testStr);
126 String line = Console.ReadLine();
127 AssertEquals("Wrong line", testStr, line);
130 public void TestSetError() {
132 bool errorThrown = false;
134 Console.SetError(null);
135 } catch (ArgumentNullException) {
138 Assert("null error error not thrown", errorThrown);
141 String testStr = "This is a stderr test";
142 Stream s = new MemoryStream();
143 TextWriter w = new StreamWriter(s);
144 ((StreamWriter)w).AutoFlush = true;
145 TextReader r = new StreamReader(s);
147 Console.Error.WriteLine(testStr);
149 String line = r.ReadLine();
150 AssertEquals("Wrong line", testStr, line);
154 public void TestSetIn() {
156 bool errorThrown = false;
159 } catch (ArgumentNullException) {
162 Assert("null in error not thrown", errorThrown);
165 String testStr = "This is a stdin test";
166 Stream s = new MemoryStream();
167 TextWriter w = new StreamWriter(s);
168 ((StreamWriter)w).AutoFlush = true;
169 TextReader r = new StreamReader(s);
171 w.WriteLine(testStr);
173 String line = Console.In.ReadLine();
174 AssertEquals("Wrong line", testStr, line);
178 public void TestSetOut() {
180 bool errorThrown = false;
182 Console.SetOut(null);
183 } catch (ArgumentNullException) {
186 Assert("null out error not thrown", errorThrown);
189 String testStr = "This is a stdout test";
190 Stream s = new MemoryStream();
191 TextWriter w = new StreamWriter(s);
192 ((StreamWriter)w).AutoFlush = true;
193 TextReader r = new StreamReader(s);
195 Console.Out.WriteLine(testStr);
197 String line = r.ReadLine();
198 AssertEquals("Wrong line", testStr, line);
202 public void TestWrite() {
203 Stream s = new MemoryStream();
204 TextWriter w = new StreamWriter(s);
205 ((StreamWriter)w).AutoFlush = true;
206 TextReader r = new StreamReader(s);
211 String testStr = "This is a stdout write test";
212 Console.Write(testStr);
214 String line = r.ReadToEnd();
215 AssertEquals("Wrong line", testStr, line);
218 Boolean[] booleans = {true, false};
219 foreach (bool b in booleans ) {
222 line = r.ReadToEnd();
223 AssertEquals("Wrong boolean", b.ToString(), line);
227 Char[] chars = {'a', ';', '?'};
228 foreach (Char c in chars ) {
231 line = r.ReadToEnd();
232 AssertEquals("Wrong char", c.ToString(), line);
236 // test writing a null value
240 // TODO - Likewise for char[], decimal, double, int, long, object, single, uint32, uint64
241 // TODO - write with format string
243 public void TestWriteLine() {
244 Stream s = new MemoryStream();
245 TextWriter w = new StreamWriter(s);
246 ((StreamWriter)w).AutoFlush = true;
247 TextReader r = new StreamReader(s);
252 String testStr = "This is a stdout writeline test";
253 Console.WriteLine(testStr);
255 String line = r.ReadLine();
256 AssertEquals("Wrong line", testStr, line);
259 Boolean[] booleans = {true, false};
260 foreach (bool b in booleans ) {
261 Console.WriteLine(b);
264 AssertEquals("Wrong boolean", b.ToString(), line);
268 Char[] chars = {'a', ';', '?'};
269 foreach (Char c in chars ) {
270 Console.WriteLine(c);
273 AssertEquals("Wrong char", c.ToString(), line);
277 // test writing a null value
279 Console.WriteLine (x);
281 // TODO - Likewise for char[], decimal, double, int, long, object, single, uint32, uint64
282 // TODO - write with format string