예제 #1
0
        public void ParseAxisParameter_WithSubsequentIdentifiers_SucceedsReturnsAxisParameter()
        {
            //ARRANGE
            const string queryString = "[Aaa].[Bbb].[Ccc].FUNCTION(1, 2).FUNCTION";

            const string expectedString = "[Aaa].[Bbb].[Ccc].FUNCTION(1, 2).FUNCTION";

            //ACT
            MdxExpressionBase expression;
            bool isSucceeded = MdxParser.TryParseMember(_lexer.Tokenize(queryString).GetStatedTwoWayEnumerator(), out expression);

            //ASSERT
            Assert.That(isSucceeded, Is.True);
            Assert.That(expression, Is.InstanceOf <MdxMember>());
            Assert.That(expression.ToString(), Is.EqualTo(expectedString));
        }
예제 #2
0
        public void AppendQuery_OneWhere_ExtendedWhereClause()
        {
            const string initialQueryString = "SELECT { [MyMember] } ON Columns " +
                                              "FROM [Cube] " +
                                              "WHERE { ( { ( [Test].[Test Name].&[test] ) }) }";

            const string expectedQueryString = "SELECT { [MyMember] } ON Columns " +
                                               "FROM [Cube] " +
                                               "WHERE { ( { ( { ( [Test].[Test Name].&[test] ) } ) }, { [Company].[Company Name].&[test] } ) }";

            var mdxQuery = new MdxParser().ParseQuery(initialQueryString);

            mdxQuery.Where(Mdx.Tuple().With(Mdx.Member("Company", "Company Name").WithValue("test")));

            mdxQuery.ToString().Should().Be(expectedQueryString);
        }
예제 #3
0
        public void ParseCube_WithParameters_SecceedsAndReturnsCube()
        {
            //ARRANGE
            const string queryString = "[Aaa].[Bbb].[Ccc]";

            const string expectedString = "[Aaa].[Bbb].[Ccc]";

            //ACT
            MdxExpressionBase expression;
            bool isSucceeded = MdxParser.TryParseCube(_lexer.Tokenize(queryString).GetStatedTwoWayEnumerator(), out expression);

            //ASSERT
            Assert.That(isSucceeded, Is.True);
            Assert.That(expression, Is.InstanceOf <MdxCube>());
            Assert.That(expression.ToString(), Is.EqualTo(expectedString));
        }
예제 #4
0
        public void ParseAxis_WithParameters_SecceedsAndReturnsAxis()
        {
            //ARRANGE
            const string queryString = "NON EMPTY { [Aaa].[Bbb].[Ccc].FUNCTION(1, 2).FUNCTION, [Aaa] } ON Columns";

            const string expectedString = "NON EMPTY { [Aaa].[Bbb].[Ccc].FUNCTION(1, 2).FUNCTION, [Aaa] } ON Columns";

            //ACT
            MdxExpressionBase expression;
            bool isSucceeded = MdxParser.TryParseAxis(_lexer.Tokenize(queryString).GetStatedTwoWayEnumerator(), out expression);

            //ASSERT
            Assert.That(isSucceeded, Is.True);
            Assert.That(expression, Is.InstanceOf <MdxAxis>());
            Assert.That(expression.ToString(), Is.EqualTo(expectedString));
        }
예제 #5
0
        public void ParseAxis_WithParameterAndDimensionProperties_SecceedsAndReturnsAxis()
        {
            //ARRANGE
            const string queryString = "NON EMPTY { [Aaa] } DIMENSION PROPERTIES CATALOG_NAME, CUSTOM_ROLLUP ON Columns";

            const string expectedString = "NON EMPTY { [Aaa] } DIMENSION PROPERTIES CATALOG_NAME, CUSTOM_ROLLUP ON Columns";

            //ACT
            MdxExpressionBase expression;
            bool isSucceeded = MdxParser.TryParseAxis(_lexer.Tokenize(queryString).GetStatedTwoWayEnumerator(), out expression);

            //ASSERT
            Assert.That(isSucceeded, Is.True);
            Assert.That(expression, Is.InstanceOf <MdxAxis>());
            Assert.That(expression.ToString(), Is.EqualTo(expectedString));
        }
