Beispiel #1
0
        public void SeparatedBy_MultipleValues_ReturnsValues()
        {
            var parser = Chars.Any().SeparatedBy(Chars.Char(';'));
            var result = parser.Parse("x;y;z");

            ParseAssert.ValueEquals(new char[] { 'x', 'y', 'z' }, result);
        }
Beispiel #2
0
        public void Between_AllMatching_ReturnsValue()
        {
            var parser = Chars.Any().Between(Chars.Char('['), Chars.Char(']'));
            var result = parser.Parse("[x]");

            ParseAssert.ValueEquals('x', result);
        }
Beispiel #3
0
        public void SeparatedBy_ValueOnly_ReturnsValue()
        {
            var parser = Chars.Any().SeparatedBy(Chars.Char(';'));
            var result = parser.Parse("x");

            ParseAssert.ValueEquals(new char[] { 'x' }, result);
        }
Beispiel #4
0
        public void SeparatedBy_ValueAndSeparator_ReturnsError()
        {
            var parser = Chars.Any().SeparatedBy(Chars.Char(';'));
            var result = parser.Parse("x;");

            ParseAssert.IsError(result);
        }
Beispiel #5
0
        public void Any_NonEmptyStream_ReturnsChar()
        {
            var parser = Chars.Any();
            var result = parser.Parse("a");

            ParseAssert.ValueEquals('a', result);
        }
Beispiel #6
0
        public void SeparatedBy_Nothing_ReturnsEmptyValue()
        {
            var parser = Chars.Any().SeparatedBy(Chars.Char(';'));
            var result = parser.Parse("");

            ParseAssert.ValueEquals(new char[] { }, result);
        }
Beispiel #7
0
        public void Any_EmptyStream_ReturnsError()
        {
            var parser = Chars.Any();
            var result = parser.Parse("");

            ParseAssert.IsError(result);
        }
Beispiel #8
0
        public void Not_Success_ReturnsError()
        {
            var parser = Parse.Not(Chars.Any());
            var result = parser.Parse("xyz");

            ParseAssert.ErrorEquals("Unexpected \"x\"", result);
        }
Beispiel #9
0
        public void Aggregate_CombinesParsedValues_UntilError()
        {
            var parser = Chars.Any()
                         .Aggregate(() => "test", (acc, c) => acc + c);
            var result = parser.Parse("xxyyzz");

            ParseAssert.ValueEquals("testxxyyzz", result);
        }
Beispiel #10
0
        public void Many_IEnumerable()
        {
            var parser = (from c in Chars.Any()
                          from x in Parse.Succeed(42)
                          select x).Many();
            var result = parser.Parse("xyz");

            ParseAssert.ValueEquals(new[] { 42, 42, 42 }, result);
        }
Beispiel #11
0
        public void Aggregate_ResultSelector_ReturnsTransformedResult()
        {
            var parser = Chars.Any()
                         .Aggregate(() => "", (acc, c) => acc + c,
                                    x => x + "test");
            var result = parser.Parse("xyz");

            ParseAssert.ValueEquals("xyztest", result);
        }
Beispiel #12
0
        public void Or_FirstErrorConsumesInput_ReturnsFirstError()
        {
            var parserA = from x in Chars.Any()
                          from y in Parse.Fail <char>("test")
                          select y;
            var parserB = Chars.Any();
            var parser  = Combine.Or(parserA, parserB);

            var result = parser.Parse("abc");

            ParseAssert.ErrorEquals("test", result);
        }
Beispiel #13
0
        public void Try_Error_ReturnsErrorAndResetsPosition()
        {
            var parser = Parse.Try(from x in Chars.Any()
                                   from y in Chars.Any()
                                   from f in Parse.Fail <char>("test")
                                   select x);

            IInputReader input            = InputReader.Create("abc");
            Position     expectedPosition = input.GetPosition();

            var result = parser.Parse(input);

            ParseAssert.IsError(result);
            Assert.AreEqual(expectedPosition, input.GetPosition());
        }