private DateRule(string name, DateType type, YearRule yearRule, MonthRule monthRule, DayRule dayRule)
 {
     Name      = name;
     Type      = type;
     YearRule  = yearRule;
     MonthRule = monthRule;
     DayRule   = dayRule;
 }
Beispiel #2
0
        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);