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)); } }
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)); } }
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)); } }