示例#1
0
        public void TryParse_NoMatch5()
        {
            RangeExpressionSection value;
            bool result = RangeExpressionSection.TryParse("123-1", ExpressionSectionType.Hour, out value);

            Assert.False(result);
        }
        static public bool TryParse(string s, ExpressionSectionType type, out RangeExpressionSection result)
        {
            result = default(RangeExpressionSection);
            if (string.IsNullOrEmpty(s)) return false;

            string[] parts = s.Split('-');
            if (parts.Length != 2) return false;

            if (string.IsNullOrEmpty(parts[0])) return false;
            if (parts[0].Contains(",")) return false;
            if (parts[0].Contains("/")) return false;
            if (parts[0].Contains("-")) return false;
            if (parts[0].Contains("?")) return false;

            ExpressionSectionBase startValue;
            if (!TryParse(parts[0], type, out startValue)) return false;
            if (!(startValue is SimpleExpressionSection)) return false;

            if (string.IsNullOrEmpty(parts[1])) return false;
            if (parts[1].Contains(",")) return false;
            if (parts[1].Contains("/")) return false;
            if (parts[1].Contains("-")) return false;
            if (parts[1].Contains("?")) return false;

            ExpressionSectionBase endValue;
            if (!TryParse(parts[1], type, out endValue)) return false;

            result = new RangeExpressionSection();
            result.Type = type;
            result.StartValue = startValue as SimpleExpressionSection;
            result.EndValue = endValue as SimpleExpressionSection;
            return true;
        }
示例#3
0
        public void TryParse_NoMatch_Empty()
        {
            RangeExpressionSection value;
            bool result = RangeExpressionSection.TryParse(null, ExpressionSectionType.Hour, out value);

            Assert.False(result);
        }
示例#4
0
        public void TryParse_NoMatch11()
        {
            RangeExpressionSection value;
            bool result = RangeExpressionSection.TryParse("1-2,3", ExpressionSectionType.DayOfMonth, out value);

            Assert.False(result);
        }
示例#5
0
        public void TryParse_NoMatch6()
        {
            RangeExpressionSection value;
            bool result = RangeExpressionSection.TryParse("1-9", ExpressionSectionType.DayOfWeek, out value);

            Assert.False(result);
        }
示例#6
0
        public void TryParse_Match3()
        {
            RangeExpressionSection value;
            bool result = RangeExpressionSection.TryParse("MON-FRI", ExpressionSectionType.DayOfWeek, out value);

            Assert.True(result);
            var start = value.StartValue as DayOfWeekExpressionSection;

            Assert.NotNull(start);
            Assert.AreEqual(DayOfWeek.Monday, start.DayOfWeek);
            var end = value.EndValue as DayOfWeekExpressionSection;

            Assert.NotNull(end);
            Assert.AreEqual(DayOfWeek.Friday, end.DayOfWeek);
        }
示例#7
0
        public void TryParse_Match2()
        {
            RangeExpressionSection value;
            bool result = RangeExpressionSection.TryParse("1-8", ExpressionSectionType.Hour, out value);

            Assert.True(result);
            var start = value.StartValue as SimpleExpressionSection;

            Assert.NotNull(start);
            Assert.AreEqual(1, start.Value);
            var end = value.EndValue as SimpleExpressionSection;

            Assert.NotNull(end);
            Assert.AreEqual(8, end.Value);
        }
        static public bool TryParse(string s, ExpressionSectionType type, out RangeExpressionSection result)
        {
            result = default(RangeExpressionSection);
            if (string.IsNullOrEmpty(s))
            {
                return(false);
            }

            string[] parts = s.Split('-');
            if (parts.Length != 2)
            {
                return(false);
            }

            if (string.IsNullOrEmpty(parts[0]))
            {
                return(false);
            }
            if (parts[0].Contains(","))
            {
                return(false);
            }
            if (parts[0].Contains("/"))
            {
                return(false);
            }
            if (parts[0].Contains("-"))
            {
                return(false);
            }
            if (parts[0].Contains("?"))
            {
                return(false);
            }

            ExpressionSectionBase startValue;

            if (!TryParse(parts[0], type, out startValue))
            {
                return(false);
            }
            if (!(startValue is SimpleExpressionSection))
            {
                return(false);
            }

            if (string.IsNullOrEmpty(parts[1]))
            {
                return(false);
            }
            if (parts[1].Contains(","))
            {
                return(false);
            }
            if (parts[1].Contains("/"))
            {
                return(false);
            }
            if (parts[1].Contains("-"))
            {
                return(false);
            }
            if (parts[1].Contains("?"))
            {
                return(false);
            }

            ExpressionSectionBase endValue;

            if (!TryParse(parts[1], type, out endValue))
            {
                return(false);
            }

            result            = new RangeExpressionSection();
            result.Type       = type;
            result.StartValue = startValue as SimpleExpressionSection;
            result.EndValue   = endValue as SimpleExpressionSection;
            return(true);
        }