//Entry point into the program
    public static void Main(string[] args)
    {
        //Initializing the constructor
        PayrollSystemTest payrollInstance = new PayrollSystemTest();

        //Initializing the delegate
        Comparer cmp = new Comparer(Employee.compareSSNs);

        bool again = true;

        //Loop to handle menu options
        while (again)
        {
            Console.WriteLine("\n\n1.) Sort by social security number in ascending order");
            Console.WriteLine("2.) Sort by last name in ascending order");
            Console.WriteLine("3.) Sort by pay amount in descending order");
            Console.WriteLine("4.) Exit");

            switch (Console.ReadLine())
            {
                case "1":
                    //Sort by ssn Asc
                    Console.WriteLine("SORTING BY SSN Ascending\n\n");
                    
                    payrollInstance.sortSSNs(cmp, SortType.Ascending);

                    foreach (var currentPayable in payrollInstance.payableObjects)
                    {
                        Console.WriteLine("{0}: {1:C}\n", currentPayable, currentPayable.Earnings());
                    }
                    break;

                case "2":
                    //Sort by last name Asc
                    Console.WriteLine("SORTING BY LAST NAME Ascending\n\n");
                    Array.Sort(payrollInstance.payableObjects, Employee.sortByLNameAsc());
                    foreach (var currentPayable in payrollInstance.payableObjects)
                    {
                        Console.WriteLine("{0}: {1:C}\n", currentPayable, currentPayable.Earnings());
                    }
                    break;

                case "3":
                    //Sort by $ Dsc
                    //Using Comparable's default sort order by overriding the CompareTo method
                    Console.WriteLine("SORTING BY PAY Decending\n\n");
                    int k;
                    Employee[] empCopies = new Employee[payrollInstance.payableObjects.Length];
                    for(k = 0; k < payrollInstance.payableObjects.Length; k++)
                    {
                        empCopies[k] = (Employee)payrollInstance.payableObjects[k];
                    }

                    //CompareTo is implemented in the Employee class so the Array of IPayables was casted to Employee
                    //So we can use the default sort on the earnings
                    Array.Sort(empCopies);

                    foreach (var currentPayable in empCopies)
                    {
                        Console.WriteLine("{0}: {1:C}\n", currentPayable, currentPayable.Earnings());
                    }
                    break;

                    //Default case catches when user wants to exit
                default:
                    again = false;
                    Console.WriteLine("Thank you!");
                    break;
            }
        }
    } // end Main
    //Entry point into the program
    public static void Main(string[] args)
    {
        //Initializing the constructor
        PayrollSystemTest payrollInstance = new PayrollSystemTest();

        //Initializing the delegate
        Comparer cmp = new Comparer(Employee.compareSSNs);

        bool again = true;

        //Loop to handle menu options
        while (again)
        {
            Console.WriteLine("\n\n1.) Sort by social security number in ascending order");
            Console.WriteLine("2.) Sort by last name in ascending order");
            Console.WriteLine("3.) Sort by pay amount in descending order");
            Console.WriteLine("4.) Exit");

            switch (Console.ReadLine())
            {
                case "1":
                    //Sort by ssn Asc
                    Console.WriteLine("SORTING BY SSN Ascending\n\n");

                    payrollInstance.sortSSNs(cmp, SortType.Ascending);

                    foreach (var currentPayable in payrollInstance.payableObjects)
                    {
                        Console.WriteLine("{0}: {1:C}\n", currentPayable, currentPayable.Earnings());
                    }
                    break;

                case "2":
                    //Sort by last name Asc
                    Console.WriteLine("SORTING BY LAST NAME Ascending\n\n");
                    Array.Sort(payrollInstance.payableObjects, Employee.sortByLNameAsc());
                    foreach (var currentPayable in payrollInstance.payableObjects)
                    {
                        Console.WriteLine("{0}: {1:C}\n", currentPayable, currentPayable.Earnings());
                    }
                    break;

                case "3":
                    //Sort by $ Dsc
                    //Using Comparable's default sort order by overriding the CompareTo method
                    Console.WriteLine("SORTING BY PAY Decending\n\n");
                    int k;
                    Employee[] empCopies = new Employee[payrollInstance.payableObjects.Length];
                    for(k = 0; k < payrollInstance.payableObjects.Length; k++)
                    {
                        empCopies[k] = (Employee)payrollInstance.payableObjects[k];
                    }

                    //CompareTo is implemented in the Employee class so the Array of IPayables was casted to Employee
                    //So we can use the default sort on the earnings
                    Array.Sort(empCopies);

                    foreach (var currentPayable in empCopies)
                    {
                        Console.WriteLine("{0}: {1:C}\n", currentPayable, currentPayable.Earnings());
                    }
                    break;

                    //Default case catches when user wants to exit
                default:
                    again = false;
                    Console.WriteLine("Thank you!");
                    break;
            }
        }
    }