mondrian.rolap
Class FilterTest

java.lang.Object
  extended by junit.framework.Assert
      extended by junit.framework.TestCase
          extended by mondrian.test.FoodMartTestCase
              extended by mondrian.rolap.BatchTestCase
                  extended by mondrian.rolap.FilterTest
All Implemented Interfaces:
junit.framework.Test

public class FilterTest
extends BatchTestCase

Tests for Filter and native Filters.

Since:
April 28, 2009
Author:
Rushan Chen

Nested Class Summary
 
Nested classes/interfaces inherited from class mondrian.rolap.BatchTestCase
BatchTestCase.Bomb, BatchTestCase.CellRequestConstraint, BatchTestCase.TestCase, BatchTestCase.TestListener
 
Field Summary
 
Fields inherited from class mondrian.rolap.BatchTestCase
cubeNameSales, fieldGender, fieldProductDepartment, fieldProductFamily, fieldValueProductDepartment, fieldValuesGender, fieldValuesProductFamily, fieldValuesYear, fieldYear, measureUnitSales, tableCustomer, tableProductClass, tableTime
 
Fields inherited from class mondrian.test.FoodMartTestCase
propSaver
 
Constructor Summary
FilterTest()
           
FilterTest(String name)
           
 
Method Summary
protected  void setUp()
           
 void testBug779()
          Tests the bug MONDRIAN-779.
 void testBugMondrian706()
          Testcase for bug MONDRIAN-706, "SQL using hierarchy attribute 'Column Name' instead of 'Column' in the filter".
 void testCachedNativeSetUsingFilters()
           
 void testCmNativeFilter()
          Executes a Filter() whose condition contains a calculated member.
 void testInFilterAND()
           
 void testInFilterNonNative()
          Here the filter is above (rather than as inputs to) the NECJ.
 void testInFilterSimple()
           
 void testIsFilterSimple()
           
 void testMixedInIsFilters()
           
 void testNativeFilter()
           
 void testNativeFilterNonEmpty()
          Verify that filter with Not IsEmpty(storedMeasure) can be natively evaluated.
 void testNativeFilterWithNullMeasure()
           
 void testNonNativeFilterWithCalcMember()
           
 void testNonNativeFilterWithNullMeasure()
           
 void testNotInFilterExcludeNullMember()
          Test that if Null member is explicitly excluded, then the native filter SQL should filter out null members.
 void testNotInFilterKeepNullMember()
          Test that if Null member is not explicitly excluded, then the native filter SQL should not filter out null members.
 void testNotInFilterSimple()
           
 void testNotInMultiLevelMemberConstraintMixedNullNonNullParent()
          Test that null members are included when the filter explicitly excludes certain members that contain nulls.
 void testNotInMultiLevelMemberConstraintNonNullParent()
          Test that null members are included when the filter excludes members that contain multiple levels, but none being null.
 void testNotInMultiLevelMemberConstraintNonNullSameParent()
          Test that null members are included when the filter excludes members that contain multiple levels, but none being null.
 void testNotInMultiLevelMemberConstraintSingleNullParent()
          Test that null members are included when the filter explicitly excludes a single member that has a null.
 void testNotIsFilterSimple()
           
 void testTopCountOverInFilter()
           
 
Methods inherited from class mondrian.rolap.BatchTestCase
assertNative, assertNoQuerySql, assertNotNative, assertQuerySql, assertQuerySql, assertQuerySql, assertQuerySqlOrNot, assertRequestSql, assertRequestSql, checkNative, checkNative, checkNative, checkNotNative, checkNotNative, checkNotNative, createBatch, createBatch, createRequest, createRequest, createRequest, createRequest, dialectize, executeQuery, getCube, getFoodMartConnection, getGroupingSet, getMeasure, getRegistry, makeConstraintCountryState, makeConstraintProductFamilyDepartment, makeConstraintYearQuarterMonth
 
Methods inherited from class mondrian.test.FoodMartTestCase
allMember, assertAxisReturns, assertAxisThrows, assertBooleanExprReturns, assertExprReturns, assertExprThrows, assertQueriesReturnSimilarResults, assertQueryReturns, assertQueryThrows, assertSize, cubeByName, execute, executeExpr, executeQuery, executeSingletonAxis, genderMembersIncludingAll, getConnection, getDimensionWithName, getTestContext, isDefaultNullMemberRepresentation, isGroupingSetsSupported, member, productMembersPotScrubbersPotsAndPans, storeMembersCAAndOR, storeMembersUsaAndCanada, tearDown, warehouseMembersCanadaMexicoUsa
 
