private bool Feasible(ExpectedTestResult result)
 {
     return(result.ExpectedMaxNumberOfShiftsFeasibility &&
            result.ExpectedMinTotalMinsFeasibility &&
            result.ExpectedMaxTotalMinsFeasibility &&
            result.ExpectedMinConsecutiveShiftsFeasibility &&
            result.ExpectedMaxConsecutiveShiftsFeasibility &&
            result.ExpectedMinConsecutiveDaysOffFeasibility &&
            result.ExpectedMaxNumberOfWeekendsFeasibility &&
            result.ExpectedDayOffsFeasibility &&
            result.ExpectedMinRestTimeFeasibility);
 }
        public ExpectedTestResult GenerateResult()
        {
            var result = new ExpectedTestResult
            {
                ExpectedPenalty = OptimalityEvaluator.CalculatePenalty(_result),
                ExpectedMaxNumberOfShiftsFeasibility     = ForEachEmployee(_feasibilityEvaluator.MaxNumberOfShiftsNotExceeded),
                ExpectedMinTotalMinsFeasibility          = ForEachEmployee(_feasibilityEvaluator.MinTotalMinutesNotExceeded),
                ExpectedMaxTotalMinsFeasibility          = ForEachEmployee(_feasibilityEvaluator.MaxTotalMinutesNotExceeded),
                ExpectedMinConsecutiveShiftsFeasibility  = ForEachEmployee(_feasibilityEvaluator.MinConsecutiveShiftsNotExceeded),
                ExpectedMaxConsecutiveShiftsFeasibility  = ForEachEmployee(_feasibilityEvaluator.MaxConsecutiveShiftsNotExceeded),
                ExpectedMinConsecutiveDaysOffFeasibility = ForEachEmployee(_feasibilityEvaluator.MinConsecutiveDaysOffNotExceeded),
                ExpectedMaxNumberOfWeekendsFeasibility   = ForEachEmployee(_feasibilityEvaluator.MaxNumberOfWeekendsNotExceeded),
                ExpectedDayOffsFeasibility     = ForEachEmployee(_feasibilityEvaluator.DayOffsRespected),
                ExpectedMinRestTimeFeasibility = ForEachEmployee(_feasibilityEvaluator.MinRestTimeRespected)
            };

            result.ExpectedFeasibility = Feasible(result);

            return(result);
        }