Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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;
            }
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        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));
        }