public void OnEnable_ConsoleCaptureTrue()
        {
            TextConsoleUI textConsoleUI = SetupTextConsoleUI(out ITextDisplay textAdapter, out IConsole console);

            textConsoleUI.OnEnable();

            Assert.True(console.IsCapturing);
        }
        public void OnDisable_NoCaptureInBackground_ConsoleCaptureFalse()
        {
            TextConsoleUI textConsoleUI = SetupTextConsoleUI(out ITextDisplay textAdapter, out IConsole console);

            textConsoleUI.CaptureInBackground = false;

            textConsoleUI.OnEnable();
            textConsoleUI.OnDisable();
            Assert.False(console.IsCapturing);
        }
        /// <summary>
        /// Sets up a text console UI instance for the tests
        /// </summary>
        /// <param name="textDisplay">The text display which is used to show console's captured messages</param>
        /// <param name="console">The console which handles the capturing</param>
        /// <returns></returns>
        private TextConsoleUI SetupTextConsoleUI(out ITextDisplay textDisplay, out IConsole console)
        {
            textDisplay = A.Fake <ITextDisplay>();
            TextConsoleUI textConsoleUI = new TextConsoleUI(textDisplay);

            console = A.Fake <Console>();

            textConsoleUI.Console = console;
            return(textConsoleUI);
        }
        public void UpdateUI_NoMessages_WritesEmptyString()
        {
            TextConsoleUI textConsoleUI = SetupTextConsoleUI(out ITextDisplay textAdapter, out IConsole console);

            textConsoleUI.OnEnable();
            textConsoleUI.GetType()
            .GetMethod("UpdateUI", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic)
            .Invoke(textConsoleUI, null);

            Assert.AreEqual("", textAdapter.Text);
        }
        public void UpdateUI_MessageGiven_WritesMessage()
        {
            const string message = "Hello World";

            TextConsoleUI textConsoleUI = SetupTextConsoleUI(out ITextDisplay textAdapter, out IConsole console);
            ILogMessage   logMessage    = A.Fake <ILogMessage>();

            A.CallTo(() => logMessage.Content).Returns(message);
            console.Messages.Add(logMessage);

            textConsoleUI.OnEnable();
            textConsoleUI.GetType()
            .GetMethod("UpdateUI", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic)
            .Invoke(textConsoleUI, null);

            Assert.AreEqual(message, textAdapter.Text);
        }