/// <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>
        /// 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);
        }
        //Run Metoden
        static void Run(AlarmClock test, int minutes)
        {
            Console.BackgroundColor = ConsoleColor.DarkGreen;
            Console.WriteLine(" ╔══════════════════════════════════════╗ ");
            Console.WriteLine(" ║       Väckarklockan URLED <TM>       ║ ");
            Console.WriteLine(" ║        Modellnr.:1DV402S2L2A         ║ ");
            Console.WriteLine(" ╚══════════════════════════════════════╝ ");
            Console.ResetColor();
            Console.WriteLine();

            for (int i = 0; i < minutes; i++)
            {
                if (test.TickTock())
                {
                    Console.BackgroundColor = ConsoleColor.DarkBlue;
                    Console.WriteLine((test.ToString()) + "♫" + "     BEEP BEEP BEEP!!!");
                    Console.ResetColor();
                }
                else
                {
                    Console.WriteLine(test.ToString());
                }
            }
        }
        /// <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>
        /// 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)
        {
            //Test 1
            ViewTestHeader("Test 1. \nTest av standarnkonstruktorn.");
            AlarmClock testC1 = new AlarmClock();

            Console.WriteLine(testC1.ToString());

            //Test 2
            ViewTestHeader("Test 2. \nTest av konstruktorn med två parametrar (9, 42).");
            AlarmClock testC2 = new AlarmClock(9, 42);

            Console.WriteLine(testC2.ToString());

            //Test 3
            ViewTestHeader("Test 3. \nTest av konstruktorn med fyra parametrar (13, 42 ,7 ,35).");
            AlarmClock testC3 = new AlarmClock(13, 59, 7, 35);

            Console.WriteLine(testC3.ToString());

            //Test 4
            ViewTestHeader("Test 4. \nStäller befintligt AlarmClock-Object till 23:58 och låter den gå 13 minuter.");
            AlarmClock testC4 = new AlarmClock(23, 58, 7, 35);

            Run(testC4, 13);
            Console.WriteLine(testC4.ToString());

            //Test 5
            ViewTestHeader("Test 5. \nStäller befintligt AlarmClock-Object till tiden 6:12 och alarmtiden till 6:15\noch låter den gå till 6 minuter.");
            AlarmClock testC5 = new AlarmClock(6, 13, 6, 15);

            Run(testC5, 6);
            Console.WriteLine(testC5.ToString());

            //Test 6
            ViewTestHeader("Test 6. \nTestar egenskaperna så att undantag kastas då tid och alarmtid \ntilldelas felaktiga värden.");
            AlarmClock testC6 = new AlarmClock();


            // Testar om det kastast undantag i egenskaperna.
            try
            {
                testC6.Hour = 24;
            }
            catch (ArgumentException)
            {
                ViewErrorMessage("Timmen är inte i intervallet 0-23.");
            }
            try
            {
                testC6.Minute = 61;
            }
            catch (ArgumentException)
            {
                ViewErrorMessage("Minuten är inte i intervallet 0-59.");
            }
            try
            {
                testC6.AlarmHour = 24;
            }
            catch (ArgumentException)
            {
                ViewErrorMessage("AlarmTimmen är inte i intervallet 0-23.");
            }
            try
            {
                testC6.AlarmMinute = 61;
            }
            catch (ArgumentException)
            {
                ViewErrorMessage("Alarmminuten är inte i intervallet 0-59.");
            }

            //Test 7
            ViewTestHeader("Test 7. \nTestar konstruktorer så att undantag kastas då tid och alarmtid \ntilldelas felaktiga värden.");

            try
            {
                AlarmClock testC7 = new AlarmClock(24, 0, 0, 0);
            }
            catch
            {
                ViewErrorMessage("Timmen är inte i intervallet 0-23.");
            }
            try
            {
                AlarmClock testC7 = new AlarmClock(0, 61, 0, 0);
            }
            catch
            {
                ViewErrorMessage("Minuten är inte i intervallet 0-59");
            }
            try
            {
                AlarmClock testC7 = new AlarmClock(0, 0, 24, 0);
            }
            catch
            {
                ViewErrorMessage("Alarmtimmen är inte i intervallet 0-23.");
            }
            try
            {
                AlarmClock testC7 = new AlarmClock(0, 0, 0, 61);
            }
            catch
            {
                ViewErrorMessage("Alarmminuten är inte i intervallet 0-59.");
            }
        }