private DateRule(string name, DateType type, YearRule yearRule, MonthRule monthRule, DayRule dayRule) { Name = name; Type = type; YearRule = yearRule; MonthRule = monthRule; DayRule = dayRule; }
public ConsistentMonthAttribute() { Rule = new MonthRule(); var resolver = new MessageResolver(Configuration.MessageProvider, Configuration.MessageCache); ErrorMessage = resolver.GetMessage(Rule); }
public void GetTollFee_Handle_Date_With_Same_Month() { var expectedTollFee = 10; var monthNumber = 5; var vehicle = new Mock <IVehicle>(); var date = new DateTime(2018, monthNumber, 22, 1, 1, 1); var checkDate = date.AddHours(1); var rule = new MonthRule(expectedTollFee, monthNumber); var actualTollFee = rule.GetTollFee(vehicle.Object, checkDate); Assert.Equal(expectedTollFee, actualTollFee, 0); }
public bool Eval(DateTime date) { if (!YearRule.Eval(date)) { return(false); } if (!MonthRule.Eval(date)) { return(false); } if (!DayRule.Eval(date)) { return(false); } return(true); }
public void GetTollFee_Do_Not_Handle_Date_With_Other_Month() { var expectedNextTollFee = 20; var monthNumber = 5; var handledDate = new DateTime(2018, monthNumber, 22); var checkedDate = handledDate.AddMonths(1); var vehicle = new Mock <IVehicle>(); var nextRule = new Mock <IRule>(); nextRule.Setup(r => r.GetTollFee(vehicle.Object, checkedDate)) .Returns(expectedNextTollFee); var rule = new MonthRule(0, monthNumber); rule.SetNextRule(nextRule.Object); var actualTollFee = rule.GetTollFee(vehicle.Object, checkedDate); Assert.Equal(expectedNextTollFee, actualTollFee, 0); }
public static DateRule NationalHoliday(string name, YearRule yearRule, MonthRule monthRule, DayRule dayRule) => new DateRule(name, DateType.NationalHoliday, yearRule, monthRule, dayRule);
public static DateRule SubstituteHoliday(string name, YearRule yearRule, MonthRule monthRule, DayRule dayRule) => new DateRule(name, DateType.SubstituteHoliday, yearRule, monthRule, dayRule);