@@ -1524,6 +1524,114 @@ public void testLimitFunction() throws Exception {
1524
1524
+ "Row #4: 3,836\n "
1525
1525
+ "Row #5: 3,064\n " ,
1526
1526
resultsString );
1527
+ }
1528
+ public void testFilter () throws Exception {
1529
+ Cube cube = getFoodmartCube ("Sales" );
1530
+ if (cube == null ) {
1531
+ fail ("Could not find Sales cube" );
1532
+ }
1533
+ // Setup a base query.
1534
+ Query query = new Query ("my query" , cube );
1535
+ QueryDimension productDimension = query .getDimension ("Product" );
1536
+ NamedList <Level > productLevels =
1537
+ productDimension .getDimension ()
1538
+ .getDefaultHierarchy ().getLevels ();
1539
+
1540
+ Level productLevel = productLevels .get ("Product Category" );
1541
+ productDimension .include (productLevel );
1542
+
1543
+ QueryDimension measuresDimension = query .getDimension ("Measures" );
1544
+ measuresDimension .include (nameList ("Measures" , "Sales Count" ));
1545
+
1546
+ query .getAxis (Axis .ROWS ).addDimension (productDimension );
1547
+ query .getAxis (Axis .COLUMNS ).addDimension (measuresDimension );
1548
+
1549
+ query .getAxis (Axis .ROWS ).filter ("InStr(Product.CurrentMember.Name, 'Beverages') > 0" );
1550
+
1551
+ query .validate ();
1552
+
1553
+ // Validate the generated MDX
1554
+ String mdxString = query .getSelect ().toString ();
1555
+ TestContext .assertEqualsVerbose (
1556
+ "SELECT\n "
1557
+ + "{[Measures].[Sales Count]} ON COLUMNS,\n "
1558
+ + "Filter({[Product].[Product].[Product Category].Members}, InStr(Product.CurrentMember.Name, 'Beverages') > 0) ON ROWS\n "
1559
+ + "FROM [Sales]" ,
1560
+ mdxString );
1561
+
1562
+ // Validate the returned results
1563
+ CellSet results = query .execute ();
1564
+ String resultsString = TestContext .toString (results );
1565
+ TestContext .assertEqualsVerbose (
1566
+ "Axis #0:\n "
1567
+ + "{}\n "
1568
+ + "Axis #1:\n "
1569
+ + "{[Measures].[Sales Count]}\n "
1570
+ + "Axis #2:\n "
1571
+ + "{[Product].[Product].[Drink].[Beverages].[Carbonated Beverages]}\n "
1572
+ + "{[Product].[Product].[Drink].[Beverages].[Hot Beverages]}\n "
1573
+ + "{[Product].[Product].[Drink].[Beverages].[Pure Juice Beverages]}\n "
1574
+ + "Row #0: 1,107\n "
1575
+ + "Row #1: 1,391\n "
1576
+ + "Row #2: 1,096\n " ,
1577
+ resultsString );
1578
+
1579
+ query .getAxis (Axis .ROWS ).limit (
1580
+ LimitFunction .TopCount ,
1581
+ new BigDecimal (2 ),
1582
+ "[Measures].[Sales Count]" );
1583
+
1584
+ query .validate ();
1585
+
1586
+ // Validate the generated MDX
1587
+ mdxString = query .getSelect ().toString ();
1588
+ TestContext .assertEqualsVerbose (
1589
+ "SELECT\n "
1590
+ + "{[Measures].[Sales Count]} ON COLUMNS,\n "
1591
+ + "TopCount(Filter({[Product].[Product].[Product Category].Members}, InStr(Product.CurrentMember.Name, 'Beverages') > 0), 2, [Measures].[Sales Count]) ON ROWS\n "
1592
+ + "FROM [Sales]" ,
1593
+ mdxString );
1594
+
1595
+ // Validate the returned results
1596
+ results = query .execute ();
1597
+ resultsString = TestContext .toString (results );
1598
+ TestContext .assertEqualsVerbose (
1599
+ "Axis #0:\n "
1600
+ + "{}\n "
1601
+ + "Axis #1:\n "
1602
+ + "{[Measures].[Sales Count]}\n "
1603
+ + "Axis #2:\n "
1604
+ + "{[Product].[Product].[Drink].[Beverages].[Hot Beverages]}\n "
1605
+ + "{[Product].[Product].[Drink].[Beverages].[Carbonated Beverages]}\n "
1606
+ + "Row #0: 1,391\n "
1607
+ + "Row #1: 1,107\n " ,
1608
+ resultsString );
1609
+
1610
+ query .getAxis (Axis .ROWS ).filter ("InStr(Product.CurrentMember.Name, 'NoMatchingString') > 0" );
1611
+
1612
+ query .validate ();
1613
+
1614
+ // Validate the generated MDX
1615
+ mdxString = query .getSelect ().toString ();
1616
+ TestContext .assertEqualsVerbose (
1617
+ "SELECT\n "
1618
+ + "{[Measures].[Sales Count]} ON COLUMNS,\n "
1619
+ + "TopCount(Filter({[Product].[Product].[Product Category].Members}, InStr(Product.CurrentMember.Name, 'NoMatchingString') > 0), 2, [Measures].[Sales Count]) ON ROWS\n "
1620
+ + "FROM [Sales]" ,
1621
+ mdxString );
1622
+
1623
+ // Validate the returned results
1624
+ results = query .execute ();
1625
+ resultsString = TestContext .toString (results );
1626
+ TestContext .assertEqualsVerbose (
1627
+ "Axis #0:\n "
1628
+ + "{}\n "
1629
+ + "Axis #1:\n "
1630
+ + "{[Measures].[Sales Count]}\n "
1631
+ + "Axis #2:\n " ,
1632
+ resultsString );
1633
+
1634
+
1527
1635
}
1528
1636
public void testHierarchyConsistency () throws Exception {
1529
1637
Cube cube = getFoodmartCube ("Sales" );
0 commit comments