mondrian.test
Class Ssas2005CompatibilityTest

java.lang.Object
  extended by junit.framework.Assert
      extended by junit.framework.TestCase
          extended by mondrian.test.FoodMartTestCase
              extended by mondrian.test.Ssas2005CompatibilityTest
All Implemented Interfaces:
junit.framework.Test
Direct Known Subclasses:
Ssas2005CompatibilityTest.NewBehaviorTest, Ssas2005CompatibilityTest.OldBehaviorTest

public class Ssas2005CompatibilityTest
extends FoodMartTestCase

Unit tests that check compatibility with Microsoft SQL Server Analysis Services 2005.

This suite contains a MDX collection of queries that were run on SSAS. The queries cover a variety of issues, including multiple hierarchies in a dimension, attribute hierarchies, and name resolution. Expect to find tests for these areas in dedicated tests also.

There are tests for features which are unimplemented or where mondrian's behavior differs from SSAS2005. These tests will appear in this file disabled or with (clearly marked) incorrect results.

Since:
December 15, 2008
Author:
jhyde

Nested Class Summary
static class Ssas2005CompatibilityTest.NewBehaviorTest
          Subclass of Ssas2005CompatibilityTest that runs with MondrianProperties.SsasCompatibleNaming=true.
static class Ssas2005CompatibilityTest.OldBehaviorTest
          Subclass of Ssas2005CompatibilityTest that runs with MondrianProperties.SsasCompatibleNaming=false.
 
Nested classes/interfaces inherited from class mondrian.test.FoodMartTestCase
FoodMartTestCase.QueryAndResult
 
Field Summary
static boolean ATTR_HIER_IMPL
          Whether attribute hierarchies are implemented.
static boolean AXIS_IMPL
          Whether the AXIS function has been are implemented.
 
Fields inherited from class mondrian.test.FoodMartTestCase
propSaver
 
Constructor Summary
Ssas2005CompatibilityTest(String name)
          Creates a Ssas2005CompatibilityTest.
 
