Beispiel #1
0
        public void Parse(ExpressionParserHelper parseHelper)
        {
            Token token = parseHelper.Current;

            if (token.Contents.Equals(AdditionalToken.Token))
            {
                if (!parseHelper.AnyOnStack(ParsedTypes))
                {
                    throw ParseException.ExpectedToken(DistinctToken.Token, token.Contents, $"TernaryExpressionParser<{typeof(T).Name}>").Decorate(token);
                }
                parseHelper.Expect(AdditionalToken.Token);
                parseHelper.Reduce(typeof(T));
                return;
            }
            if (ShouldReduce(parseHelper))
            {
                parseHelper.Reduce(typeof(T));
            }
            Expression first = parseHelper.Pop();

            parseHelper.Expect(DistinctToken.Token);
            TernaryExpression subResult = Create(first);

            subResult.Token      = token;
            subResult.FirstSign  = DistinctToken.Token;
            subResult.SecondSign = AdditionalToken.Token;
            parseHelper.Push(subResult);
            parseHelper.ParseExpression();
        }
 public void TestParseAndEvaluationOfUnClosedTag()
 {
     try
     {
         Base().Parse("<c:remove var=\"text\">x");
         Assert.Fail("Expected exception");
     }
     catch (ParseException Pe)
     {
         Assert.That(Pe.MessageWithOutContext, Is.EqualTo(ParseException.ExpectedToken("<", "x").Message));
     }
 }
 public void TestParseAndEvaluationOfNonFreeTagWithIllegalCharacters()
 {
     try
     {
         Base().Parse("<c:remove var=\"text\">x</c:remove>");
         Assert.Fail("Expected exception");
     }
     catch (ParseException Pe)
     {
         Assert.That(Pe.MessageWithOutContext, Is.EqualTo(ParseException.ExpectedToken("<", "x").Message));
     }
 }
 public void TestParseAndEvaluationOfNotAllowedFreeText()
 {
     try
     {
         Base().Parse(
             "<c:choose>Slip<c:when test=\"true\">a</c:when><c:when test=\"true\">b</c:when><c:otherwise>c</c:otherwise></c:choose>");
         Assert.Fail("Expected exception");
     }
     catch (ParseException Pe)
     {
         Assert.That(Pe.MessageWithOutContext, Is.EqualTo(ParseException.ExpectedToken("<", "Slip").Message));
     }
 }
 public void TestParseAndEvaluationOfChooseWhenWithNonWhiteSpace()
 {
     try
     {
         Base().Parse(
             "<c:choose>X<c:when test=\"true\">a</c:when>\t<c:otherwise>b</c:otherwise>\r</c:choose>");
         Assert.Fail("Expected exception");
     }
     catch (ParseException Pe)
     {
         Assert.That(Pe.MessageWithOutContext, Is.EqualTo(ParseException.ExpectedToken("<", "X").Message));
     }
 }
Beispiel #6
0
        public void ParseFailureOpenTagsAtEndOfString()
        {
            const string TEMPLATE = "abcd${Text";
            var          model    = new TestModel();

            model.Text = "12345";
            try
            {
                new Formatter(TEMPLATE).Parse();
            }
            catch (ParseException Fe)
            {
                Assert.That(Fe.MessageWithOutContext, Is.EqualTo(ParseException.ExpectedToken("}", "Text").Message));
            }
        }
Beispiel #7
0
        public void ParseFailureMissingCloseTagShouldThrowParseException3()
        {
            const string TEMPLATE = "abcd{Text}slk";
            var          model    = new TestModel();

            model.Text = "12345";
            try
            {
                new Formatter(TEMPLATE).Parse();
            }
            catch (ParseException Fe)
            {
                Assert.That(Fe.Message, Is.EqualTo(ParseException.ExpectedToken("$").Message));
            }
        }