//Displays message to user
        public static void ViewMessage(string message, ConsoleColor backgroundColor = ConsoleColor.Blue, ConsoleColor foregroundColor = ConsoleColor.White)
        {
            MyExtensions.ChangeColor(backgroundColor, foregroundColor);

            Console.WriteLine(message);

            MyExtensions.ChangeColor(ConsoleColor.Black, ConsoleColor.White);
        }
 //Skriver t rubrik för individuellt test
 private static void ViewTestHeader(string title, string description)
 {
     Console.WriteLine();
     MyExtensions.ViewMessage(HorizontalLine, ConsoleColor.DarkMagenta);
     Console.WriteLine();
     MyExtensions.ViewMessage(title, ConsoleColor.DarkMagenta);
     Console.WriteLine();
     Console.WriteLine(description);
     Console.WriteLine();
 }
        static void Main(string[] args)
        {
            MyExtensions.PrettyConsole(Strings.App_Title);

            MyExtensions.ChangeColor(ConsoleColor.White, ConsoleColor.DarkMagenta);
            Console.WriteLine(" ╔═════════════════════════════════════════════╗ ");
            Console.WriteLine(" ║           Alarmklockan URLED (TM)           ║ ");
            Console.WriteLine(" ║          Modellnummer: 1DV402S2L2C          ║ ");
            Console.WriteLine(" ║            Tillverkad av: eh222ve           ║ ");
            Console.WriteLine(" ╚═════════════════════════════════════════════╝ ");
            MyExtensions.ChangeColor();

            RunTest();

            MyExtensions.ViewMessage(Strings.Continue_Prompt, ConsoleColor.White, ConsoleColor.DarkGreen);
            Console.ReadKey();
        }
        //Kör klockan givet antal minuter
        private static void Run(AlarmClock ac, int minutes)
        {
            SoundPlayer sp = new SoundPlayer("../../Alarm.wav");

            sp.Load();

            for (int i = 0; i < minutes; i++)
            {
                if (ac.TickTock())
                {
                    MyExtensions.ViewMessage(String.Format(" ♫ {0} - Vakna!", ac.ToString()), ConsoleColor.White, ConsoleColor.DarkMagenta);
                    sp.PlaySync();
                }

                Console.WriteLine("   {0}", ac.ToString());
            }

            sp.Dispose();
        }
        //Kör alla tester
        private static void RunTest()
        {
            AlarmClock ac = new AlarmClock();

            ViewTestHeader("Test 1", Strings.Test1_Description);
            try
            {
                ac = new AlarmClock();
                Console.WriteLine(ac.ToString());
            }
            catch (Exception ex)
            {
                ViewErrorMessage(ex.Message);
            }

            ViewTestHeader("Test 2", Strings.Test2_Description);
            try
            {
                ac = new AlarmClock(9, 42);
                Console.WriteLine(ac.ToString());
            }
            catch (Exception ex)
            {
                ViewErrorMessage(ex.Message);
            }

            ViewTestHeader("Test 3", Strings.Test3_Description);
            try
            {
                ac = new AlarmClock(13, 24, 7, 35);
                Console.WriteLine(ac.ToString());
            }
            catch (Exception ex)
            {
                ViewErrorMessage(ex.Message);
            }

            ViewTestHeader("Test 4", Strings.Test4_Description);
            try
            {
                ac = new AlarmClock("7:07", "7:10", "7:15", "7:30");
                Console.WriteLine(ac.ToString());
            }
            catch (Exception ex)
            {
                ViewErrorMessage(ex.Message);
            }

            ViewTestHeader("Test 5", Strings.Test5_Description);
            try
            {
                ac.Time = "23:58";
                Run(ac, 13);
            }
            catch (Exception ex)
            {
                ViewErrorMessage(ex.Message);
            }
            ViewTestHeader("Test 6", Strings.Test6_Description);
            try
            {
                ac.Time       = "6:12";
                ac.AlarmTimes = new string[1] {
                    "6:15"
                };
                Run(ac, 6);
            }
            catch (Exception ex)
            {
                ViewErrorMessage(ex.Message);
            }
            ViewTestHeader("Test 7", Strings.Test7_Description);
            try
            {
                ac.Time = "24:89";
            }
            catch (Exception ex)
            {
                ViewErrorMessage(ex.Message);
            }
            try
            {
                ac.AlarmTimes = new string[1] {
                    "7:69"
                };
            }
            catch (Exception ex)
            {
                ViewErrorMessage(ex.Message);
            }
            ViewTestHeader("Test 8", Strings.Test8_Description);
            try
            {
                ac = new AlarmClock("32:03");
            }
            catch (Exception ex)
            {
                ViewErrorMessage(ex.Message);
            }
            try
            {
                ac = new AlarmClock("20:00", "27:00");
            }
            catch (Exception ex)
            {
                ViewErrorMessage(ex.Message);
            }

            Console.WriteLine();
            MyExtensions.ViewMessage(HorizontalLine, ConsoleColor.DarkMagenta);
            Console.WriteLine();
        }
 //Visar upp felmeddelande
 private static void ViewErrorMessage(string message)
 {
     MyExtensions.ViewMessage(message, ConsoleColor.White, ConsoleColor.Red);
 }