Search in sources :

Example 6 with Member

use of mondrian.olap.Member in project mondrian by pentaho.

the class SqlConstraintUtilsTest method testExpandSupportedCalculatedMember_calculated_parentheses.

public void testExpandSupportedCalculatedMember_calculated_parentheses() {
    Evaluator evaluator = Mockito.mock(Evaluator.class);
    Member resultMember = Mockito.mock(Member.class);
    Member member = this.makeParenthesesExprMember(evaluator, resultMember, "0");
    // tested call
    TupleConstraintStruct constraint = new TupleConstraintStruct();
    SqlConstraintUtils.expandSupportedCalculatedMember(member, evaluator, constraint);
    List<Member> r = constraint.getMembers();
    // test
    Assert.assertNotNull(r);
    Assert.assertEquals(1, r.size());
    Assert.assertSame(resultMember, r.get(0));
}
Also used : Evaluator(mondrian.olap.Evaluator) SetEvaluator(mondrian.olap.Evaluator.SetEvaluator) Member(mondrian.olap.Member) TestMember(mondrian.olap.fun.TestMember)

Example 7 with Member

use of mondrian.olap.Member in project mondrian by pentaho.

the class SqlConstraintUtilsTest method getCalculatedMember.

public TupleConstraintStruct getCalculatedMember(final List<List<Member>> table, int arity) {
    Member memberMock = mock(Member.class);
    Exp[] funCallArgExps = new Exp[0];
    ResolvedFunCall funCallArgMock = new ResolvedFunCall(mock(FunDef.class), funCallArgExps, mock(TupleType.class));
    Exp[] funCallExps = { funCallArgMock };
    ResolvedFunCall funCallMock = new ResolvedFunCall(mock(FunDef.class), funCallExps, mock(TupleType.class));
    when(memberMock.getExpression()).thenReturn(funCallMock);
    Evaluator evaluatorMock = mock(Evaluator.class);
    Evaluator.SetEvaluator setEvaluatorMock = mock(Evaluator.SetEvaluator.class);
    TupleIterable tupleIterableMock = mock(TupleIterable.class);
    when(tupleIterableMock.iterator()).thenReturn(table.iterator());
    when(tupleIterableMock.getArity()).thenReturn(arity);
    AbstractTupleCursor cursor = new AbstractTupleCursor(arity) {

        Iterator<List<Member>> iterator = table.iterator();

        List<Member> curList;

        @Override
        public boolean forward() {
            boolean hasNext = iterator.hasNext();
            if (hasNext) {
                curList = iterator.next();
            } else {
                curList = null;
            }
            return hasNext;
        }

        @Override
        public List<Member> current() {
            return curList;
        }
    };
    when(tupleIterableMock.tupleCursor()).thenReturn(cursor);
    when(setEvaluatorMock.evaluateTupleIterable()).thenReturn(tupleIterableMock);
    when(evaluatorMock.getSetEvaluator(eq(funCallArgMock), anyBoolean())).thenReturn(setEvaluatorMock);
    TupleConstraintStruct constraint = new TupleConstraintStruct();
    SqlConstraintUtils.expandSetFromCalculatedMember(evaluatorMock, memberMock, constraint);
    return constraint;
}
Also used : Evaluator(mondrian.olap.Evaluator) SetEvaluator(mondrian.olap.Evaluator.SetEvaluator) FunDef(mondrian.olap.FunDef) ParenthesesFunDef(mondrian.olap.fun.ParenthesesFunDef) AggregateFunDef(mondrian.olap.fun.AggregateFunDef) NullFunDef(mondrian.olap.fun.CrossJoinTest.NullFunDef) TupleIterable(mondrian.calc.TupleIterable) TupleType(mondrian.olap.type.TupleType) Iterator(java.util.Iterator) ResolvedFunCall(mondrian.mdx.ResolvedFunCall) ArrayList(java.util.ArrayList) UnaryTupleList(mondrian.calc.impl.UnaryTupleList) TupleList(mondrian.calc.TupleList) List(java.util.List) AbstractTupleCursor(mondrian.calc.impl.AbstractTupleCursor) Exp(mondrian.olap.Exp) Member(mondrian.olap.Member) TestMember(mondrian.olap.fun.TestMember) SetEvaluator(mondrian.olap.Evaluator.SetEvaluator)

Example 8 with Member

use of mondrian.olap.Member in project mondrian by pentaho.

the class SqlConstraintUtilsTest method testExpandSupportedCalculatedMember_calculated_unsupported.

