public void FalseWhenDoctorDoesnotExceedMaxShiftsForDoctor() { var doctor = new Doctor(); doctor.Name = "House"; doctor.MaxShifts = 5; doctor.TotalShiftCount = 2; var scheduler = new Scheduler(); Assert.IsFalse(scheduler.DoctorHasExceededHisPersonalMaxShifts(new Slot(new DateTime(2011, 9, 3), "CT", 2, true, 1, true, 1), doctor)); }
private void buttonRun_Click(object sender, System.EventArgs e) { if (AnyRequiredFieldsEmpty()) { MessageBox.Show("Not all required fields are filled."); return; } var bean = GetSchedulerConfigParams(); try { var doctors = Doctor.GetDoctorsFromFile(textboxDoctorFilename.Text); var runs = GetNumberOfRandomRuns(); var seedList = GetSeedList(runs); var keep = new Scheduler(doctors, bean); keep.Populate(0); var best = keep.BlankCount(); var bestSeed = 0; var randomOutput = new StringBuilder(); randomOutput.AppendLine(string.Format("Default Blanks: {0} Seed: {1}", best, bestSeed)); foreach (var seed in seedList) { var schedule = new Scheduler(doctors, bean); schedule.Populate(seed); var blankCount = schedule.BlankCount(); if (blankCount < best) { keep = schedule; best = blankCount; bestSeed = seed; } } if (keep != null) { randomOutput.AppendLine(string.Format("Best Blanks: {0} Seed: {1}", best, bestSeed)); var output = new StringBuilder(); output.AppendLine(randomOutput.ToString()); output.AppendLine(); output.AppendLine(keep.OutputSchedule().ToString()); output.AppendLine(); output.Append(keep.OutputDoctors().ToString()); textboxResults.Text = output.ToString(); } } catch (Exception error) { Results = error.Message; } }
public void FalseWhenMaxShiftsPerRotationIsZero() { var doctor = new Doctor(); doctor.Name = "House"; var scheduler = new Scheduler(); scheduler.Schedule = new List<Slot>(); scheduler.Schedule.Add(new Slot(new DateTime(2011, 9, 3), "CT", 2, true, 1, true, 1)); scheduler.Schedule.Add(new Slot(new DateTime(2011, 9, 10), "CT", 2, true, 2, true, 1)); scheduler.Schedule.Add(new Slot(new DateTime(2011, 9, 17), "CT", 2, true, 3, true, 1)); scheduler.Schedule[0].doctor = doctor; scheduler.MaxShiftsPerRotation = 0; Assert.IsFalse(scheduler.DoctorHasExceededMaxDaysThisRotation(scheduler.Schedule[1], doctor)); }
public void TrueWhenDayBeingScheduledWouldExceedMax() { var doctor = new Doctor(); doctor.Name = "House"; var scheduler = new Scheduler(); scheduler.Schedule = new List<Slot>(); scheduler.Schedule.Add(new Slot(new DateTime(2011, 9, 3), "CT", 2, true, 1, true, 1)); scheduler.Schedule.Add(new Slot(new DateTime(2011, 9, 11), "CT", 1, true, 2, false, 1)); scheduler.Schedule.Add(new Slot(new DateTime(2011, 9, 16), "CT", 3, true, 3, false, 1)); scheduler.Schedule[0].doctor = doctor; scheduler.Schedule[2].doctor = doctor; scheduler.MaxConsecutiveShifts = 2; Assert.IsTrue(scheduler.DoctorWouldExceedMaxConsecutiveShifts(scheduler.Schedule[1], doctor)); }