Method Summary
 TestContext getTestContext()
          Returns the test context.
 void testAttrHierarchyAllMemberChildren()
           
 void testAttrHierarchyMemberChildren()
           
 void testAttrHierarchyMemberLevel()
           
 void testAttrHierarchyMemberParent()
           
 void testAttrHierarchyUniqueName()
           
 void testAttributeHierarchyUsedTwiceInCrossjoin()
           
 void testAxesLabelsOutOfSequence()
           
 void testAxesOutOfOrder()
           
 void testAxisAppliedToExpr()
           
 void testAxisFunction()
           
 void testAxisFunctionReferencesLaterAxis()
           
 void testAxisFunctionReferencesPreviousAxis()
           
 void testAxisFunctionReferencesSameAxisFails()
           
 void testAxisFunctionReferencesSameAxisInlineFails()
           
 void testAxisFunctionReferencesSameAxisZeroFails()
           
 void testAxisLabelsNotContiguousFails()
           
 void testCalcMemberAmbiguousHierarchy()
          Tests that it is an error to define a calc member in a dimension with multiple hierarchies without specifying hierarchy.
 void testCanHaveMemberWithSameNameAsLevel()
          Tests the ambiguity between a level and a member of the same name, both in SSAS compatible mode and in regular mode.
 void testCannotDistinguishMdxFromSql()
           
 void testCompoundKey()
           
 void testCompoundKeyAll()
           
 void testCompoundKeyNull()
           
 void testCompoundKeyParent()
           
 void testCompoundKeyString()
           
 void testCompoundKeyStringBad()
           
 void testCompoundKeySyntaxError()
           
 void testCrossjoinMember()
           
 void testDifferentHierarchiesFromSameDimensionInCrossjoin()
           
 void testDifferentHierarchiesFromSameDimensionOnAxes()
           
 void testDimensionAsScalarExpression()
           
 void testDimensionDotDimensionInBrackets()
           
 void testDimensionDotHierarchyAmbiguous()
           
 void testDimensionDotHierarchyDotLevel()
           
 void testDimensionDotHierarchyDotLevelDotMembers()
           
 void testDimensionDotHierarchyDotLevelMembers()
           
 void testDimensionDotHierarchyDotNonExistentLevel()
           
 void testDimensionDotHierarchyInBrackets()
           
 void testDimensionDotHierarchyOnAxis()
           
 void testDimensionDotHierarchySameNameInBrackets()
          Test case for bug 2688790, "Hierarchy Naming Compatibility issue".
 void testDimensionDotInvalidHierarchyInBrackets()
           
 void testDimensionDotLevelDotHierarchyInBrackets()
           
 void testDimensionHierarchyKey()
           
 void testDimensionMemberRequiresHierarchyQualification()
           
 void testDimensionMembersOnSingleHierarchyDimension()
           
 void testDimensionMembersRequiresHierarchyQualification()
           
 void testDimensionOnAxis()
           
 void testDimensionWithMultipleHierarchiesDotParent()
           
 void testDupHierarchyOnAxes()
           
 void testFoo31()
           
 void testFoo32()
           
 void testFoo50()
           
 void testFoo56()
           
 void testHierarchiesFromSameDimensionOnAxes()
           
 void testHierarchyLevelsFunction()
           
 void testHierarchyUsedTwiceInCrossjoin()
           
 void testImplicitCurrentMemberRequiresHierarchyQualification()
           
 void testKeyNonExistent()
           
 void testLotsOfAxes()
           
 void testMemberAddressedByCompoundKey()
           
 void testMemberAddressedByLevelAndCompoundKey()
           
 void testMemberAddressedByLevelAndKey()
           
 void testMemberAddressedByLevelAndName()
           
 void testMemberAddressedByNonUniqueName()
           
 void testMemberAddressedByPartialCompoundKey()
           
 void testMemberIdentifiedByDimensionAndKey()
           
 void testMemberNameSortCaseSensitivity()
           
 void testMultipleHierarchyRequiresQualification()
           
 void testNameAfterCompositeKey()
          Tests a member where a name segment [Store 14] occurs after a composite key segment &[San Francisco]&CA.
 void testNameAfterKey()
          Tests a member where a name segments [San Francisco].[Store 14] occur after a key segment &&CA.
 void testNamingAttrVsLevel()
           
 void testNamingDimensionAttr()
           
 void testNamingDimensionAttrVsLevel()
           
 void testNamingDimensionDotLevel()
           
 void testNamingDimensionDotLevel2()
           
 void testNamingDimensionDotLevelNotUnique()
           
 void testOnAxesFails()
           
 void testOnExpression()
           
 void testOnFractionFails()
           
 void testQuoteInStringInQuotedFormula()
           
 void testQuoteInStringInUnquotedFormula()
           
 void testRootMembers()
          SSAS can resolve root members of a hierarchy even if not qualified by hierarchy, and even if the dimension has more than one hierarchy.
 void testUniqueName()
           
 void testUnqualifiedHierarchy()
           
 void testUnqualifiedHierarchyCurrentMember()
           
 void testUnqualifiedLevel()
           
 void testYtd()
          Tests that time functions such as Ytd behave correctly when there are multiple time hierarchies.
 
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, isDefaultNullMemberRepresentation, isGroupingSetsSupported, member, productMembersPotScrubbersPotsAndPans, storeMembersCAAndOR, storeMembersUsaAndCanada, tearDown, warehouseMembersCanadaMexicoUsa
 
Methods inherited from class junit.framework.TestCase
countTestCases, createResult, getName, run, run, runBare, runTest, setName, setUp, 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
 

Field Detail

ATTR_HIER_IMPL

public static final boolean ATTR_HIER_IMPL
Whether attribute hierarchies are implemented.

See Also:
Constant Field Values

AXIS_IMPL

public static final boolean AXIS_IMPL
Whether the AXIS function has been are implemented.

See Also:
Constant Field Values
Constructor Detail

Ssas2005CompatibilityTest

public Ssas2005CompatibilityTest(String name)
Creates a Ssas2005CompatibilityTest.

Parameters:
name - Testcase name
Method Detail

getTestContext

public TestContext getTestContext()
Description copied from class: FoodMartTestCase
Returns the test context. Override this method if you wish to use a different source for your FoodMart connection.

Overrides:
getTestContext in class FoodMartTestCase

testUniqueName

public void testUniqueName()

