using mateo;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace UnitTestmateo
{
    [TestClass]
    public class UnitTest
    {
        #region Окно авторизации/регистрации
        First first = new First();

        [TestMethod]
        public void Vhod()
        {
            Assert.IsTrue(first.Vhod("plnklkv", "plnklkv"));
            Assert.IsTrue(first.Vhod("admin", "admin"));
            Assert.IsFalse(first.Vhod("plnklkv", "12345"));
            Assert.IsTrue(first.Vhod("aa", "aa"));
        }

        [TestMethod]
        public void Registr()
        {
            Assert.IsTrue(first.Registr("Комаров", "Валентин", "Дмитриевич", "komarov", "valyakomar"));
            Assert.IsTrue(first.Registr("Русакова", "Ольга", "", "rusakova", "12345"));
            Assert.IsFalse(first.Registr("Кулакова", "Полина", "Андреевна", "plnklkv", "polina"));
            Assert.IsFalse(first.Registr("", "Валерий", "Олегович", "valera", "olegoVich"));
        }

        #endregion

        #region Главное окно
        MainWindow mainWindow = new MainWindow();

        #region Профиль
        [TestMethod]
        public void AddChangePhoto_ShowDialog_ReturnTrue()
        {
            Assert.IsTrue(mainWindow.AddChangePhoto(2));
        }

        [TestMethod]
        public void PlusBalance()
        {
            Assert.IsTrue(mainWindow.PlusBalance("1234", "5678", "9045", "4567", "1000", 1));
            Assert.IsFalse(mainWindow.PlusBalance("1234", "5678", "9045", "4567", "", 1));
            Assert.IsFalse(mainWindow.PlusBalance("45", "5678", "45", "4567", "500", 1));
            Assert.IsFalse(mainWindow.PlusBalance("", "5678", "", "4567", "1000", 1));
            Assert.IsFalse(mainWindow.PlusBalance("45", "567845", "45", "445567", "500", 1));
        }
        #endregion

        #region Билеты
        [TestMethod]
        public void AddTickets_ReturnSumm()
        {
            Assert.AreEqual(mainWindow.AddOldAttractionSumm(6, 1), 100);

            decimal summ = mainWindow.AddBabyAttractionSumm(1, 1) + mainWindow.AddBabyAttractionSumm(4, 1);
            Assert.AreEqual(summ, 500);

            Assert.AreNotEqual(mainWindow.AddBabyAttractionSumm(7, 1), 400);
        }

        [TestMethod]
        public void TicketsMinus_1_ReturnTrueFalse()
        {
            Assert.IsFalse(mainWindow.TicketsMinus(1));
            Assert.IsTrue(mainWindow.TicketsMinus(2));
        }

        [TestMethod]
        public void TicketsPlus_30_ReturnTrueFalse()
        {
            Assert.IsFalse(mainWindow.TicketsPlus(30));
            Assert.IsTrue(mainWindow.TicketsPlus(4));
        }

        [TestMethod]
        public void TicketsMinus_ReturnQuantity()
        {
            Assert.AreEqual(mainWindow.TicketsMinusInt(30), 29);
            Assert.AreEqual(mainWindow.TicketsPlusInt(21), 22);
        }

        #endregion
        #endregion


        #region окно Админ

        SysAdmin sys = new SysAdmin();

        [TestMethod]
        public void AddAttraction()
        {
            Assert.IsTrue(sys.AddAttraction(1, "Колесо", "*описание*", "10", "200", "150", sys.AddImage(), "Работает", "Взрослый/Детский"));
            Assert.IsFalse(sys.AddAttraction(1, "Колесо", "*описание*", "", "200", "150", sys.AddImage(), "Работает", "Взрослый/Детский"));
            Assert.IsFalse(sys.AddAttraction(1, "Колесо", "*описание*", "10", "", "150", sys.AddImage(), "Работает", "Взрослый/Детский"));
            Assert.IsFalse(sys.AddAttraction(1, "Колесо", "*описание*", "10", "200", "", sys.AddImage(), "", "Взрослый/Детский"));
            Assert.IsFalse(sys.AddAttraction(1, "Колесо", "", "10", "200", "150", sys.AddImage(), "Работает", "Взрослый/Детский"));
            Assert.IsFalse(sys.AddAttraction(1, "", "*описание*", "10", "200", "150", sys.AddImage(), "Работает", "Взрослый/Детский"));
        }

        [TestMethod]
        public void AddEmployees()
        {
            Assert.IsTrue(sys.AddEmployees(1, "Котов", "Феликс", "Федотович", "Администратор", "Работает"));
            Assert.IsTrue(sys.AddEmployees(1, "Котов", "Феликс", "", "Администратор", "Работает"));
            Assert.IsFalse(sys.AddEmployees(1, "", "Феликс", "Федотович", "Администратор", "Работает"));
            Assert.IsFalse(sys.AddEmployees(1, "Котов", "", "Федотович", "Администратор", "Работает"));
            Assert.IsFalse(sys.AddEmployees(1, "Котов", "Феликс", "Федотович", " ", "Работает"));
            Assert.IsFalse(sys.AddEmployees(1, "Котов", "Феликс", "Федотович", "Администратор", " "));
        }

        [TestMethod]
        public void Report_ResultTrue()
        {
            Assert.IsTrue(sys.Report1("", ""));
            Assert.IsTrue(sys.Report1("16.12.2021 00:00:00", ""));
            Assert.IsTrue(sys.Report1("", "Место раскопок"));
            Assert.IsFalse(sys.Report1("23.12.2021 00:00:00", "Место раскопок"));
            Assert.IsFalse(sys.Report1("", " "));
        }

        #endregion
    }
}