public void testExpandSupportedCalculatedMember_calculated_unsupported() {
    Evaluator evaluator = Mockito.mock(Evaluator.class);
    Member member = makeUnsupportedCalculatedMember("0");
    // tested call
    TupleConstraintStruct constraint = new TupleConstraintStruct();
    SqlConstraintUtils.expandSupportedCalculatedMember(member, evaluator, constraint);
    List<Member> r = constraint.getMembers();
    // test
    Assert.assertNotNull(r);
    Assert.assertEquals(1, r.size());
    Assert.assertSame(member, r.get(0));
}
Also used : Evaluator(mondrian.olap.Evaluator) SetEvaluator(mondrian.olap.Evaluator.SetEvaluator) Member(mondrian.olap.Member) TestMember(mondrian.olap.fun.TestMember)

Example 9 with Member

use of mondrian.olap.Member in project mondrian by pentaho.

the class SqlConstraintUtilsTest method makeNoncalculatedMember.

private Member makeNoncalculatedMember(String toString) {
    Member member = Mockito.mock(Member.class);
    Assert.assertEquals(false, member.isCalculated());
    Mockito.doReturn("mock[" + toString + "]").when(member).toString();
    return member;
}
Also used : Member(mondrian.olap.Member) TestMember(mondrian.olap.fun.TestMember)

Example 10 with Member

use of mondrian.olap.Member in project mondrian by pentaho.

the class SqlConstraintUtilsTest method testExpandSupportedCalculatedMembers2.

// test with a placeholder member
public void testExpandSupportedCalculatedMembers2() {
    final TestContext testContext = TestContext.instance();
    final Connection connection = testContext.getConnection();
    final String queryText = "SELECT {[Measures].[Customer Count]} ON 0 " + "FROM [Sales] " + "WHERE [Time].[1997]";
    final Query query = connection.parseQuery(queryText);
    final QueryAxis querySlicerAxis = query.getSlicerAxis();
    final Member slicerMember = ((MemberExpr) querySlicerAxis.getSet()).getMember();
    final RolapHierarchy slicerHierarchy = ((RolapCube) query.getCube()).getTimeHierarchy(null);
    final Execution execution = new Execution(query.getStatement(), 0L);
    final RolapEvaluatorRoot rolapEvaluatorRoot = new RolapEvaluatorRoot(execution);
    final RolapEvaluator rolapEvaluator = new RolapEvaluator(rolapEvaluatorRoot);
    final Member expectedMember = slicerMember;
    rolapEvaluator.setSlicerContext(expectedMember);
    RolapResult.CompoundSlicerRolapMember placeHolderMember = Mockito.mock(RolapResult.CompoundSlicerRolapMember.class);
    Mockito.doReturn(slicerHierarchy).when(placeHolderMember).getHierarchy();
    Member endMember0 = makeNoncalculatedMember("0");
    // (0, placeholder)
    Member[] argMembers = new Member[] { endMember0, placeHolderMember };
    Member[] expectedMembers = new Member[] { endMember0, slicerMember };
    Member[] expectedMembersOnDisjoin = new Member[] { endMember0 };
    assertApartExpandSupportedCalculatedMembers("(0, placeholder)", expectedMembers, expectedMembersOnDisjoin, argMembers, rolapEvaluator);
}
Also used : Query(mondrian.olap.Query) TestContext(mondrian.test.TestContext) Connection(mondrian.olap.Connection) Execution(mondrian.server.Execution) MemberExpr(mondrian.mdx.MemberExpr) Member(mondrian.olap.Member) TestMember(mondrian.olap.fun.TestMember) QueryAxis(mondrian.olap.QueryAxis)

Aggregations

Member (mondrian.olap.Member)60 ArrayList (java.util.ArrayList)20 TestMember (mondrian.olap.fun.TestMember)20 List (java.util.List)15 LimitedRollupMember (mondrian.rolap.RolapHierarchy.LimitedRollupMember)13 Evaluator (mondrian.olap.Evaluator)11 MultiCardinalityDefaultMember (mondrian.rolap.RestrictedMemberReader.MultiCardinalityDefaultMember)11 SetEvaluator (mondrian.olap.Evaluator.SetEvaluator)8 Hierarchy (mondrian.olap.Hierarchy)8 TupleList (mondrian.calc.TupleList)7 Axis (mondrian.olap.Axis)7 Exp (mondrian.olap.Exp)7 Level (mondrian.olap.Level)7 HashMap (java.util.HashMap)6 LinkedHashMap (java.util.LinkedHashMap)6 HashSet (java.util.HashSet)5 UnaryTupleList (mondrian.calc.impl.UnaryTupleList)5 MemberExpr (mondrian.mdx.MemberExpr)5 LinkedHashSet (java.util.LinkedHashSet)4 ResolvedFunCall (mondrian.mdx.ResolvedFunCall)4