testDimensionDotHierarchyAmbiguous

public void testDimensionDotHierarchyAmbiguous()

testHierarchyLevelsFunction

public void testHierarchyLevelsFunction()

testDimensionDotHierarchyDotLevelDotMembers

public void testDimensionDotHierarchyDotLevelDotMembers()

testDimensionDotHierarchyDotLevel

public void testDimensionDotHierarchyDotLevel()

testNamingDimensionDotLevel

public void testNamingDimensionDotLevel()

testNamingDimensionDotLevel2

public void testNamingDimensionDotLevel2()

testNamingDimensionDotLevelNotUnique

public void testNamingDimensionDotLevelNotUnique()

testDimensionMembersOnSingleHierarchyDimension

public void testDimensionMembersOnSingleHierarchyDimension()

testMultipleHierarchyRequiresQualification

public void testMultipleHierarchyRequiresQualification()

testCalcMemberAmbiguousHierarchy

public void testCalcMemberAmbiguousHierarchy()
Tests that it is an error to define a calc member in a dimension with multiple hierarchies without specifying hierarchy. Based on BasicQueryTest.testHalfYears().


testUnqualifiedHierarchy

public void testUnqualifiedHierarchy()

testYtd

public void testYtd()
Tests that time functions such as Ytd behave correctly when there are multiple time hierarchies.


testAxesOutOfOrder

public void testAxesOutOfOrder()

testDimensionMembersRequiresHierarchyQualification

public void testDimensionMembersRequiresHierarchyQualification()

testDimensionMemberRequiresHierarchyQualification

public void testDimensionMemberRequiresHierarchyQualification()

testImplicitCurrentMemberRequiresHierarchyQualification

public void testImplicitCurrentMemberRequiresHierarchyQualification()

testUnqualifiedHierarchyCurrentMember

public void testUnqualifiedHierarchyCurrentMember()

testCannotDistinguishMdxFromSql

public void testCannotDistinguishMdxFromSql()

testNamingDimensionAttr

public void testNamingDimensionAttr()

testNamingDimensionAttrVsLevel

public void testNamingDimensionAttrVsLevel()

testAttrHierarchyMemberParent

public void testAttrHierarchyMemberParent()

testAttrHierarchyMemberChildren

public void testAttrHierarchyMemberChildren()

testAttrHierarchyAllMemberChildren

public void testAttrHierarchyAllMemberChildren()

testAttrHierarchyMemberLevel

public void testAttrHierarchyMemberLevel()

testAttrHierarchyUniqueName

public void testAttrHierarchyUniqueName()

testMemberAddressedByLevelAndKey

public void testMemberAddressedByLevelAndKey()

testMemberAddressedByCompoundKey

public void testMemberAddressedByCompoundKey()

testMemberAddressedByPartialCompoundKey

public void testMemberAddressedByPartialCompoundKey()

testMemberAddressedByNonUniqueName

public void testMemberAddressedByNonUniqueName()

testMemberAddressedByLevelAndCompoundKey

public void testMemberAddressedByLevelAndCompoundKey()

testMemberAddressedByLevelAndName

public void testMemberAddressedByLevelAndName()

testFoo31

public void testFoo31()

testFoo32

public void testFoo32()

testNamingAttrVsLevel

public void testNamingAttrVsLevel()

testUnqualifiedLevel

public void testUnqualifiedLevel()

testDimensionAsScalarExpression

public void testDimensionAsScalarExpression()

testDimensionWithMultipleHierarchiesDotParent

public void testDimensionWithMultipleHierarchiesDotParent()

testDimensionDotHierarchyInBrackets

public void testDimensionDotHierarchyInBrackets()

testDimensionDotHierarchySameNameInBrackets

public void testDimensionDotHierarchySameNameInBrackets()
Test case for bug 2688790, "Hierarchy Naming Compatibility issue". Occurs when dimension and hierarchy have the same name and are used with [name.name].


testDimensionDotLevelDotHierarchyInBrackets

public void testDimensionDotLevelDotHierarchyInBrackets()

testDimensionDotInvalidHierarchyInBrackets

public void testDimensionDotInvalidHierarchyInBrackets()

testDimensionDotDimensionInBrackets

