private void Test(string expectedResult, object[] items, bool resetCursor = true, string prompt = null, bool mustDing = false) { if (resetCursor) { _console.CursorLeft = 0; _console.CursorTop = 0; } SetPrompt(prompt); _console.Init(items); var mockedMethods = new MockedMethods(); var instance = (PSConsoleReadLine)typeof(PSConsoleReadLine) .GetField("_singleton", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null); typeof(PSConsoleReadLine) .GetField("_mockableMethods", BindingFlags.Instance | BindingFlags.NonPublic) .SetValue(instance, mockedMethods); typeof(PSConsoleReadLine) .GetField("_console", BindingFlags.Instance | BindingFlags.NonPublic) .SetValue(instance, _console); var result = PSConsoleReadLine.ReadLine(null, null); if (_console.validationFailure != null) { throw new Exception("", _console.validationFailure); } while (_console.index < _console.inputOrValidateItems.Length) { var item = _console.inputOrValidateItems[_console.index++]; ((Action)item)(); } Assert.AreEqual(expectedResult, result); if (mustDing) { Assert.IsTrue(mockedMethods.didDing); } }
private static void Test(string expectedResult, object[] items, bool resetCursor = true, string prompt = null, bool mustDing = false) { if (resetCursor) { Console.CursorLeft = 0; Console.CursorTop = 0; Console.BufferWidth = Console.WindowWidth = 60; Console.BufferHeight = Console.WindowHeight = 40; } SetPrompt(prompt); var mockedMethods = new MockedMethods(items); var instance = (PSConsoleReadLine)typeof(PSConsoleReadLine) .GetField("_singleton", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null); typeof(PSConsoleReadLine) .GetField("_mockableMethods", BindingFlags.Instance | BindingFlags.NonPublic) .SetValue(instance, mockedMethods); var result = PSConsoleReadLine.ReadLine(); if (mockedMethods.validationFailure != null) { throw new Exception("", mockedMethods.validationFailure); } while (mockedMethods.index < mockedMethods.items.Length) { var item = mockedMethods.items[mockedMethods.index++]; ((Action)item)(); } Assert.AreEqual(expectedResult, result); if (mustDing) { Assert.IsTrue(mockedMethods.didDing); } }