Ejemplo n.º 1
0
        public FuzzyDateTimePattern Negate() {
            FuzzyDateTimePattern newDateTimePattern = new FuzzyDateTimePattern();

            if (this.Year != null)
                newDateTimePattern.Year = this.Year * -1;
            if (this.Month != null)
                newDateTimePattern.Month = this.Month * -1;
            if (this.Day != null)
                newDateTimePattern.Day = this.Day * -1;
            if (this.Hour != null)
                newDateTimePattern.Hour = this.Hour * -1;
            if (this.Minute != null)
                newDateTimePattern.Minute = this.Minute * -1;
            if (this.Second != null)
                newDateTimePattern.Second = this.Second * -1;

            return newDateTimePattern;
        }
Ejemplo n.º 2
0
 protected static FuzzyDateTimePattern AddRelatives(FuzzyDateTimePattern relative1, FuzzyDateTimePattern relative2) {
     return new FuzzyDateTimePattern {
         Rule = TimeType.Relative,
         Year = (int?) FuzzyDateTimePattern.Combine(relative1.Year, relative2.Year),
         Month = (int?) FuzzyDateTimePattern.Combine(relative1.Month, relative2.Month),
         Day = (int?) FuzzyDateTimePattern.Combine(relative1.Day, relative2.Day),
         Hour = (int?) FuzzyDateTimePattern.Combine(relative1.Hour, relative2.Hour),
         Minute = (int?) FuzzyDateTimePattern.Combine(relative1.Minute, relative2.Minute),
         Second = (int?) FuzzyDateTimePattern.Combine(relative1.Second, relative2.Second),
         DayOfWeek = (System.DayOfWeek?) FuzzyDateTimePattern.Combine(relative1.DayOfWeek, relative2.DayOfWeek),
         TemporalInterval = (TemporalInterval) FuzzyDateTimePattern.Combine(relative1.TemporalInterval, relative2.TemporalInterval)
     };
 }
Ejemplo n.º 3
0
 protected static FuzzyDateTimePattern AddDefinitiveRelative(FuzzyDateTimePattern definitive, FuzzyDateTimePattern relative) {
     return new FuzzyDateTimePattern {
         Rule = TimeType.Definitive,
         Year = (int?) FuzzyDateTimePattern.AnchoredCombine(definitive.Year, DateTime.Now.Year, relative.Year, 0),
         Month = (int?) FuzzyDateTimePattern.AnchoredCombine(definitive.Month, DateTime.Now.Month, relative.Month, 0),
         Day = (int?) FuzzyDateTimePattern.AnchoredCombine(definitive.Day, DateTime.Now.Day, relative.Day, 0),
         Hour = (int?) FuzzyDateTimePattern.AnchoredCombine(definitive.Hour, DateTime.Now.Hour, relative.Hour, 0),
         Minute = (int?) FuzzyDateTimePattern.AnchoredCombine(definitive.Minute, DateTime.Now.Minute, relative.Minute, 0),
         Second = (int?) FuzzyDateTimePattern.AnchoredCombine(definitive.Second, DateTime.Now.Second, relative.Second, 0),
         DayOfWeek = (System.DayOfWeek?) FuzzyDateTimePattern.AnchoredCombine(definitive.DayOfWeek, DateTime.Now.DayOfWeek, relative.DayOfWeek, 0),
         TemporalInterval = (TemporalInterval) FuzzyDateTimePattern.Combine(definitive.TemporalInterval, relative.TemporalInterval)
     };
 }
Ejemplo n.º 4
0
 protected static FuzzyDateTimePattern AddDefinitives(FuzzyDateTimePattern definitive1, FuzzyDateTimePattern definitive2) {
     return new FuzzyDateTimePattern {
         Rule = TimeType.Definitive,
         Year = definitive1.Year ?? definitive2.Year,
         Month = definitive1.Month ?? definitive2.Month,
         Day = definitive1.Day ?? definitive2.Day,
         Hour = definitive1.Hour ?? definitive2.Hour,
         Minute = definitive1.Minute ?? definitive2.Minute,
         Second = definitive1.Second ?? definitive2.Second,
         DayOfWeek = definitive1.DayOfWeek ?? definitive2.DayOfWeek,
         TemporalInterval = definitive1.TemporalInterval != TemporalInterval.Infinite ? definitive1.TemporalInterval : definitive2.TemporalInterval
     };
 }
Ejemplo n.º 5
0
        protected static void AssertTemporalCommand(TextCommandController textCommandController, String command, TextCommandModel primaryCommand, TimeSpan? period = null, DateTime? delay = null, FuzzyDateTimePattern interval = null) {
            ICommandResult args = ExecuteTextCommand(textCommandController, command);

            AssertExecutedCommandAgainstTemporalValue(args, primaryCommand, period, delay, interval);
        }
Ejemplo n.º 6
0
        protected static void AssertExecutedCommandAgainstTemporalValue(ICommandResult args, TextCommandModel primaryCommand, TimeSpan? period = null, DateTime? delay = null, FuzzyDateTimePattern interval = null) {
            Assert.AreEqual(primaryCommand, args.Now.TextCommands.First(), String.Format("Has not used the '{0}' command", primaryCommand.PluginCommand));

            TextCommandMatchModel match = args.Now.TextCommandMatches.First();

            Assert.IsNotNull(match);

            if (period.HasValue == true) {
                Assert.IsNotNull(match.Period);

                Assert.AreEqual(Math.Ceiling(period.Value.TotalSeconds), Math.Ceiling(match.Period.Value.TotalSeconds));
            }
            else {
                Assert.IsNull(match.Period);
            }

            if (delay.HasValue == true) {
                Assert.IsNotNull(match.Delay);

                // Note that the delay is generated then passed through to the test, which then needs
                // to create a DateTime. We allow a little give here of a second or so for execution times.
                // If it's longer than that then we should be optimizing anyway.

                // Whatever is passed into this function is generated after the command has been run.
                Assert.IsTrue(delay.Value - match.Delay.Value < new TimeSpan(TimeSpan.TicksPerSecond * 1));

                // Assert.AreEqual(delay.Value, args.After.TextCommandMatches.First().Delay.Value);
            }
            else {
                Assert.IsNull(match.Delay);
            }

            if (interval != null) {
                Assert.IsNotNull(match.Interval);

                Assert.AreEqual(interval.ToString(), match.Interval.ToString());
            }
            else {
                Assert.IsNull(match.Interval);
            }
        }