From daeb88edc8fc4efb5f35c65fee63be2bdd4d3623 Mon Sep 17 00:00:00 2001 From: Julian Hyde Date: Mon, 11 Aug 2008 16:23:27 +0000 Subject: [PATCH] Test case for mondrian bug 2046318, 'olap4j driver should throw OlapException on validate error' git-svn-id: https://olap4j.svn.sourceforge.net/svnroot/olap4j/trunk@106 c6a108a4-781c-0410-a6c6-c2d559e19af0 --- testsrc/org/olap4j/ConnectionTest.java | 36 ++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/testsrc/org/olap4j/ConnectionTest.java b/testsrc/org/olap4j/ConnectionTest.java index a421b73..d90472c 100644 --- a/testsrc/org/olap4j/ConnectionTest.java +++ b/testsrc/org/olap4j/ConnectionTest.java @@ -1702,6 +1702,42 @@ public void testParseQueryWithNoFilter() throws Exception { } } + public void testValidateError() throws Exception { + if (tester.getFlavor() == TestContext.Tester.Flavor.XMLA) { + // This test requires validator support. + return; + } + Class.forName(tester.getDriverClassName()); + connection = tester.createConnection(); + OlapConnection olapConnection = + tester.getWrapper().unwrap(connection, OlapConnection.class); + + final MdxParserFactory parserFactory = + olapConnection.getParserFactory(); + MdxParser mdxParser = + parserFactory.createMdxParser(olapConnection); + MdxValidator mdxValidator = + parserFactory.createMdxValidator(olapConnection); + + SelectNode select = + mdxParser.parseSelect( + "select ([Gender], [Store]) on columns\n," + + "crossjoin([Customers].[City].Members, [Gender].members) on rows\n" + + "from [sales]"); + AxisNode filterAxis = select.getFilterAxis(); + assertNull(filterAxis); + + try { + select = mdxValidator.validateSelect(select); + fail("expected parse error, got " + select); + } catch (OlapException e) { + assertEquals("Validation error", e.getMessage()); + assertTrue( + TestContext.getStackTrace(e).contains( + "Dimension '[Gender]' appears in more than one independent axis.")); + } + } + // TODO: test for HierarchyType // TODO: test for DimensionType // TODO: test for LevelType