/// <summary>
        /// Test av konstruktorn med tre parametrar, (13, 24, 7, 35).
        /// </summary>
        /// <param name="testObject">Objektet som ska testas</param>
        private static void Test3(AlarmClock testObject)
        {
            testObject = new AlarmClock(13, 24, 7, 35);
            string testResult = "empty";

            testResult = string.Format(Test.Test3, testObject.ToString() + Environment.NewLine + Strings.HorizontalLine);

            ViewTestHeader(testResult);
        }
        /// <summary>
        /// Test av standardkonstruktorn.
        /// </summary>
        /// <param name="testObject">Objektet som ska testas</param>
        private static void Test1(AlarmClock testObject)
        {
            testObject = new AlarmClock();

            string testResult = "empty";

            testResult = string.Format(Test.Test1, testObject.ToString() + Environment.NewLine + Strings.HorizontalLine); //.Replace("\\n", Environment.NewLine)

            ViewTestHeader(testResult);
        }
        /// <summary>
        /// Metoden ska instansiera objekt av klassen AlarmClock och testa konstruktorerna, egenskaperna och metoderna.
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            //AlarmClockTest();

            ClockTest TestTheClock = new ClockTest();

            Console.WriteLine("\n\n\n");

            AlarmClock RealClock = new AlarmClock(21, 30, 21, 35);
            Run(RealClock, 10);
        }
        /// <summary>
        /// Privat statisk metod som har två parametrar. Den första parametern är en referens till AlarmClock-objekt. 
        /// Den andra parametern är antalet minuter som AlarmClock-objektet ska gå (vilket lämpligen görs genom att 
        /// låta ett AlarmClock-objekt göra upprepade anrop av metoden TickTock()).
        /// </summary>
        /// <param name="ac"></param>
        /// <param name="minutes"></param>
        private static void Run(AlarmClock ac, int minutes)
        {
            for (int i = 0; i < minutes; i++)
            {
                bool larm = ac.TickTock();

                if (larm)
                {
                    ViewTestHeader(ac.ToString() + Strings.Larm);
                }
                else
                {
                    ViewTestHeader(ac.ToString());
                }
            }
        }
        /// <summary>
        /// Metod som testar så att väckarklockan uppfyller alla krav
        /// </summary>
        private static void AlarmClockTest()
        {
            AlarmClock TestObject = new AlarmClock();

            Test1(TestObject);

            Test2(TestObject);

            Test3(TestObject);

            Test4(TestObject);

            Test5(TestObject);

            Test6(TestObject);

            Test7(TestObject);
        }
        /// <summary>
        /// Ställer befintlig AlarmClock-object till 23:58 och låten den gå 13 minuter.
        /// </summary>
        /// <param name="testObject">Objektet som ska testas</param>
        private static void Test4(AlarmClock testObject)
        {
            testObject.Hour = 23;
            testObject.Minute = 58;
            string testResult = "empty";

            testResult = string.Format(Test.Test4);

            ViewTestHeader(testResult);

            for (int i = 0; i < 13; i++)
            {
                testObject.TickTock();

                ViewTestHeader(testObject.ToString());
            }
            ViewTestHeader(Strings.HorizontalLine);
        }
        /// <summary>
        /// Testar konstruktorer så att undantag kastas då tid och alarmtid tilldelas felaktiga värden.
        /// </summary>
        /// <param name="testObject">Objektet som ska testas</param>
        private static void Test7(AlarmClock testObject)
        {
            ViewTestHeader(Test.Test7);

            try
            {
                testObject = new AlarmClock(99, 99, 7, 35);
            }
            catch (Exception)
            {
                ViewErrorMessage(Test.Error_Hour);
            }

            try
            {
                testObject = new AlarmClock(13, 24, 99, 99);
            }
            catch (Exception)
            {
                ViewErrorMessage(Test.Error_Minute);
            }

            ViewTestHeader(Strings.HorizontalLine);
        }
        /// <summary>
        /// Testar egenskaperna så att undantag kastas då tid och alarmtid tilldelas felaktiga värden.
        /// </summary>
        /// <param name="testObject">Objektet som ska testas</param>
        private static void Test6(AlarmClock testObject)
        {
            ViewTestHeader(Test.Test6);

            try
            {
                testObject.Hour = 99;
            }
            catch (ArgumentException ex)
            {
                ViewErrorMessage(ex.Message);
            }

            try
            {
                testObject.Minute = 99;
            }
            catch (ArgumentException ex)
            {
                ViewErrorMessage(ex.Message);
            }

            try
            {
                testObject.AlarmHour = 99;
            }
            catch (Exception)
            {
                ViewErrorMessage(Test.Error_Hour);
            }

            try
            {
                testObject.AlarmMinute = 99;
            }
            catch (Exception)
            {
                ViewErrorMessage(Test.Error_Minute);
            }

            ViewTestHeader(Strings.HorizontalLine);
        }
        /// <summary>
        /// Ställer befintligt AlarmClock-objekt till tiden 6:12 och alarmtiden till 6:15 och låter den gå 6 minuter.
        /// </summary>
        /// <param name="testObject">Objektet som ska testas</param>
        private static void Test5(AlarmClock testObject)
        {
            testObject.Hour = 6;
            testObject.Minute = 12;
            testObject.AlarmHour = 6;
            testObject.AlarmMinute = 15;
            string testResult = "empty";

            testResult = string.Format(Test.Test5);

            ViewTestHeader(testResult);

            for (int i = 0; i < 6; i++)
            {
                bool larm = testObject.TickTock();

                if (larm)
                {
                    ViewTestHeader(testObject.ToString() + Strings.Larm);
                }
                else
                {
                    ViewTestHeader(testObject.ToString());
                }
            }
            ViewTestHeader(Strings.HorizontalLine);
        }
        static void Main(string[] args)
        {
            int    ammountOfMinutes;
            string HorizontalLine = "Test 1. \nTest av standard konstruktorn.";

            Console.BackgroundColor = ConsoleColor.DarkGreen;
            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine(" ╔══════════════════════════════════════╗ ");
            Console.WriteLine(" ║           Väckarklockan              ║ ");
            Console.WriteLine(" ╚══════════════════════════════════════╝ ");
            Console.ResetColor();
            Console.WriteLine();


            AlarmClock time = new AlarmClock();

            Console.WriteLine("__________________________________");
            ViewTestHeader(HorizontalLine);
            Console.WriteLine();
            Console.WriteLine(time);


            AlarmClock time2 = new AlarmClock(9, 42);

            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("__________________________________");
            HorizontalLine = "Test 2. \nTest av konstruktorn med två parametrar, <9, 42>.";
            ViewTestHeader(HorizontalLine);
            Console.WriteLine();
            Console.WriteLine(time2);


            AlarmClock time3 = new AlarmClock(13, 24, 7, 35);

            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("__________________________________");
            HorizontalLine = "Test 3. \nTest av konstruktorn med fyra parametrar, <13, 24, 7, 35>.";
            ViewTestHeader(HorizontalLine);
            Console.WriteLine();
            Console.WriteLine(time3);



            AlarmClock time4 = new AlarmClock(23, 58, 7, 35);

            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("__________________________________");
            HorizontalLine = "Test 4.\nStäller befintligt AlamClock-objekt till 23:58 och låter den gå 13 minuter.";
            ViewTestHeader(HorizontalLine);
            Console.WriteLine();
            ammountOfMinutes = 13;
            Run(time4, ammountOfMinutes);



            AlarmClock time5 = new AlarmClock(6, 12, 6, 15);

            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("__________________________________");
            HorizontalLine = "Test 5.\nStäller befintligt AlarmClock-objekt till tiden 6:12 och alarmtiden till 6:15 och låter den gå 6 minuter";
            ViewTestHeader(HorizontalLine);
            Console.WriteLine();
            ammountOfMinutes = 6;
            Run(time5, ammountOfMinutes);



            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("__________________________________");
            HorizontalLine = "Test 6.\nTestar egenskaperna så att undantag kastas så tid och alarmtid tilldelas felaktiga värden.";
            ViewTestHeader(HorizontalLine);
            Console.WriteLine();
            try
            {
                time.Hour = 88;
            }

            catch (ArgumentException ex)
            {
                ViewErrorMessage(ex.Message);
            }

            try
            {
                time.Minute = 88;
            }

            catch (ArgumentException ex)
            {
                ViewErrorMessage(ex.Message);
            }

            try
            {
                time.Alarmhour = 88;
            }

            catch (ArgumentException ex)
            {
                ViewErrorMessage(ex.Message);
            }

            try
            {
                time.Minute = 88;
            }

            catch (ArgumentException ex)
            {
                ViewErrorMessage(ex.Message);
            }



            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("__________________________________");
            HorizontalLine = "Test 7.\nTest av konstruktorer så att undantag kastas då tid och alarmtid tilldelas felaktiga värden.";
            ViewTestHeader(HorizontalLine);
            Console.WriteLine();

            try
            {
                AlarmClock time6 = new AlarmClock(88, 0, 0, 0);
            }

            catch (ArgumentException ex)
            {
                ViewErrorMessage(ex.Message);
            }

            try
            {
                AlarmClock time6 = new AlarmClock(0, 0, 545, 0);
            }

            catch (ArgumentException ex)
            {
                ViewErrorMessage(ex.Message);
            }
        }