aboutsummaryrefslogtreecommitdiff
path: root/Codeforces.Test/IOTester.cs
blob: 68a0ebbd734a6013b1c633b8c6fec32cb80f9706 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
namespace Codeforces.Test
{
    public class IOTester
	{
		private static readonly TextReader originalStdIn = Console.In;
		private static StringReader? stdIn;

		private static readonly TextWriter originalStdOut = Console.Out;
		private static StringWriter? stdOut;

		public static void Start()
		{
			stdOut = new StringWriter();
			Console.SetOut(stdOut);
		}

		public static void End()
		{
			stdOut = null;
			stdIn = null;
			Console.SetOut(originalStdOut);
			Console.SetIn(originalStdIn);
		}

		public static void SetInput(params string[] lines)
		{
			string input = string.Join(Environment.NewLine, lines);
			stdIn = new StringReader(input);
			Console.SetIn(stdIn);
		}

		public static string GetOutput()
		{
			if (stdOut == null)
			{
				return string.Empty;
			}
			else
			{
				return stdOut.ToString();
			}
		}

		public static string[] GetOutputLines()
		{
			return GetOutput().Split(Environment.NewLine).SkipLast(1).ToArray();
		}

		public static IList<string> GetOutputLinesAsList()
		{
			return new List<string>(GetOutputLines());
		}
	}
}