Пример #1
0
        private Expression GetCaseWhenExpression(Expression parent)
        {
            CaseWhenExpression result = new CaseWhenExpression(parent);

            ParseCaseExpression(result);
            return(result);
        }
Пример #2
0
        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);
        }