public void GenerateSchedulePriorityTest()
    {
        //arrange
            ShiftTable shifts = new ShiftTable();
            Shift shift1 = new Shift("", "", "Sunday", "7", "15", "Sion", "", "");
            Shift shift2 = new Shift("", "", "Sunday", "15", "23", "Sion", "", "");
            Shift shift3 = new Shift("", "", "Sunday", "23", "7", "Sion", "", "");
            shifts.AddShift(shift1);
            shifts.AddShift(shift2);
            shifts.AddShift(shift3);

            ShiftTable options = new ShiftTable();
            Shift option1 = new Shift("123456789", "Polishuk", "Sunday", "7", "15", "Sion", "Low", "");
            Shift option2 = new Shift("123456789", "Polishuk", "Sunday", "15", "23", "Sion", "High", "");
            Shift option3 = new Shift("123456789", "Polishuk", "Sunday", "23", "7", "Sion", "Low", "");
            options.AddShift(option1);
            options.AddShift(option2);
            options.AddShift(option3);

            //act
            GenerateTable generator = new GenerateTable(options, shifts);
            ShiftTable schedule = generator.GenerateSchedule();

            //assert
            Assert.AreEqual(schedule.GetAllShifts().Count, 1, "GenerateSchedulePriorityTest error: the number of shift do not mach expectation");
            Assert.AreEqual(schedule.optionExists(option2), true, "GenerateSchedulePriorityTest error: the option do not exists");
    }
 protected void GenerateScheduleButton_Click(object sender, EventArgs e)
 {
     GT = new GenerateTable(shiftOptionsTable, weeklyShiftTable);
     weeklyShiftTable = GT.GenerateSchedule();
     setNames();
     foreach (Shift sh in weeklyShiftTable.GetAllShifts())
     {
         string day = sh.getDay().Trim();
         string begin = sh.getBegin_Time().Trim();
         string name = sh.getName().Trim();
         int index = 0;
         switch (day)
         {
             case "Sunday":
                 index = 1;
                 break;
             case "Monday":
                 index = 2;
                 break;
             case "Tusday":
                 index = 3;
                 break;
             case "Wednsday":
                 index = 4;
                 break;
             case "Thursday":
                 index = 5;
                 break;
             case "Friday":
                 index = 6;
                 break;
             case "Saturday":
                 index = 7;
                 break;
         }
         int j;
         int k;
         bool found = false;
         for (j = 0; j < WeeklyScheduleGrid.Rows.Count; j++)
         {
             if (WeeklyScheduleGrid.Rows[j].Cells[0].Text.Split('-')[0].Trim().Equals(begin))
             {
                 while (WeeklyScheduleGrid.Rows[j].Cells[0].Text.Split('-')[0].Trim().Equals(begin) && j < WeeklyScheduleGrid.Rows.Count-1)
                 {
                     if (!selectedIndexes[j, index])
                     {
                         found = true;
                         break;
                     }
                     j++;
                 }
                 break;
             }
         }
         if (found)
         {
             for (k = 0;
                  k < ((DropDownList)WeeklyScheduleGrid.Rows[j].Cells[index].Controls[0]).Items.Count;
                  k++)
             {
                 if (!((DropDownList)WeeklyScheduleGrid.Rows[j].Cells[index].Controls[0]).Items[k].Text.Trim().Equals(name)) continue;
                 ((DropDownList)WeeklyScheduleGrid.Rows[j].Cells[index].Controls[0]).SelectedIndex = k;
                 ((DropDownList)WeeklyScheduleGrid.Rows[j].Cells[index].Controls[0]).ForeColor = System.Drawing.Color.DeepPink;
                 selectedIndexes[j, index] = true;
                 break;
             }
         }
     }
 }
    public void GenerateScheduleSimpleTest1()
    {
        //arrange
            ShiftTable shifts = new ShiftTable();
            Shift shift = new Shift("", "", "Sunday", "7", "15", "Sion", "", "");
            shifts.AddShift(shift);

            ShiftTable options = new ShiftTable();
            Shift option = new Shift("123456789", "Polishuk", "Sunday", "7", "15", "Sion", "", "");
            options.AddShift(option);

            //act
            GenerateTable generator = new GenerateTable(options, shifts);
            ShiftTable schedule = generator.GenerateSchedule();

            //assert
            Assert.AreEqual(schedule.GetAllShifts().Count, 1, "GenerateScheduleSimpleTest1 error: the number of shift do not mach expectation");
            Assert.AreEqual(schedule.optionExists(option),true, "GenerateScheduleSimpleTest1 error: the option do not exists");
    }
    public void GenerateScheduleTest()
    {
        //arrange
            ShiftTable shifts = new ShiftTable();
            Shift shift1 = new Shift("", "", "Sunday", "7", "15", "Sion", "", "");
            Shift shift2 = new Shift("", "", "Sunday", "15", "23", "Sion", "", "");
            Shift shift3 = new Shift("", "", "Sunday", "23", "7", "Sion", "", "");
            Shift shift4 = new Shift("", "", "Monday", "7", "15", "Sion", "", "");
            Shift shift5 = new Shift("", "", "Monday", "15", "23", "Sion", "", "");
            Shift shift6 = new Shift("", "", "Monday", "23", "7", "Sion", "", "");
            Shift shift7 = new Shift("", "", "Tuesday", "7", "15", "Sion", "", "");
            Shift shift8 = new Shift("", "", "Tuesday", "15", "23", "Sion", "", "");
            Shift shift9 = new Shift("", "", "Tuesday", "23", "7", "Sion", "", "");
            Shift shift10 = new Shift("", "", "Wednesday", "7", "15", "Sion", "", "");
            Shift shift11 = new Shift("", "", "Wednesday", "15", "23", "Sion", "", "");
            Shift shift12 = new Shift("", "", "Wednesday", "23", "7", "Sion", "", "");
            shifts.AddShift(shift1);
            shifts.AddShift(shift2);
            shifts.AddShift(shift3);
            shifts.AddShift(shift4);
            shifts.AddShift(shift5);
            shifts.AddShift(shift6);
            shifts.AddShift(shift7);
            shifts.AddShift(shift8);
            shifts.AddShift(shift9);
            shifts.AddShift(shift10);
            shifts.AddShift(shift11);
            shifts.AddShift(shift12);

            ShiftTable options = new ShiftTable();
            Shift option1 = new Shift("123456789", "Polishuk", "Sunday", "7", "15", "Sion", "Low", "");
            Shift option2 = new Shift("123456789", "Polishuk", "Sunday", "15", "23", "Sion", "High", "");
            Shift option3 = new Shift("123456789", "Polishuk", "Sunday", "23", "7", "Sion", "High", "");

            Shift option4 = new Shift("111222333", "Humi", "Sunday", "7", "15", "Sion", "High", "");
            Shift option5 = new Shift("111222333", "Humi", "Monday", "7", "15", "Sion", "High", "");
            Shift option6 = new Shift("111222333", "Humi", "Tuesday", "7", "15", "Sion", "High", "");

            Shift option7 = new Shift("222333444", "Soli", "Wednesday", "7", "23", "Sion", "High", "");
            Shift option8 = new Shift("222333444", "Soli", "Wednesday", "22", "7", "Sion", "High", "");
            Shift option9 = new Shift("222333444", "Soli", "Wednesday", "7", "7", "Sion", "High", "");

            Shift option10 = new Shift("333444555", "Kozo", "Wednesday", "7", "15", "Sion", "High", "");
            Shift option11 = new Shift("333444555", "Kozo", "Wednesday", "15", "23", "Sion", "High", "");
            Shift option12 = new Shift("333444555", "Kozo", "Wednesday", "23", "7", "Sion", "High", "");

            Shift option13 = new Shift("444555666", "Tkuma", "Monday", "7", "15", "Sion", "High", "");
            Shift option14 = new Shift("444555666", "Tkuma", "Monday", "15", "23", "Sion", "High", "");
            options.AddShift(option1);
            options.AddShift(option2);
            options.AddShift(option3);
            options.AddShift(option4);
            options.AddShift(option5);
            options.AddShift(option6);
            //options.AddShift(option7);
            options.AddShift(option8);
            //options.AddShift(option9);
            options.AddShift(option10);
            options.AddShift(option11);
            options.AddShift(option12);
            options.AddShift(option13);
            options.AddShift(option14);

            //act
            GenerateTable generator = new GenerateTable(options, shifts);
            ShiftTable schedule = generator.GenerateSchedule();

            //assert
            Assert.AreEqual(schedule.GetAllShifts().Count, 7, "GenerateScheduleTest error: the number of shift do not mach expectation");
            Assert.AreEqual(schedule.optionExists(option2), true, "GenerateScheduleTest error: the option do not exists");
            Assert.AreEqual(schedule.optionExists(option4), true, "GenerateScheduleTest error: the option do not exists");
            Assert.AreEqual(schedule.optionExists(option5), true, "GenerateScheduleTest error: the option do not exists");
            Assert.AreEqual(schedule.optionExists(option6), true, "GenerateScheduleTest error: the option do not exists");
            Assert.AreEqual(schedule.optionExists(option10), true, "GenerateScheduleTest error: the option do not exists");
            Assert.AreEqual(schedule.optionExists(option12), true, "GenerateScheduleTest error: the option do not exists");
            Assert.AreEqual(schedule.optionExists(option14), true, "GenerateScheduleTest error: the option do not exists");
    }