public void testDimensionDotDimensionInBrackets()

testDimensionDotHierarchyDotNonExistentLevel

public void testDimensionDotHierarchyDotNonExistentLevel()

testDimensionDotHierarchyDotLevelMembers

public void testDimensionDotHierarchyDotLevelMembers()

testDupHierarchyOnAxes

public void testDupHierarchyOnAxes()

testDimensionOnAxis

public void testDimensionOnAxis()

testDimensionDotHierarchyOnAxis

public void testDimensionDotHierarchyOnAxis()

testHierarchiesFromSameDimensionOnAxes

public void testHierarchiesFromSameDimensionOnAxes()

testDifferentHierarchiesFromSameDimensionOnAxes

public void testDifferentHierarchiesFromSameDimensionOnAxes()

testDifferentHierarchiesFromSameDimensionInCrossjoin

public void testDifferentHierarchiesFromSameDimensionInCrossjoin()

testHierarchyUsedTwiceInCrossjoin

public void testHierarchyUsedTwiceInCrossjoin()

testAttributeHierarchyUsedTwiceInCrossjoin

public void testAttributeHierarchyUsedTwiceInCrossjoin()

testFoo50

public void testFoo50()

testQuoteInStringInQuotedFormula

public void testQuoteInStringInQuotedFormula()

testQuoteInStringInUnquotedFormula

public void testQuoteInStringInUnquotedFormula()

testMemberIdentifiedByDimensionAndKey

public void testMemberIdentifiedByDimensionAndKey()

testDimensionHierarchyKey

public void testDimensionHierarchyKey()

testCompoundKey

public void testCompoundKey()

testCompoundKeySyntaxError

public void testCompoundKeySyntaxError()

testCompoundKeyStringBad

public void testCompoundKeyStringBad()

testCompoundKeyString

public void testCompoundKeyString()

testNameAfterKey

public void testNameAfterKey()
Tests a member where a name segments [San Francisco].[Store 14] occur after a key segment &&CA.

Needs to work regardless of the value of MondrianProperties.SsasCompatibleNaming. Mondrian-3 had this functionality.


testNameAfterCompositeKey

public void testNameAfterCompositeKey()
Tests a member where a name segment [Store 14] occurs after a composite key segment &[San Francisco]&CA.


testCompoundKeyAll

public void testCompoundKeyAll()

testCompoundKeyParent

public void testCompoundKeyParent()

testCompoundKeyNull

public void testCompoundKeyNull()

testFoo56

public void testFoo56()

testKeyNonExistent

public void testKeyNonExistent()

testAxesLabelsOutOfSequence

public void testAxesLabelsOutOfSequence()

testAxisLabelsNotContiguousFails

public void testAxisLabelsNotContiguousFails()

testLotsOfAxes

public void testLotsOfAxes()

testOnAxesFails

public void testOnAxesFails()

testOnExpression

public void testOnExpression()

testOnFractionFails

public void testOnFractionFails()

testAxisFunction

public void testAxisFunction()

testAxisAppliedToExpr

public void testAxisAppliedToExpr()

testAxisFunctionReferencesPreviousAxis

public void testAxisFunctionReferencesPreviousAxis()

testAxisFunctionReferencesSameAxisFails

public void testAxisFunctionReferencesSameAxisFails()

testAxisFunctionReferencesSameAxisZeroFails

public void testAxisFunctionReferencesSameAxisZeroFails()

testAxisFunctionReferencesLaterAxis

public void testAxisFunctionReferencesLaterAxis()

testAxisFunctionReferencesSameAxisInlineFails

public void testAxisFunctionReferencesSameAxisInlineFails()

testCrossjoinMember

public void testCrossjoinMember()

testCanHaveMemberWithSameNameAsLevel

public void testCanHaveMemberWithSameNameAsLevel()
                                          throws SQLException
Tests the ambiguity between a level and a member of the same name, both in SSAS compatible mode and in regular mode.

Throws:
SQLException - If the test fails.

testMemberNameSortCaseSensitivity

public void testMemberNameSortCaseSensitivity()

testRootMembers

public void testRootMembers()
SSAS can resolve root members of a hierarchy even if not qualified by hierarchy, and even if the dimension has more than one hierarchy.


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