public void ParseQuery_WithInnerQuery_ReturnsParsedQuery()
{
//ARRANGE
const string queryString = "SELECT " +
"NON EMPTY { [Measures].[Measure] } ON Columns " +
"FROM ( " +
"SELECT " +
"NON EMPTY { [Dim Hierarchy].[Dim].&[1], [Dim Hierarchy].[Dim].&[2] } ON Columns " +
"FROM [Cube] " +
") WHERE ( " +
"{ [Dim1 Hierarchy].[Dim1].[Dim1 Key].&[1], [Dim1 Hierarchy].[Dim1].[Dim1 Key].&[2] }, " +
"{ [Dim2 Hierarchy].[Dim2].[Dim2 Key].&[1], [Dim2 Hierarchy].[Dim2].[Dim2 Key].&[2] } " +
")";
const string expectedString = "SELECT " +
"NON EMPTY { [Measures].[Measure] } ON Columns " +
"FROM ( " +
"SELECT " +
"NON EMPTY { [Dim Hierarchy].[Dim].&[1], [Dim Hierarchy].[Dim].&[2] } ON Columns " +
"FROM [Cube] " +
") WHERE { ( { ( " +
"{ [Dim1 Hierarchy].[Dim1].[Dim1 Key].&[1], [Dim1 Hierarchy].[Dim1].[Dim1 Key].&[2] }, " +
"{ [Dim2 Hierarchy].[Dim2].[Dim2 Key].&[1], [Dim2 Hierarchy].[Dim2].[Dim2 Key].&[2] } " +
") } ) }";
//ACT
var query = _parserSut.ParseQuery(queryString);
//ASSERT
Assert.That(query, Is.Not.Null);
Assert.That(query.ToString(), Is.EqualTo(expectedString));
}