Search in sources :

Example 31 with Member

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

the class SqlConstraintUtilsTest method testExpandSupportedCalculatedMember_notCalculated.

public void testExpandSupportedCalculatedMember_notCalculated() {
    // init
    Evaluator evaluator = Mockito.mock(Evaluator.class);
    Member member = makeNoncalculatedMember("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 32 with Member

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

the class SqlConstraintUtilsTest method testGetSetFromCalculatedMember_disjoint.

/**
 * calculation test for disjoint tuples
 */
public void testGetSetFromCalculatedMember_disjoint() {
    final int ARITY = 2;
    List<Member> listColumn1 = new ArrayList<Member>();
    List<Member> listColumn2 = new ArrayList<Member>();
    listColumn1.add(new TestMember("elem1_col1"));
    listColumn1.add(new TestMember("elem2_col1"));
    listColumn2.add(new TestMember("elem1_col2"));
    listColumn2.add(new TestMember("elem2_col2"));
    final List<List<Member>> table = new ArrayList<List<Member>>();
    table.add(listColumn1);
    table.add(listColumn2);
    TupleConstraintStruct res = getCalculatedMember(table, ARITY);
    TupleList tuple = res.getDisjoinedTupleLists().get(0);
    // should be empty
    assertTrue(res.getMembers().isEmpty());
    assertEquals(tuple.getArity(), ARITY);
    assertEquals(tuple.get(0).get(0), listColumn1.get(0));
    assertEquals(tuple.get(0).get(1), listColumn1.get(1));
    assertEquals(tuple.get(1).get(0), listColumn2.get(0));
    assertEquals(tuple.get(1).get(1), listColumn2.get(1));
}
Also used : UnaryTupleList(mondrian.calc.impl.UnaryTupleList) TupleList(mondrian.calc.TupleList) TestMember(mondrian.olap.fun.TestMember) ArrayList(java.util.ArrayList) ArrayList(java.util.ArrayList) UnaryTupleList(mondrian.calc.impl.UnaryTupleList) TupleList(mondrian.calc.TupleList) List(java.util.List) Member(mondrian.olap.Member) TestMember(mondrian.olap.fun.TestMember)

Example 33 with Member

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

the class SqlConstraintUtilsTest method testIsSupportedCalculatedMember.

public void testIsSupportedCalculatedMember() {
    Member member = Mockito.mock(Member.class);
    Assert.assertEquals(false, member.isCalculated());
    Assert.assertEquals(false, SqlConstraintUtils.isSupportedCalculatedMember(member));
    Mockito.doReturn(true).when(member).isCalculated();
    Assert.assertEquals(null, member.getExpression());
    Assert.assertEquals(false, SqlConstraintUtils.isSupportedCalculatedMember(member));
    Mockito.doReturn(makeUnsupportedExpressionForCalculatedMember()).when(member).getExpression();
    Assert.assertEquals(false, SqlConstraintUtils.isSupportedCalculatedMember(member));
    Mockito.doReturn(makeSupportedExpressionForCalculatedMember()).when(member).getExpression();
    Assert.assertEquals(true, SqlConstraintUtils.isSupportedCalculatedMember(member));
}
Also used : Member(mondrian.olap.Member) TestMember(mondrian.olap.fun.TestMember)

Example 34 with Member

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

the class SqlConstraintUtilsTest method testExpandSupportedCalculatedMember_calculated_aggregate.

public void testExpandSupportedCalculatedMember_calculated_aggregate() {
    Evaluator evaluator = Mockito.mock(Evaluator.class);
    Member endMember0 = Mockito.mock(Member.class);
    Member endMember1 = Mockito.mock(Member.class);
    Member endMember2 = Mockito.mock(Member.class);
    Member member = null;
    List<Member> r = null;
    List<Member> aggregatedMembers = null;
    // 0
    aggregatedMembers = Collections.emptyList();
    member = makeAggregateExprMember(evaluator, aggregatedMembers);
    // tested call
    TupleConstraintStruct constraint = new TupleConstraintStruct();
    SqlConstraintUtils.expandSupportedCalculatedMember(member, evaluator, true, constraint);
    r = constraint.getMembers();
    // test
    assertSameContent("", aggregatedMembers, r);
    // 1
    aggregatedMembers = Collections.singletonList(endMember0);
    member = makeAggregateExprMember(evaluator, aggregatedMembers);
    // tested call
    constraint = new TupleConstraintStruct();
    SqlConstraintUtils.expandSupportedCalculatedMember(member, evaluator, constraint);
    r = constraint.getMembers();
    // test
    assertSameContent("", aggregatedMembers, r);
    // 2
    aggregatedMembers = Arrays.asList(new Member[] { endMember0, endMember1 });
    member = makeAggregateExprMember(evaluator, aggregatedMembers);
    // tested call
    constraint = new TupleConstraintStruct();
    SqlConstraintUtils.expandSupportedCalculatedMember(member, evaluator, constraint);
    r = constraint.getMembers();
    // test
    assertSameContent("", aggregatedMembers, r);
    // 3
    aggregatedMembers = Arrays.asList(new Member[] { endMember0, endMember1, endMember2 });
    member = makeAggregateExprMember(evaluator, aggregatedMembers);
    // tested call
    constraint = new TupleConstraintStruct();
    SqlConstraintUtils.expandSupportedCalculatedMember(member, evaluator, constraint);
    r = constraint.getMembers();
    // test
    assertSameContent("", aggregatedMembers, r);
}
Also used : Evaluator(mondrian.olap.Evaluator) SetEvaluator(mondrian.olap.Evaluator.SetEvaluator) Member(mondrian.olap.Member) TestMember(mondrian.olap.fun.TestMember)

Example 35 with Member

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

the class SqlConstraintUtilsTest method makeAggregateExprMember.

private Member makeAggregateExprMember(Evaluator mockEvaluator, List<Member> endMembers) {
    Member member = Mockito.mock(Member.class);
    Mockito.doReturn(true).when(member).isCalculated();
    Member aggregatedMember0 = Mockito.mock(Member.class);
    Exp aggregateArg0 = new MemberExpr(aggregatedMember0);
    FunDef dummy = Mockito.mock(FunDef.class);
    Mockito.doReturn(Syntax.Function).when(dummy).getSyntax();
    Mockito.doReturn("dummy").when(dummy).getName();
    FunDef funDef = new AggregateFunDef(dummy);
    Exp[] args = new Exp[] { aggregateArg0 };
    Type returnType = new DecimalType(1, 1);
    Exp memberExp = new ResolvedFunCall(funDef, args, returnType);
    Mockito.doReturn(memberExp).when(member).getExpression();
    SetEvaluator setEvaluator = Mockito.mock(SetEvaluator.class);
    Mockito.doReturn(setEvaluator).when(mockEvaluator).getSetEvaluator(aggregateArg0, true);
    Mockito.doReturn(new UnaryTupleList(endMembers)).when(setEvaluator).evaluateTupleIterable();
    Assert.assertEquals(true, member.isCalculated());
    Assert.assertEquals(true, SqlConstraintUtils.isSupportedCalculatedMember(member));
    return member;
}
Also used : 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) NullType(mondrian.olap.type.NullType) DecimalType(mondrian.olap.type.DecimalType) TupleType(mondrian.olap.type.TupleType) Type(mondrian.olap.type.Type) UnaryTupleList(mondrian.calc.impl.UnaryTupleList) MemberExpr(mondrian.mdx.MemberExpr) DecimalType(mondrian.olap.type.DecimalType) AggregateFunDef(mondrian.olap.fun.AggregateFunDef) ResolvedFunCall(mondrian.mdx.ResolvedFunCall) Exp(mondrian.olap.Exp) Member(mondrian.olap.Member) TestMember(mondrian.olap.fun.TestMember)

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