Methods inherited from class junit.framework.TestCase
countTestCases, createResult, getName, run, run, runBare, runTest, setName, toString
 
Methods inherited from class junit.framework.Assert
assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, fail, fail
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

FilterTest

public FilterTest()

FilterTest

public FilterTest(String name)
Method Detail

setUp

protected void setUp()
              throws Exception
Overrides:
setUp in class junit.framework.TestCase
Throws:
Exception

testInFilterSimple

public void testInFilterSimple()
                        throws Exception
Throws:
Exception

testNotInFilterSimple

public void testNotInFilterSimple()
                           throws Exception
Throws:
Exception

testInFilterAND

public void testInFilterAND()
                     throws Exception
Throws:
Exception

testIsFilterSimple

public void testIsFilterSimple()
                        throws Exception
Throws:
Exception

testNotIsFilterSimple

public void testNotIsFilterSimple()
                           throws Exception
Throws:
Exception

testMixedInIsFilters

public void testMixedInIsFilters()
                          throws Exception
Throws:
Exception

testInFilterNonNative

public void testInFilterNonNative()
                           throws Exception
Here the filter is above (rather than as inputs to) the NECJ. These types of filters are currently not natively evaluated.

To expand on this case, RolapNativeFilter needs to be improved so it knows how to represent the dimension filter constraint. Currently the FilterConstraint is only used for filters on measures.

Throws:
Exception

testTopCountOverInFilter

public void testTopCountOverInFilter()
                              throws Exception
Throws:
Exception

testNotInFilterKeepNullMember

public void testNotInFilterKeepNullMember()
                                   throws Exception
Test that if Null member is not explicitly excluded, then the native filter SQL should not filter out null members.

Throws:
Exception

testNotInFilterExcludeNullMember

public void testNotInFilterExcludeNullMember()
                                      throws Exception
Test that if Null member is explicitly excluded, then the native filter SQL should filter out null members.

Throws:
Exception

testNotInMultiLevelMemberConstraintNonNullParent

public void testNotInMultiLevelMemberConstraintNonNullParent()
Test that null members are included when the filter excludes members that contain multiple levels, but none being null.


testNotInMultiLevelMemberConstraintNonNullSameParent

public void testNotInMultiLevelMemberConstraintNonNullSameParent()
Test that null members are included when the filter excludes members that contain multiple levels, but none being null. The members have the same parent.


testNotInMultiLevelMemberConstraintMixedNullNonNullParent

public void testNotInMultiLevelMemberConstraintMixedNullNonNullParent()
Test that null members are included when the filter explicitly excludes certain members that contain nulls. The members span multiple levels.


testNotInMultiLevelMemberConstraintSingleNullParent

public void testNotInMultiLevelMemberConstraintSingleNullParent()
Test that null members are included when the filter explicitly excludes a single member that has a null. The members span multiple levels.


testCachedNativeSetUsingFilters

public void testCachedNativeSetUsingFilters()
                                     throws Exception
Throws:
Exception

testNativeFilter

public void testNativeFilter()

testCmNativeFilter

public void testCmNativeFilter()
Executes a Filter() whose condition contains a calculated member.


testNonNativeFilterWithNullMeasure

public void testNonNativeFilterWithNullMeasure()

testNativeFilterWithNullMeasure

public void testNativeFilterWithNullMeasure()

testNonNativeFilterWithCalcMember

public void testNonNativeFilterWithCalcMember()

testNativeFilterNonEmpty

public void testNativeFilterNonEmpty()
Verify that filter with Not IsEmpty(storedMeasure) can be natively evaluated.


testBugMondrian706

public void testBugMondrian706()
Testcase for bug MONDRIAN-706, "SQL using hierarchy attribute 'Column Name' instead of 'Column' in the filter".


testBug779

public void testBug779()
Tests the bug MONDRIAN-779. The MemberListCrossJoinArg was not considering the 'exclude' attribute in its hash code. This resulted in two filters being chained within two different named sets to register a cache element with the same key, even though they were the different because of the added "NOT" keyword.


Get Mondrian at SourceForge.net. Fast, secure and free Open Source software downloads