using FWHandler;
using NUnit.Framework;
using NUnit.Framework.Interfaces;
using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Threading;


namespace UITests
{
    [TestFixture]
    class TC_002_MainEditor : UITestFixture
    {
        // Vytvářet testy více atypicky, aby se ukázali všechny možnosti
        [Test]
        public void TC_002_001_WriteSomethingToEditor_CheckIfTextAppeared()
        {
            InitUiTest();
            TextBox.Find("15").Text = ValueProvider.Notepad_TestString;
            Assert.IsTrue(TextBox.Find("15").Text == ValueProvider.Notepad_TestString, GuesErrorProvider.CompareTwoValuesTextBoxError);
        }

        [Test]
        public void TC_002_002_WriteSomethingToEditor_CheckIfAfterQuitSaveWarningAppears_ClickYes()
        {
            InitUiTest();
            WriteTextAndClickQuit();
            Button.Invoke("Uložit");
        }
        [Test] // Vloží do hlavní editační oblasti řetězec (vícekrát) a pak se ho pokouší najít (vícekrát)
        public void TC_002_003_WriteSomethingToEditor_TryToFindIt_CheckIfFoundedCorrectNumberOfTimes()
        {
            InitUiTest();
            int numberOfLookedString = 3;

            TextBox.Find("15").Text = ValueProvider.Notepad_TestToFind;
            MenuItem.Click("Úpravy").Click("Najít...");
            TextBox.Find("1152").Text = "cau";
            for(int i = 0; i < numberOfLookedString; i++)
            {
                Button.Click("1", waitFast);
            }
            Assert.IsTrue(Button.IsVisible("OK", waitFast));
            Window.Find("Poznámkový blok").Button.Click("2", waitFast); // stejné jako toto Button.Click("2")
            CleanUp();
            // Windows.Find("").Find("").Find("").Button...
            // Windows.Find("").FindDescendants("").SelectSpecificId(2).FindChildrens("").Click("");
        }



        [Test] // Test který ověřuje funkci speciálních kláves na hlavní editor
        public void TC_002_004_WriteSomethingToEditor_PressStandartKeys_CheckReaction()
        {
            InitUiTest();
            TextBox.Click("15");
            TextBox.Find("15").Text = ValueProvider.Notepad_TestString;
            Input.KeyBoardSpecialType(EnumProviderPressSpecialKeys.ArrowLeft)
                 .KeyBoardSpecialType(EnumProviderPressSpecialKeys.Delete)
                 .KeyBoardSpecialType(EnumProviderPressSpecialKeys.Backspace)
                 .KeyBoardSpecialType(EnumProviderPressSpecialKeys.Space);
            Assert.IsTrue(TextBox.Find("15").Text == ValueProvider.Notepad_TestString_Modified, 
                GuesErrorProvider.CompareTwoValuesTextBoxError);
            CleanUp();
        }
        public void CleanUp()
        {
            MenuItem.Click("Soubor").Click("Ukončit");
            Button.Click("CommandButton_7", waitStandart);
        }

        public void WriteTextAndClickQuit()
        {
            TextBox.Find("15").Text = ValueProvider.Notepad_TestString;
            Assert.IsTrue(TextBox.Find("15").Text == ValueProvider.Notepad_TestString, GuesErrorProvider.CompareTwoValuesTextBoxError);
            MenuItem.Click("Soubor", waitSlow).Click("Ukončit", waitSlow);
        }
    }
}
