Пример #1
0
        public void Constructor3()
        {
            RepetitionParser rp;

            Assert.Throws <ArgumentOutOfRangeException>(
                () => rp = new RepetitionParser(Parser, 1, 0));
        }
Пример #2
0
        public void Constructor2()
        {
            RepetitionParser rp;

            Assert.Throws <ArgumentNullException>(
                () => rp = new RepetitionParser(null, 0, 1));
        }
Пример #3
0
        public void Constructor()
        {
            Parser           p  = Parser;
            RepetitionParser rp = new RepetitionParser(p, 10, 20);

            Assert.AreEqual(rp.LowerBound, 10);
            Assert.AreEqual(rp.UpperBound, 20);
            Assert.AreEqual(rp.Parser, p);
        }
Пример #4
0
        public void PositiveFailure()
        {
            RepetitionParser rp   = +Parser;
            string           s    = "b";
            StringScanner    scan = new StringScanner(s);
            ParserMatch      m    = rp.Parse(scan);

            Assert.IsTrue(!m.Success);
        }
Пример #5
0
        public void OptionalSuccess0()
        {
            RepetitionParser rp   = !Parser;
            string           s    = "";
            StringScanner    scan = new StringScanner(s);
            ParserMatch      m    = rp.Parse(scan);

            Assert.IsTrue(m.Success);
            Assert.IsTrue(m.Empty);
        }
Пример #6
0
        public void KleneeSuccessNotAtEnd()
        {
            RepetitionParser rp   = Ops.ZeroOrMore(Parser);
            String           s    = "aaa ";
            StringScanner    scan = new StringScanner(s);
            ParserMatch      m    = rp.Parse(scan);

            Assert.IsTrue(m.Success);
            Assert.AreEqual(3, m.Length);
            Assert.IsFalse(scan.AtEnd);
        }
Пример #7
0
        public void PositiveSuccessNotAtEnd()
        {
            RepetitionParser rp   = +Parser;
            string           s    = "aaa ";
            StringScanner    scan = new StringScanner(s);
            ParserMatch      m    = rp.Parse(scan);

            Assert.IsTrue(m.Success);
            Assert.AreEqual(m.Length, 3);
            Assert.IsTrue(!scan.AtEnd);
        }
Пример #8
0
        public void OptionalSuccess()
        {
            RepetitionParser rp   = !Parser;
            string           s    = "aa";
            StringScanner    scan = new StringScanner(s);
            ParserMatch      m    = rp.Parse(scan);

            Assert.IsTrue(m.Success);
            Assert.AreEqual(m.Length, 1);
            Assert.AreEqual(scan.Offset, 1);
        }
Пример #9
0
        public void KleneeSuccess0()
        {
            RepetitionParser rp   = Ops.Klenee(Parser);
            string           s    = "b";
            StringScanner    scan = new StringScanner(s);
            ParserMatch      m    = rp.Parse(scan);

            Assert.IsTrue(m.Success);
            Assert.IsTrue(m.Empty);
            Assert.IsTrue(!scan.AtEnd);
        }
Пример #10
0
        public void KleneeSuccess2AtEnd()
        {
            RepetitionParser rp   = Ops.Klenee(Parser);
            string           s    = "aa";
            StringScanner    scan = new StringScanner(s);
            ParserMatch      m    = rp.Parse(scan);

            Assert.IsTrue(m.Success);
            Assert.AreEqual(m.Length, 2);
            Assert.IsTrue(scan.AtEnd);
        }
Пример #11
0
        public void PositiveSequenceSuccessNotAtEnd()
        {
            RepetitionParser rp   = +SequenceParser;
            String           s    = "ababab ";
            StringScanner    scan = new StringScanner(s);
            ParserMatch      m    = rp.Parse(scan);

            Assert.IsTrue(m.Success);
            Assert.AreEqual(0, m.Offset);
            Assert.AreEqual(6, m.Length);
            Assert.IsFalse(scan.AtEnd);
        }
Пример #12
0
 public void When_no_items_match_but_were_not_required()
 {
     var input = new MockInput<int>();
     var parser = new RepetitionParser<int, int>(
         minimumCount: 0,
         parser: new MockSequenceParser<int, int>
                     {
                         p => ParseResult.Failure<int, int>(input, p)
                     }
         );
     var actualResult = parser.Parse(input);
     var actualCollection = ParseResultAssert.IsSuccess(actualResult);
     CollectionAssert.AreElementsEqual(new int[] { }, actualCollection);
 }
Пример #13
0
 public void When_a_single_item_matches()
 {
     var input = new MockInput<int>();
     var parser = new RepetitionParser<int, int>(
         new MockSequenceParser<int, int>
             {
                 p => ParseResult.Success(input, input, 1),
                 p => ParseResult.Failure<int, int>(input, p)
             }
         );
     var actualResult = parser.Parse(input);
     var actualCollection = ParseResultAssert.IsSuccess(actualResult);
     CollectionAssert.AreElementsEqual(new[] { 1 }, actualCollection);
 }
Пример #14
0
 public void When_three_items_match_but_required_four()
 {
     var input = new MockInput<int>();
     var parser = new RepetitionParser<int, int>(
         minimumCount: 4,
         parser: new MockSequenceParser<int, int>
                     {
                         ParseResult.Success(input, input, 1),
                         ParseResult.Success(input, input, 2),
                         ParseResult.Success(input, input, 3),
                         p => ParseResult.Failure<int, int>(input, p)
                     }
         );
     var actualResult = parser.Parse(input);
     ParseResultAssert.IsFailure(actualResult);
 }
Пример #15
0
 public void Constructor3()
 {
     RepetitionParser rp = new RepetitionParser(Parser, 1, 0);
 }
Пример #16
0
 public void Constructor2()
 {
     RepetitionParser rp = new RepetitionParser(null, 0, 1);
 }
Пример #17
0
 public void When_no_items_match_but_were_required()
 {
     var input = new MockInput<int>();
     var parser = new RepetitionParser<int, int>(
         minimumCount: 1,
         parser: new MockSequenceParser<int, int>
                     {
                         p => ParseResult.Failure<int, int>(input, p)
                     }
         );
     var actualResult = parser.Parse(input);
     ParseResultAssert.IsFailure(actualResult);
 }