コード例 #1
0
        public void Every5Hours()
        {
            var pattern = PatternFactory.Create("5.hours");
            var next    = pattern.Next();

            Assert.True(next >= DateTime.UtcNow);
            Assert.True((next - DateTime.UtcNow).TotalHours >= 4 && (next - DateTime.UtcNow).TotalHours < 6);
        }
コード例 #2
0
        public void Every5Weeks()
        {
            var pattern = PatternFactory.Create("5.weeks");
            var next    = pattern.Next();

            Assert.True(next >= DateTime.UtcNow);
            Assert.True((next - DateTime.UtcNow).TotalDays / 7 >= 4 && (next - DateTime.UtcNow).TotalDays / 7 < 6);
        }
コード例 #3
0
        public void Every5Minutes()
        {
            var pattern = PatternFactory.Create("5.minutes");
            var next    = pattern.Next();

            Assert.True(next >= DateTime.UtcNow);
            Assert.True((next - DateTime.UtcNow).TotalMinutes >= 4 && (next - DateTime.UtcNow).TotalMinutes < 6);
        }
コード例 #4
0
        public void Creates_List_Of_Winning_Patterns_Based_On_Board_Size(int size, IEnumerable <string> expected)
        {
            var factory = new PatternFactory();

            var patterns = factory.Create(size);

            patterns.Should().BeEquivalentTo(expected);
        }
コード例 #5
0
        public void Every5Seconds()
        {
            var pattern = PatternFactory.Create("5.seconds");
            var next    = pattern.Next();

            Assert.True(next >= DateTime.UtcNow);
            Assert.True((next - DateTime.UtcNow).TotalSeconds >= 4 && (next - DateTime.UtcNow).TotalSeconds < 6);
        }
コード例 #6
0
        public void Every5Months()
        {
            var pattern = PatternFactory.Create("5.months");
            var next    = pattern.Next();

            Assert.True(next >= DateTime.UtcNow);
            Assert.Equal("5.months", pattern.Value);
            Assert.True((next - DateTime.UtcNow).TotalDays / 30 >= 4 && (next - DateTime.UtcNow).TotalDays / 30 < 6);
        }
コード例 #7
0
        public void EveryMondayAtMidnight()
        {
            var pattern = PatternFactory.Create("Monday.00.00.00");
            var next    = pattern.Next();

            Assert.True(next >= DateTime.UtcNow);
            Assert.Equal(DayOfWeek.Monday, next.DayOfWeek);
            Assert.Equal(0, next.Hour);
            Assert.Equal(0, next.Minute);
            Assert.Equal(0, next.Second);
        }
コード例 #8
0
        public void EveryDayInWeek()
        {
            var pattern = PatternFactory.Create("**.23.57.10");
            var next    = pattern.Next();

            Assert.True(next >= DateTime.UtcNow);
            Assert.True(next <= DateTime.UtcNow.AddDays(1));
            Assert.Equal(23, next.Hour);
            Assert.Equal(57, next.Minute);
            Assert.Equal(10, next.Second);
        }
コード例 #9
0
        public void Every5thOfMonth()
        {
            var pattern = PatternFactory.Create("**.05.23.57.01");
            var next    = pattern.Next();

            Assert.True(next >= DateTime.UtcNow);
            Assert.Equal(5, next.Day);
            Assert.Equal(23, next.Hour);
            Assert.Equal(57, next.Minute);
            Assert.Equal(1, next.Second);
        }
コード例 #10
0
        public void EverySaturdayAndSundayAt23_57_01()
        {
            var pattern = PatternFactory.Create("Saturday|Sunday.23.57.01");
            var next    = pattern.Next();

            Assert.True(next >= DateTime.UtcNow);
            Assert.True(next.DayOfWeek == DayOfWeek.Saturday || next.DayOfWeek == DayOfWeek.Sunday);
            Assert.Equal(23, next.Hour);
            Assert.Equal(57, next.Minute);
            Assert.Equal(1, next.Second);
        }
コード例 #11
0
        public void ExtensionPattern_02()
        {
            PatternFactory.AddExtensionPattern(
                "foo",
                str =>
            {
                Assert.Equal("howdy-world:foo", str);
                return(new ExtPattern(str));
            });
            var pattern = PatternFactory.Create("ext:foo:howdy-world:foo");
            var next    = pattern.Next();

            Assert.Equal(next, new DateTime(2030, 11, 11, 11, 11, 11));
            Assert.Equal("ext:foo:howdy-world:foo", pattern.Value);
        }
