public void ParseQuery_WithFunctionsAndExpressions_ReturnsParsedQuery()
{
//ARRANGE
const string queryString = "SELECT \n\r" +
"NON EMPTY { [Dim Hierarchy1].[Dim1], [Dim Hierarchy1].[Dim2], [Dim Hierarchy1].[Dim3] } ON Columns, " +
"NON EMPTY { [Dim Hierarchy2].[Dim1], ORDER([Dim Hierarchy2].[Dim2].Children, [Dim Hierarchy2].[Dim2].CurrentMember.MEMBER_CAPTION, asc) } ON Rows " +
"FROM ( " +
"SELECT (Filter([Dim Hierarchy2].[Dim1].MEMBERS, NOT [Dim Hierarchy2].[Dim1].CurrentMember.MEMBER_CAPTION = \"V\")) ON 0 FROM [Cube] " +
")";
const string expectedString = "SELECT " +
"NON EMPTY { [Dim Hierarchy1].[Dim1], [Dim Hierarchy1].[Dim2], [Dim Hierarchy1].[Dim3] } ON Columns, " +
"NON EMPTY { [Dim Hierarchy2].[Dim1], ORDER([Dim Hierarchy2].[Dim2].Children, [Dim Hierarchy2].[Dim2].CurrentMember.MEMBER_CAPTION, asc) } ON Rows " +
"FROM ( " +
"SELECT { ( Filter([Dim Hierarchy2].[Dim1].MEMBERS, (NOT ([Dim Hierarchy2].[Dim1].CurrentMember.MEMBER_CAPTION = \"V\"))) ) } ON Columns FROM [Cube] " +
")";
//ACT
var query = _parserSut.ParseQuery(queryString);
//ASSERT
Assert.That(query, Is.Not.Null);
Assert.That(query.ToString(), Is.EqualTo(expectedString));
}