예제 #6
0
        public void ParseRange_WithTwoMembers_SuceeedsAndReturnsRange()
        {
            //ARRANGE
            const string queryString = "[A].&[1]:[A].&[2]";

            const string expectedString = "[A].&[1]:[A].&[2]";

            //ACT
            MdxExpressionBase expression;
            bool isSucceeded = MdxParser.TryParseRange(_lexer.Tokenize(queryString).GetStatedTwoWayEnumerator(), out expression);

            //ASSERT
            Assert.That(isSucceeded, Is.True);
            Assert.That(expression, Is.InstanceOf <MdxRange>());
            Assert.That(expression.ToString(), Is.EqualTo(expectedString));
        }
예제 #7
0
        public void ParseNavigationFunction_WithSubsequentFunctions_SuccedsAndReturnsFunction()
        {
            //ARRANGE
            const string queryString = "FUNCTION(1, 2)";

            const string expectedString = "FUNCTION(1, 2)";

            //ACT
            MdxExpressionBase expression;
            bool isSucceeded = MdxParser.TryParseNavigationFunction(_lexer.Tokenize(queryString).GetStatedTwoWayEnumerator(), out expression);

            //ASSERT
            Assert.That(isSucceeded, Is.True);
            Assert.That(expression, Is.InstanceOf <MdxNavigationFunction>());
            Assert.That(expression.ToString(), Is.EqualTo(expectedString));
        }
예제 #8
0
        public void ParseFunction_WithSingleNumberAndTextExpressionParameter_SuceeedsAndReturnsFunction()
        {
            //ARRANGE
            const string queryString = "MYFUNCTION.Func(1 + 'asd')";

            const string expectedString = "MYFUNCTION.Func(1 + 'asd')";

            //ACT
            MdxExpressionBase expression;
            bool isSucceeded = MdxParser.TryParseFunction(_lexer.Tokenize(queryString).GetStatedTwoWayEnumerator(), out expression);

            //ASSERT
            Assert.That(isSucceeded, Is.True);
            Assert.That(expression, Is.InstanceOf <MdxFunction>());
            Assert.That(expression.ToString(), Is.EqualTo(expectedString));
        }
예제 #9
0
        public void ParseExpression_WithSimpleExpression_SuceeedsAndReturnsExpression()
        {
            //ARRANGE
            const string queryString = "TRUE AND NOT FALSE";

            const string expectedString = "TRUE AND (NOT (FALSE))";

            //ACT
            MdxExpressionBase expression;
            bool isSucceeded = MdxParser.TryParseExpression(_lexer.Tokenize(queryString).GetStatedTwoWayEnumerator(), out expression);

            //ASSERT
            Assert.That(isSucceeded, Is.True);
            Assert.That(expression, Is.InstanceOf <MdxExpression>());
            Assert.That(expression.ToString(), Is.EqualTo(expectedString));
        }
예제 #10
0
        public void ParseMember_WithFunctionAfterValueMember_SuceeedsAndReturnsValueMemberWithFunction()
        {
            //ARRANGE
            const string queryString = "[Dim1 Hierarchy].[Dim1].[Dim1 Key].&[1].AllMembers";

            const string expectedString = "[Dim1 Hierarchy].[Dim1].[Dim1 Key].&[1].AllMembers";

            //ACT
            MdxExpressionBase expression;
            bool isSucceeded = MdxParser.TryParseMember(_lexer.Tokenize(queryString).GetStatedTwoWayEnumerator(), out expression);

            //ASSERT
            Assert.That(isSucceeded, Is.True);
            Assert.That(expression, Is.InstanceOf <MdxMember>());
            Assert.That(expression.ToString(), Is.EqualTo(expectedString));
        }
예제 #11
0
        public void ChangeQuery_OneAxisSlicer_RemoveSetMember()
        {
            const string initialQueryString = "SELECT { [MyMember], [MemberToRemove] } ON Columns " +
                                              "FROM [Cube]";

            const string expectedQueryString = "SELECT { [MyMember] } ON Columns " +
                                               "FROM [Cube]";

            var mdxQuery = new MdxParser().ParseQuery(initialQueryString);

            var tuple          = mdxQuery.Axes.Select(a => a.AxisSlicer).FirstOrDefault();
            var memberToRemove = tuple.GetMember("MemberToRemove");

            tuple.Without(memberToRemove);

            mdxQuery.ToString().Should().Be(expectedQueryString);
        }
