コード例 #1
0
        public void Can_Read_Case_Switch_Expression()
        {
            // setup
            var tokenizer = NewTokenizer("CASE A.Field1 WHEN 1 THEN 'Y' WHEN 2 THEN 'N' ELSE 'U' END");

            tokenizer.ReadNextToken();

            ExpressionParser parser = new ExpressionParser(tokenizer);

            // exercise
            Expression expression = parser.Execute();

            // verify
            Assert.IsNotNull(expression);
            Assert.IsTrue(expression is CaseSwitchExpression);
            CaseSwitchExpression caseSwitch = (CaseSwitchExpression)expression;

            Assert.AreEqual("A.Field1", caseSwitch.Switch.Value);
            Assert.AreEqual(2, caseSwitch.Cases.Count);

            Assert.AreEqual("1", caseSwitch.Cases[0].When.Value);
            Assert.AreEqual("'Y'", caseSwitch.Cases[0].Then.Value);

            Assert.AreEqual("2", caseSwitch.Cases[1].When.Value);
            Assert.AreEqual("'N'", caseSwitch.Cases[1].Then.Value);

            Assert.AreEqual("'U'", caseSwitch.Else.Value);
        }
コード例 #2
0
ファイル: ExpressionParser.cs プロジェクト: dnnancy/sqlformat
        private Expression GetCaseSwitchExpression(Expression parent)
        {
            CaseSwitchExpression result = new CaseSwitchExpression(parent);

            result.Switch = ReadCriteriaList(result);
            ParseCaseExpression(result);
            return(result);
        }