private Expression GetCaseWhenExpression(Expression parent) { CaseWhenExpression result = new CaseWhenExpression(parent); ParseCaseExpression(result); return(result); }
public void Can_Read_Case_When_Expression() { // setup var tokenizer = NewTokenizer(@" CASE WHEN A.Field1 < 1 THEN 'Y' WHEN A.Field2 >= 2 + A.Field3 THEN 15 / (A.Field4 * 2) ELSE 'U' END " ); tokenizer.ReadNextToken(); ExpressionParser parser = new ExpressionParser(tokenizer); // exercise Expression expression = parser.Execute(); // verify Assert.IsNotNull(expression); Assert.IsTrue(expression is CaseWhenExpression); CaseWhenExpression caseWhen = (CaseWhenExpression)expression; Assert.AreEqual(2, caseWhen.Cases.Count); Assert.AreEqual("A.Field1 < 1", caseWhen.Cases[0].When.Value); Assert.AreEqual("'Y'", caseWhen.Cases[0].Then.Value); Assert.AreEqual("A.Field2 >= 2 + A.Field3", caseWhen.Cases[1].When.Value); Assert.AreEqual("15 / (A.Field4 * 2)", caseWhen.Cases[1].Then.Value); Assert.AreEqual("'U'", caseWhen.Else.Value); }