コード例 #12
0
        public void EveryJanuaryAndJuly()
        {
            var pattern = PatternFactory.Create("01|07.01.00.00.00");
            var next    = pattern.Next();

            Assert.True(next >= DateTime.UtcNow);
            if (DateTime.UtcNow.Month >= 1 && DateTime.UtcNow.Month <= 7)
            {
                Assert.Equal(7, next.Month);
            }
            else
            {
                Assert.Equal(1, next.Month);
            }
            Assert.Equal(00, next.Hour);
            Assert.Equal(00, next.Minute);
            Assert.Equal(00, next.Second);
        }
コード例 #13
0
        public void Every5thAnd15thOfMonth()
        {
            var pattern = PatternFactory.Create("**.05|15.23.59.59");
            var next    = pattern.Next();

            Assert.True(next >= DateTime.UtcNow);
            if (DateTime.UtcNow.Day >= 5 && DateTime.UtcNow.Day <= 16)
            {
                Assert.Equal(15, next.Day);
            }
            else
            {
                Assert.Equal(5, next.Day);
            }
            Assert.Equal(23, next.Hour);
            Assert.Equal(59, next.Minute);
            Assert.Equal(59, next.Second);
        }
コード例 #14
0
        private static void PrintPatterns(string patternTypeName)
        {
            var patterns = Assembly.GetExecutingAssembly().GetTypes().Where(r => r.BaseType == typeof(Pattern));

            var patternClasses = patterns.Select(r => PatternFactory.Create(r.Name)).ToArray();

            // Get pattern type if patternTypeName is specified. Otherwise, get all the types
            var patternTypes = patternClasses
                               .Where(r => patternTypeName == null || string.Equals(r.PatternType.GetType().Name,
                                                                                    patternTypeName.RemoveWhiteSpace(),
                                                                                    StringComparison.CurrentCultureIgnoreCase))
                               .Select(r => r.PatternType)
                               .GroupBy(x => x.PatternType)
                               .Select(g => g.First());

            foreach (var patternType in patternTypes)
            {
                Console.WriteLine($@"{patternType.PatternType}:");
                patternClasses.Where(r => r.PatternType.PatternType == patternType.PatternType)
                .ToList()
                .ForEach(r => Console.WriteLine($@"	{r.PatternName}"));
                Console.WriteLine();
            }
        }
コード例 #15
0
 public void InvalidRepetitionPattern_02()
 {
     Assert.Throws <FormatException>(() => PatternFactory.Create("MM.dd.HH.mm.ss"));
 }
コード例 #16
0
        public void WeekdaysPatternToString_02()
        {
            var pattern = PatternFactory.Create("sunday|Monday.23.59.14");

            Assert.Equal("Sunday|Monday.23.59.14", pattern.Value);
        }
コード例 #17
0
        public void MonthPatternToString_02()
        {
            var pattern = PatternFactory.Create("**.**.00.00.00");

            Assert.Equal("**.**.00.00.00", pattern.Value);
        }
コード例 #18
0
        public void WeekdaysPatternToString_01()
        {
            var pattern = PatternFactory.Create("Monday.00.00.00");

            Assert.Equal("Monday.00.00.00", pattern.Value);
        }
コード例 #19
0
 public void InvalidRepetitionPattern_03()
 {
     Assert.Throws <FormatException>(() => PatternFactory.Create("**.**.**.**.ss"));
 }
コード例 #20
0
 public void InvalidRepetitionPattern_08()
 {
     Assert.Throws <ArgumentException>(() => PatternFactory.Create("5.years"));
 }
コード例 #21
0
 public void InvalidRepetitionPattern_07()
 {
     Assert.Throws <FormatException>(() => PatternFactory.Create("Monday.01.01.**"));
 }
コード例 #22
0
 public void InvalidRepetitionPattern_05()
 {
     Assert.Throws <ArgumentException>(() => PatternFactory.Create("01.**.**.**.**.Monday"));
 }
コード例 #23
0
 public void InvalidRepetitionPattern_04()
 {
     Assert.Throws <ArgumentException>(() => PatternFactory.Create("Monday|Wrongday.01.01.01"));
 }