예제 #12
0
        public void AppendQuery_OneWhere_ExtendedWhereClause()
        {
            //ARRANGE
            const string initialQueryString = "SELECT { [MyMember] } ON Columns " +
                                   "FROM [Cube] " +
                                   "WHERE { ( { ( [Test].[Test Name].&[test] ) }) }";

            const string expectedQueryString = "SELECT { [MyMember] } ON Columns " +
                                               "FROM [Cube] " +
                                               "WHERE { ( { ( { ( [Test].[Test Name].&[test] ) } ) }, { [Company].[Company Name].&[test] } ) }";

            //ACT
            var mdxQuery = new MdxParser().ParseQuery(initialQueryString);
            mdxQuery.Where(Mdx.Tuple().With(Mdx.Member("Company", "Company Name").WithValue("test")));

            //ASSERT
            Assert.That(mdxQuery.ToString(), Is.EqualTo(expectedQueryString));
        }
예제 #13
0
        public void AppendQuery_OneWhere_ExtendedWhereClause()
        {
            //ARRANGE
            const string initialQueryString = "SELECT { [MyMember] } ON Columns " +
                                              "FROM [Cube] " +
                                              "WHERE { ( { ( [Test].[Test Name].&[test] ) }) }";


            const string expectedQueryString = "SELECT { [MyMember] } ON Columns " +
                                               "FROM [Cube] " +
                                               "WHERE { ( { ( { ( [Test].[Test Name].&[test] ) } ) }, { [Company].[Company Name].&[test] } ) }";

            //ACT
            var mdxQuery = new MdxParser().ParseQuery(initialQueryString);

            mdxQuery.Where(Mdx.Tuple().With(Mdx.Member("Company", "Company Name").WithValue("test")));

            //ASSERT
            Assert.That(mdxQuery.ToString(), Is.EqualTo(expectedQueryString));
        }
예제 #14
0
        public void ChangeQuery_OneAxisSlicer_RemoveSetMember()
        {
            //ARRANGE
            const string initialQueryString = "SELECT { [MyMember], [MemberToRemove] } ON Columns " +
                                   "FROM [Cube]";

            const string expectedQueryString = "SELECT { [MyMember] } ON Columns " +
                                   "FROM [Cube]";

            //ACT
            var mdxQuery = new MdxParser().ParseQuery(initialQueryString);

            var tuple = mdxQuery.Axes.Select(a => a.AxisSlicer).FirstOrDefault();
            if (tuple != null)
            {
                var memberToRemove = tuple.GetMember("MemberToRemove");
                tuple.Without(memberToRemove);
            }

            //ASSERT
            Assert.That(mdxQuery.ToString(), Is.EqualTo(expectedQueryString));
        }
예제 #15
0
        public void ChangeQuery_OneAxisSlicer_RemoveSetMember()
        {
            //ARRANGE
            const string initialQueryString = "SELECT { [MyMember], [MemberToRemove] } ON Columns " +
                                              "FROM [Cube]";


            const string expectedQueryString = "SELECT { [MyMember] } ON Columns " +
                                               "FROM [Cube]";

            //ACT
            var mdxQuery = new MdxParser().ParseQuery(initialQueryString);

            var tuple = mdxQuery.Axes.Select(a => a.AxisSlicer).FirstOrDefault();

            if (tuple != null)
            {
                var memberToRemove = tuple.GetMember("MemberToRemove");
                tuple.Without(memberToRemove);
            }

            //ASSERT
            Assert.That(mdxQuery.ToString(), Is.EqualTo(expectedQueryString));
        }
예제 #16
0
 public void TestFixtureSetUp()
 {
     _parserSut = new MdxParser();
 }
예제 #17
0
 public void TestFixtureSetUp()
 {
     _parserSut = new MdxParser();
 }