From 5b2a39d86183d02438f317e35b55c965fa27220c Mon Sep 17 00:00:00 2001 From: Julian Hyde Date: Tue, 19 May 2009 22:57:22 +0000 Subject: [PATCH] Tests for compound filters git-svn-id: https://olap4j.svn.sourceforge.net/svnroot/olap4j/trunk@241 c6a108a4-781c-0410-a6c6-c2d559e19af0 --- testsrc/org/olap4j/ConnectionTest.java | 58 +++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 2 deletions(-) diff --git a/testsrc/org/olap4j/ConnectionTest.java b/testsrc/org/olap4j/ConnectionTest.java index bea96c8..85dc581 100644 --- a/testsrc/org/olap4j/ConnectionTest.java +++ b/testsrc/org/olap4j/ConnectionTest.java @@ -41,6 +41,8 @@ public class ConnectionTest extends TestCase { private static final boolean IS_JDK_16 = System.getProperty("java.version").startsWith("1.6."); + private static final boolean SINGLE_FILTER = true; + /** * Simple strategy to prevent connection leaks: each test that needs a * connection assigns it to this field, and {@link #tearDown()} closes it @@ -442,8 +444,9 @@ public void testAxes() throws SQLException { CellSet cellSet = olapStatement.executeOlapQuery( "SELECT {[Measures].[Unit Sales]} on 0,\n" - + "{[Store].Children} on 1\n" - + "FROM [Sales]"); + + "{[Store].Children} on 1\n" + + "FROM [Sales]\n" + + "WHERE ([Time].[1997].[Q1], [Gender].[F])"); List axesList = cellSet.getAxes(); assertEquals(2, axesList.size()); final Member rowsMember = @@ -456,6 +459,46 @@ public void testAxes() throws SQLException { assertTrue( columnsMember.getUniqueName(), !(columnsMember instanceof Measure)); + + // filter axis + final CellSetAxis filterAxis = cellSet.getFilterAxis(); + assertEquals(1, filterAxis.getPositionCount()); + final List positions = filterAxis.getPositions(); + assertEquals(1, positions.size()); + final Position pos0 = positions.get(0); + assertEquals(0, pos0.getOrdinal()); + // All members not on other axes are returned on the filter axis. + // REVIEW: Is this desired behavior? + assertEquals(11, pos0.getMembers().size()); + assertEquals( + "[Gender].[All Gender].[F]", + pos0.getMembers().get(8).getUniqueName()); + } + + public void testCompoundSlicer() throws SQLException { + connection = tester.createConnection(); + OlapConnection olapConnection = + tester.getWrapper().unwrap(connection, OlapConnection.class); + OlapStatement statement = olapConnection.createStatement(); + + CellSet cellSet = + statement.executeOlapQuery( + "SELECT {[Measures].[Unit Sales]} on 0,\n" + + "{[Store].Children} on 1\n" + + "FROM [Sales]\n" + + "WHERE [Time].[1997].[Q1] * [Gender].Members"); + List axesList = cellSet.getAxes(); + assertEquals(2, axesList.size()); + final CellSetAxis filterAxis = cellSet.getFilterAxis(); + if (SINGLE_FILTER) { + assertEquals(1, filterAxis.getPositionCount()); + return; + } + assertEquals(3, filterAxis.getPositionCount()); + final List filterPositions = filterAxis.getPositions(); + assertEquals(3, filterPositions.size()); + assertEquals(2, filterPositions.get(2).getMembers().size()); + assertEquals("F", filterPositions.get(2).getMembers().get(1).getName()); } public void testInvalidStatement() throws SQLException { @@ -765,6 +808,10 @@ private void checkCellSetMetaData( if (cellSet != null) { assertEquals( cellSet.getFilterAxis().getAxisMetaData(), axisMetaData); + assertEquals( + 1, cellSet.getFilterAxis().getPositionCount()); + assertEquals( + 1, cellSet.getFilterAxis().getPositions().size()); } } @@ -1781,6 +1828,13 @@ public void testParentChild() throws ClassNotFoundException, SQLException { assertEquals(1, parent.getDepth()); assertEquals(member2.getLevel(), parent.getLevel()); assertEquals(member1, parent); + final CellSetAxis filterAxis = cellSet.getFilterAxis(); + assertEquals(1, filterAxis.getPositionCount()); + final List positions = filterAxis.getPositions(); + assertEquals(1, positions.size()); + assertEquals(0, positions.get(0).getOrdinal()); + // All members not on other axes are returned on the filter axis. + assertEquals(6, positions.get(0).getMembers().size()); } /**