public void Assignable_AlreadyAssigned24_NotPGY1(ResidentYears residentYears)
        {
            //24HRShift
            var assignedShift = new Shift(DateTime.Today, TimeConstants.StartOfDay, TimeConstants.EndOfDay);
            var resident = new Resident { ResidentYear = residentYears };
            resident.Shifts.Add(assignedShift);
            Assert.AreEqual(24, assignedShift.DateRange.Hours);

            var unAssingableShift = new Shift(DateTime.Today.AddDays(1), TimeConstants.StartOfDay, TimeConstants.StartOfDay); //1 minute shift
            Assert.IsFalse(new ContinuousDutyHourConstraint().Assignable(resident, unAssingableShift));

            var assingableShift = new Shift(DateTime.Today.AddDays(1), TimeConstants.StartOfDay.AddMinutes(1), TimeConstants.StartOfDay.AddMinutes(1)); //1 minute shift non conitinous
            Assert.IsTrue(new ContinuousDutyHourConstraint().Assignable(resident, assingableShift));
        }
        public void Assignable_ShiftWouldResultInMoreThan24_NotPGY1(ResidentYears residentYears)
        {
            //23.5HRShift
            var assignedShift = new Shift(DateTime.Today, TimeConstants.StartOfDay.AddMinutes(30), TimeConstants.EndOfDay);
            var resident = new Resident { ResidentYear = residentYears };
            resident.Shifts.Add(assignedShift);

            //31 minute shift
            var unAssingableShift = new Shift(DateTime.Today.AddDays(1), TimeConstants.StartOfDay, TimeConstants.StartOfDay.AddMinutes(30));
            Assert.IsFalse(new ContinuousDutyHourConstraint().Assignable(resident, unAssingableShift));

            //30 minute shift
            var assingableShift = new Shift(DateTime.Today.AddDays(1), TimeConstants.StartOfDay, TimeConstants.StartOfDay.AddMinutes(29));
            Assert.IsTrue(new ContinuousDutyHourConstraint().Assignable(resident, assingableShift));
        }
 public RotationResidents this[ResidentYears index]
 {
     get {
         switch (index) {
             case ResidentYears.PGY_1:
                 return new RotationResidents(Interns);
             case ResidentYears.PGY_2:
                 return new RotationResidents(Senior1s);
             case ResidentYears.PGY_3:
                 return new RotationResidents(Senior2s);
             case ResidentYears.Chief:
                 return new RotationResidents(Chiefs);
             default:
                 throw new IndexOutOfRangeException();
         }
     }
 }