diff options
Diffstat (limited to 'searchlib/src/tests/grouping/grouping_test.cpp')
-rw-r--r-- | searchlib/src/tests/grouping/grouping_test.cpp | 683 |
1 files changed, 342 insertions, 341 deletions
diff --git a/searchlib/src/tests/grouping/grouping_test.cpp b/searchlib/src/tests/grouping/grouping_test.cpp index 10fa3267c09..fec91a62d17 100644 --- a/searchlib/src/tests/grouping/grouping_test.cpp +++ b/searchlib/src/tests/grouping/grouping_test.cpp @@ -1,7 +1,5 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. -#include <vespa/fastos/fastos.h> -#include <vespa/log/log.h> -LOG_SETUP("grouping_test"); + #include <vespa/vespalib/testkit/testapp.h> #include <vespa/searchlib/aggregation/perdocexpression.h> #include <vespa/searchlib/aggregation/aggregation.h> @@ -39,7 +37,7 @@ public: for (uint32_t docid = 0; docid < numDocs; ++docid) { T val; uint32_t res = rhs._attr->get(docid, &val, 1); - LOG_ASSERT(res == 1); + assert(res == 1); add(val); } } @@ -283,6 +281,7 @@ Test::testMerge(const Grouping &a, const Grouping &b, const Grouping &c, void Test::testAggregationSimple() { + EXPECT_EQUAL(64u, sizeof(Group)); AggregationContext ctx; ctx.result().add(0).add(1).add(2); ctx.add(IntAttrBuilder("int").add(3).add(7).add(15).sp()); @@ -295,24 +294,69 @@ Test::testAggregationSimple() testAggregationSimpleSum(ctx, MaxAggregationResult(), Int64ResultNode(15), FloatResultNode(15), StringResultNode("7")); } +#define MU std::make_unique +using EUP = ExpressionNode::UP; + +std::unique_ptr<AggregationResult> +prepareAggr(const AggregationResult & aggr, ExpressionNode::UP expr) { + std::unique_ptr<AggregationResult> clone(aggr.clone()); + clone->setExpression(std::move(expr)); + return clone; +} + +ExpressionNode::UP +prepareAggr(const AggregationResult & aggr, ExpressionNode::UP expr, const ResultNode & r) { + auto prepared = prepareAggr(aggr, std::move(expr)); + prepared->setResult(r); + return prepared; +} void Test::testAggregationSimpleSum(AggregationContext & ctx, const AggregationResult & aggr, const ResultNode & ir, const ResultNode & fr, const ResultNode & sr) { ExpressionNode::CP clone(aggr); - Grouping request = Grouping() - .setRoot(Group() - .addResult(static_cast<AggregationResult &>(*clone).setExpression(AttributeNode("int"))) - .addResult(static_cast<AggregationResult &>(*clone).setExpression(AttributeNode("float"))) - .addResult(static_cast<AggregationResult &>(*clone).setExpression(AttributeNode("string"))) - ); + Grouping request; + request.setRoot(Group().addResult(prepareAggr(aggr, MU<AttributeNode>("int"))) + .addResult(prepareAggr(aggr, MU<AttributeNode>("float"))) + .addResult(prepareAggr(aggr, MU<AttributeNode>("string")))); - Group expect = Group() - .addResult(static_cast<AggregationResult &>(*clone).setExpression(AttributeNode("int")).setResult(ir)) - .addResult(static_cast<AggregationResult &>(*clone).setExpression(AttributeNode("float")).setResult(fr)) - .addResult(static_cast<AggregationResult &>(*clone).setExpression(AttributeNode("string")).setResult(sr)); + Group expect; + expect.addResult(prepareAggr(aggr, MU<AttributeNode>("int"), ir)) + .addResult(prepareAggr(aggr, MU<AttributeNode>("float"), fr)) + .addResult(prepareAggr(aggr, MU<AttributeNode>("string"), sr)); EXPECT_TRUE(testAggregation(ctx, request, expect)); } +GroupingLevel +createGL(ExpressionNode::UP expr, ExpressionNode::UP resultExpr) { + GroupingLevel l; + l.setExpression(std::move(expr)); + l.addResult(SumAggregationResult().setExpression(std::move(resultExpr))); + return l; +} + +GroupingLevel +createGL(ExpressionNode::UP expr) { + GroupingLevel l; + l.setExpression(std::move(expr)); + return l; +} + +GroupingLevel +createGL(size_t maxGroups, ExpressionNode::UP expr) { + GroupingLevel l; + l.setMaxGroups(maxGroups); + l.setExpression(std::move(expr)); + return l; +} + +GroupingLevel +createGL(size_t maxGroups, ExpressionNode::UP expr, ExpressionNode::UP result) { + GroupingLevel l; + l.setMaxGroups(maxGroups); + l.setExpression(std::move(expr)); + l.addResult(SumAggregationResult().setExpression(std::move(result))); + return l; +} /** * Verify that the backend aggregation will classify and collect on * the appropriate levels, as indicated by the firstLevel and @@ -328,91 +372,70 @@ Test::testAggregationLevels() ctx.add(IntAttrBuilder("attr3").add(13).add(13).sp()); ctx.result().add(0).add(1); - Grouping baseRequest = Grouping() - .setRoot(Group() - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr0")))) - .addLevel(GroupingLevel() - .setExpression(AttributeNode("attr1")) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr2")))) - .addLevel(GroupingLevel() - .setExpression(AttributeNode("attr2")) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr3")))) - .addLevel(GroupingLevel() - .setExpression(AttributeNode("attr3")) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr1")))); - - Group notDone = Group() - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr0"))); + Grouping baseRequest; + baseRequest + .setRoot(Group().addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr0")))) + .addLevel(createGL(MU<AttributeNode>("attr1"), MU<AttributeNode>("attr2"))) + .addLevel(createGL(MU<AttributeNode>("attr2"), MU<AttributeNode>("attr3"))) + .addLevel(createGL(MU<AttributeNode>("attr3"), MU<AttributeNode>("attr1"))); + + Group notDone; + notDone.addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr0"))); // Hmm, do not need to prepare more than the levels needed. .setResult(Int64ResultNode(0))); - Group done0 = Group() - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr0")) - .setResult(Int64ResultNode(20))) - .addChild(Group() - .setId(Int64ResultNode(11)) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr2")) + Group done0; + done0.addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr0")).setResult(Int64ResultNode(20))) + .addChild(Group().setId(Int64ResultNode(11)).addResult(SumAggregationResult().setExpression(MU<AttributeNode>("attr2")) .setResult(Int64ResultNode(0)))); - Group done1 = Group() - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr0")) - .setResult(Int64ResultNode(20))) - .addChild(Group() - .setId(Int64ResultNode(11)) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr2")) - .setResult(Int64ResultNode(24))) - .addChild(Group() - .setId(Int64ResultNode(12)) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr3")) - .setResult(Int64ResultNode(0))))); - - Group done2 = Group() - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr0")) - .setResult(Int64ResultNode(20))) - .addChild(Group() - .setId(Int64ResultNode(11)) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr2")) - .setResult(Int64ResultNode(24))) - .addChild(Group() - .setId(Int64ResultNode(12)) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr3")) - .setResult(Int64ResultNode(26))) - .addChild(Group() - .setId(Int64ResultNode(13)) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr1")) - .setResult(Int64ResultNode(0)))))); - - Group done3 = Group() - .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr0")) - .setResult(Int64ResultNode(20))) + Group done1; + done1.addResult(SumAggregationResult() + .setExpression(MU<AttributeNode>("attr0")) + .setResult(Int64ResultNode(20))) + .addChild(Group().setId(Int64ResultNode(11)) + .addResult(SumAggregationResult() + .setExpression(MU<AttributeNode>("attr2")) + .setResult(Int64ResultNode(24))) + .addChild(Group().setId(Int64ResultNode(12)) + .addResult(SumAggregationResult() + .setExpression(MU<AttributeNode>("attr3")) + .setResult(Int64ResultNode(0))))); + + Group done2; + done2.addResult(SumAggregationResult() + .setExpression(MU<AttributeNode>("attr0")) + .setResult(Int64ResultNode(20))) + .addChild(Group().setId(Int64ResultNode(11)) + .addResult(SumAggregationResult() + .setExpression(MU<AttributeNode>("attr2")) + .setResult(Int64ResultNode(24))) + .addChild(Group().setId(Int64ResultNode(12)) + .addResult(SumAggregationResult() + .setExpression(MU<AttributeNode>("attr3")) + .setResult(Int64ResultNode(26))) + .addChild(Group().setId(Int64ResultNode(13)) + .addResult(SumAggregationResult() + .setExpression(MU<AttributeNode>("attr1")) + .setResult(Int64ResultNode(0)))))); + + Group done3; + done3.addResult(SumAggregationResult() + .setExpression(MU<AttributeNode>("attr0")) + .setResult(Int64ResultNode(20))) .addChild(Group() .setId(Int64ResultNode(11)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr2")) + .setExpression(MU<AttributeNode>("attr2")) .setResult(Int64ResultNode(24))) .addChild(Group() .setId(Int64ResultNode(12)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr3")) + .setExpression(MU<AttributeNode>("attr3")) .setResult(Int64ResultNode(26))) .addChild(Group() .setId(Int64ResultNode(13)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("attr1")) + .setExpression(MU<AttributeNode>("attr1")) .setResult(Int64ResultNode(22)))))); { // level 0 only @@ -464,9 +487,7 @@ Test::testAggregationMaxGroups() ctx.add(IntAttrBuilder("attr").add(5).add(10).add(15).sp()); ctx.result().add(0).add(1).add(2); - Grouping baseRequest = Grouping() - .addLevel(GroupingLevel() - .setExpression(AttributeNode("attr"))); + Grouping baseRequest = Grouping().addLevel(createGL(MU<AttributeNode>("attr"))); Group empty = Group(); Group grp1 = empty.unchain().addChild(Group().setId(Int64ResultNode(5))); @@ -515,18 +536,17 @@ Test::testAggregationGroupOrder() ctx.add(IntAttrBuilder("attr").add(10).add(25).add(35).add(5).add(20).add(15).add(30).sp()); ctx.result().add(0).add(1).add(2).add(3).add(4).add(5).add(6); - Grouping request = Grouping() - .addLevel(GroupingLevel() - .setExpression(AttributeNode("attr"))); + Grouping request; + request.addLevel(createGL(MU<AttributeNode>("attr"))); - Group expect = Group() - .addChild(Group().setId(Int64ResultNode(5))) - .addChild(Group().setId(Int64ResultNode(10))) - .addChild(Group().setId(Int64ResultNode(15))) - .addChild(Group().setId(Int64ResultNode(20))) - .addChild(Group().setId(Int64ResultNode(25))) - .addChild(Group().setId(Int64ResultNode(30))) - .addChild(Group().setId(Int64ResultNode(35))); + Group expect; + expect.addChild(Group().setId(Int64ResultNode(5))) + .addChild(Group().setId(Int64ResultNode(10))) + .addChild(Group().setId(Int64ResultNode(15))) + .addChild(Group().setId(Int64ResultNode(20))) + .addChild(Group().setId(Int64ResultNode(25))) + .addChild(Group().setId(Int64ResultNode(30))) + .addChild(Group().setId(Int64ResultNode(35))); EXPECT_TRUE(testAggregation(ctx, request, expect)); } @@ -547,8 +567,7 @@ Test::testAggregationGroupRank() .add(3, 10).add(4, 15).add(5, 5) .add(6, 15).add(7, 5).add(8, 10); - Grouping request = Grouping().addLevel( - GroupingLevel().setExpression(AttributeNode("attr"))); + Grouping request = Grouping().addLevel(createGL(MU<AttributeNode>("attr"))); Group expect = Group() .addChild(Group().setId(Int64ResultNode(1)).setRank(RawRank(15))) @@ -558,6 +577,22 @@ Test::testAggregationGroupRank() EXPECT_TRUE(testAggregation(ctx, request, expect)); } +template<typename T> +ExpressionNode::UP +createAggr(ExpressionNode::UP e) { + std::unique_ptr<T> aggr = MU<T>(); + aggr->setExpression(std::move(e)); + return aggr; +} + +template<typename T> +ExpressionNode::UP +createAggr(SingleResultNode::UP r, ExpressionNode::UP e) { + std::unique_ptr<T> aggr = MU<T>(std::move(r)); + aggr->setExpression(std::move(e)); + return aggr; +} + void Test::testAggregationGroupCapping() { @@ -572,81 +607,96 @@ Test::testAggregationGroupCapping() .add(6, 7).add(7, 8).add(8, 9); { - Grouping request = Grouping().addLevel( - GroupingLevel().setExpression(AttributeNode("attr"))); - - Group expect = Group() - .addChild(Group().setId(Int64ResultNode(1)).setRank(RawRank(1))) - .addChild(Group().setId(Int64ResultNode(2)).setRank(RawRank(2))) - .addChild(Group().setId(Int64ResultNode(3)).setRank(RawRank(3))) - .addChild(Group().setId(Int64ResultNode(4)).setRank(RawRank(4))) - .addChild(Group().setId(Int64ResultNode(5)).setRank(RawRank(5))) - .addChild(Group().setId(Int64ResultNode(6)).setRank(RawRank(6))) - .addChild(Group().setId(Int64ResultNode(7)).setRank(RawRank(7))) - .addChild(Group().setId(Int64ResultNode(8)).setRank(RawRank(8))) - .addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(9))); + Grouping request = Grouping().addLevel(createGL(MU<AttributeNode>("attr"))); + + Group expect; + expect.addChild(Group().setId(Int64ResultNode(1)).setRank(RawRank(1))) + .addChild(Group().setId(Int64ResultNode(2)).setRank(RawRank(2))) + .addChild(Group().setId(Int64ResultNode(3)).setRank(RawRank(3))) + .addChild(Group().setId(Int64ResultNode(4)).setRank(RawRank(4))) + .addChild(Group().setId(Int64ResultNode(5)).setRank(RawRank(5))) + .addChild(Group().setId(Int64ResultNode(6)).setRank(RawRank(6))) + .addChild(Group().setId(Int64ResultNode(7)).setRank(RawRank(7))) + .addChild(Group().setId(Int64ResultNode(8)).setRank(RawRank(8))) + .addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(9))); EXPECT_TRUE(testAggregation(ctx, request, expect)); } { - Grouping request = Grouping().addLevel( - GroupingLevel().setMaxGroups(3).setExpression(AttributeNode("attr"))); + Grouping request; + request.addLevel(createGL(3, MU<AttributeNode>("attr"))); - Group expect = Group() - .addChild(Group().setId(Int64ResultNode(7)).setRank(RawRank(7))) - .addChild(Group().setId(Int64ResultNode(8)).setRank(RawRank(8))) - .addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(9))); + Group expect; + expect.addChild(Group().setId(Int64ResultNode(7)).setRank(RawRank(7))) + .addChild(Group().setId(Int64ResultNode(8)).setRank(RawRank(8))) + .addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(9))); EXPECT_TRUE(testAggregation(ctx, request, expect)); } { - Grouping request = Grouping(). - setFirstLevel(0). - setLastLevel(1). - addLevel( - GroupingLevel().setMaxGroups(3).setExpression(AttributeNode("attr")). - addAggregationResult(SumAggregationResult().setExpression(AttributeNode("attr"))). - addOrderBy(AggregationRefNode(0), false)); - - Group expect = Group() - .addChild(Group().setId(Int64ResultNode(7)).setRank(RawRank(7)).addAggregationResult(SumAggregationResult(Int64ResultNode(7)).setExpression(AttributeNode("attr"))).addOrderBy(AggregationRefNode(0), false)) - .addChild(Group().setId(Int64ResultNode(8)).setRank(RawRank(8)).addAggregationResult(SumAggregationResult(Int64ResultNode(8)).setExpression(AttributeNode("attr"))).addOrderBy(AggregationRefNode(0), false)) - .addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(9)).addAggregationResult(SumAggregationResult(Int64ResultNode(9)).setExpression(AttributeNode("attr"))).addOrderBy(AggregationRefNode(0), false)); + Grouping request; + request.setFirstLevel(0) + .setLastLevel(1) + .addLevel(std::move(GroupingLevel().setMaxGroups(3).setExpression(MU<AttributeNode>("attr")) + .addAggregationResult(createAggr<SumAggregationResult>(MU<AttributeNode>("attr"))) + .addOrderBy(MU<AggregationRefNode>(0), false))); + + Group expect; + expect.addChild(Group().setId(Int64ResultNode(7)).setRank(RawRank(7)) + .addAggregationResult(createAggr<SumAggregationResult>(MU<Int64ResultNode>(7), MU<AttributeNode>("attr"))) + .addOrderBy(MU<AggregationRefNode>(0), false)) + .addChild(Group().setId(Int64ResultNode(8)).setRank(RawRank(8)) + .addAggregationResult(createAggr<SumAggregationResult>(MU<Int64ResultNode>(8), MU<AttributeNode>("attr"))) + .addOrderBy(MU<AggregationRefNode>(0), false)) + .addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(9)) + .addAggregationResult(createAggr<SumAggregationResult>(MU<Int64ResultNode>(9), MU<AttributeNode>("attr"))) + .addOrderBy(MU<AggregationRefNode>(0), false)); EXPECT_TRUE(testAggregation(ctx, request, expect)); } { - Grouping request = Grouping(). - setFirstLevel(0). - setLastLevel(1). - addLevel( - GroupingLevel().setMaxGroups(3).setExpression(AttributeNode("attr")). - addAggregationResult(SumAggregationResult().setExpression(AttributeNode("attr"))).addOrderBy(AggregationRefNode(0), true)); + Grouping request; + request.setFirstLevel(0) + .setLastLevel(1) + .addLevel(std::move(GroupingLevel().setMaxGroups(3).setExpression(MU<AttributeNode>("attr")) + .addAggregationResult(createAggr<SumAggregationResult>(MU<AttributeNode>("attr"))) + .addOrderBy(MU<AggregationRefNode>(0), true))); Group expect = Group() - .addChild(Group().setId(Int64ResultNode(1)).setRank(RawRank(1)).addAggregationResult(SumAggregationResult(Int64ResultNode(1)).setExpression(AttributeNode("attr"))).addOrderBy(AggregationRefNode(0), true)) - .addChild(Group().setId(Int64ResultNode(2)).setRank(RawRank(2)).addAggregationResult(SumAggregationResult(Int64ResultNode(2)).setExpression(AttributeNode("attr"))).addOrderBy(AggregationRefNode(0), true)) - .addChild(Group().setId(Int64ResultNode(3)).setRank(RawRank(3)).addAggregationResult(SumAggregationResult(Int64ResultNode(3)).setExpression(AttributeNode("attr"))).addOrderBy(AggregationRefNode(0), true)); + .addChild(Group().setId(Int64ResultNode(1)).setRank(RawRank(1)) + .addAggregationResult(createAggr<SumAggregationResult>(MU<Int64ResultNode>(1), MU<AttributeNode>("attr"))) + .addOrderBy(MU<AggregationRefNode>(0), true)) + .addChild(Group().setId(Int64ResultNode(2)).setRank(RawRank(2)) + .addAggregationResult(createAggr<SumAggregationResult>(MU<Int64ResultNode>(2), MU<AttributeNode>("attr"))) + .addOrderBy(MU<AggregationRefNode>(0), true)) + .addChild(Group().setId(Int64ResultNode(3)).setRank(RawRank(3)) + .addAggregationResult(createAggr<SumAggregationResult>(MU<Int64ResultNode>(3), MU<AttributeNode>("attr"))) + .addOrderBy(MU<AggregationRefNode>(0), true)); EXPECT_TRUE(testAggregation(ctx, request, expect)); } { AddFunctionNode *add = new AddFunctionNode(); - add->addArg(AggregationRefNode(0)); - add->appendArg(ConstantNode(Int64ResultNode(3))); - ExpressionNode::CP i1(add); - Grouping request = Grouping(). - setFirstLevel(0). - setLastLevel(1). - addLevel( - GroupingLevel().setMaxGroups(3).setExpression(AttributeNode("attr")). - addAggregationResult(SumAggregationResult().setExpression(AttributeNode("attr"))). - addOrderBy(i1, false)); - - Group expect = Group() - .addChild(Group().setId(Int64ResultNode(7)).setRank(RawRank(7)).addAggregationResult(SumAggregationResult(Int64ResultNode(7)).setExpression(AttributeNode("attr"))).addOrderBy(AddFunctionNode().appendArg(AggregationRefNode(0)).appendArg(ConstantNode(Int64ResultNode(3))).setResult(Int64ResultNode(10)), false)) - .addChild(Group().setId(Int64ResultNode(8)).setRank(RawRank(8)).addAggregationResult(SumAggregationResult(Int64ResultNode(8)).setExpression(AttributeNode("attr"))).addOrderBy(AddFunctionNode().appendArg(AggregationRefNode(0)).appendArg(ConstantNode(Int64ResultNode(3))).setResult(Int64ResultNode(11)), false)) - .addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(9)).addAggregationResult(SumAggregationResult(Int64ResultNode(9)).setExpression(AttributeNode("attr"))).addOrderBy(AddFunctionNode().appendArg(AggregationRefNode(0)).appendArg(ConstantNode(Int64ResultNode(3))).setResult(Int64ResultNode(12)), false)); + add->addArg(MU<AggregationRefNode>(0)); + add->appendArg(MU<ConstantNode>(MU<Int64ResultNode>(3))); + + Grouping request; + request.setFirstLevel(0) + .setLastLevel(1) + .addLevel(std::move(GroupingLevel().setMaxGroups(3).setExpression(MU<AttributeNode>("attr")) + .addAggregationResult(createAggr<SumAggregationResult>(MU<AttributeNode>("attr"))) + .addOrderBy(ExpressionNode::UP(add), false))); + + Group expect; + expect.addChild(Group().setId(Int64ResultNode(7)).setRank(RawRank(7)) + .addAggregationResult(createAggr<SumAggregationResult>(MU<Int64ResultNode>(7), MU<AttributeNode>("attr"))) + .addOrderBy(AddFunctionNode().appendArg(MU<AggregationRefNode>(0)).appendArg(MU<ConstantNode>(MU<Int64ResultNode>(3))).setResult(Int64ResultNode(10)), false)) + .addChild(Group().setId(Int64ResultNode(8)).setRank(RawRank(8)) + .addAggregationResult(createAggr<SumAggregationResult>(MU<Int64ResultNode>(8), MU<AttributeNode>("attr"))) + .addOrderBy(AddFunctionNode().appendArg(MU<AggregationRefNode>(0)).appendArg(MU<ConstantNode>(MU<Int64ResultNode>(3))).setResult(Int64ResultNode(11)), false)) + .addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(9)) + .addAggregationResult(createAggr<SumAggregationResult>(MU<Int64ResultNode>(9), MU<AttributeNode>("attr"))) + .addOrderBy(AddFunctionNode().appendArg(MU<AggregationRefNode>(0)).appendArg(MU<ConstantNode>(MU<Int64ResultNode>(3))).setResult(Int64ResultNode(12)), false)); EXPECT_TRUE(testAggregation(ctx, request, expect)); } @@ -667,20 +717,20 @@ Test::testMergeSimpleSum() .setRoot(Group() .setId(NullResultNode()) .addResult(SumAggregationResult() - .setExpression(AttributeNode("foo")) + .setExpression(MU<AttributeNode>("foo")) .setResult(Int64ResultNode(20)))); Grouping b = Grouping() .setRoot(Group() .setId(NullResultNode()) .addResult(SumAggregationResult() - .setExpression(AttributeNode("foo")) + .setExpression(MU<AttributeNode>("foo")) .setResult(Int64ResultNode(30)))); Group expect = Group() .setId(NullResultNode()) .addResult(SumAggregationResult() - .setExpression(AttributeNode("foo")) + .setExpression(MU<AttributeNode>("foo")) .setResult(Int64ResultNode(50))); EXPECT_TRUE(testMerge(a, b, expect)); @@ -692,168 +742,159 @@ Test::testMergeSimpleSum() void Test::testMergeLevels() { - Grouping request = Grouping() - .addLevel(GroupingLevel() - .setExpression(AttributeNode("c1")) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")))) - .addLevel(GroupingLevel() - .setExpression(AttributeNode("c2")) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")))) - .addLevel(GroupingLevel() - .setExpression(AttributeNode("c3")) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")))); + Grouping request; + request.addLevel(createGL(MU<AttributeNode>("c1"), MU<AttributeNode>("s1"))) + .addLevel(createGL(MU<AttributeNode>("c2"), MU<AttributeNode>("s2"))) + .addLevel(createGL(MU<AttributeNode>("c3"), MU<AttributeNode>("s3"))); Group a = Group() .setId(NullResultNode()) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(5))) .addChild(Group() .setId(Int64ResultNode(10)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(10))) .addChild(Group() .setId(Int64ResultNode(20)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(15))) .addChild(Group() .setId(Int64ResultNode(30)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(20)))))); Group b = Group() .setId(NullResultNode()) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(5))) .addChild(Group() .setId(Int64ResultNode(10)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(10))) .addChild(Group() .setId(Int64ResultNode(20)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(15))) .addChild(Group() .setId(Int64ResultNode(30)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(20)))))); Group expect_all = Group() .setId(NullResultNode()) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(10))) .addChild(Group() .setId(Int64ResultNode(10)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(20))) .addChild(Group() .setId(Int64ResultNode(20)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(30))) .addChild(Group() .setId(Int64ResultNode(30)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(40)))))); Group expect_0 = Group() .setId(NullResultNode()) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(5))) .addChild(Group() .setId(Int64ResultNode(10)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(20))) .addChild(Group() .setId(Int64ResultNode(20)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(30))) .addChild(Group() .setId(Int64ResultNode(30)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(40)))))); Group expect_1 = Group() .setId(NullResultNode()) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(5))) .addChild(Group() .setId(Int64ResultNode(10)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(10))) .addChild(Group() .setId(Int64ResultNode(20)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(30))) .addChild(Group() .setId(Int64ResultNode(30)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(40)))))); Group expect_2 = Group() .setId(NullResultNode()) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(5))) .addChild(Group() .setId(Int64ResultNode(10)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(10))) .addChild(Group() .setId(Int64ResultNode(20)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(15))) .addChild(Group() .setId(Int64ResultNode(30)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(40)))))); Group expect_3 = Group() .setId(NullResultNode()) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(5))) .addChild(Group() .setId(Int64ResultNode(10)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(10))) .addChild(Group() .setId(Int64ResultNode(20)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(15))) .addChild(Group() .setId(Int64ResultNode(30)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(20)))))); EXPECT_TRUE(testMerge(request.unchain().setFirstLevel(0).setLastLevel(3).setRoot(a), @@ -881,9 +922,8 @@ Test::testMergeLevels() void Test::testMergeGroups() { - Grouping request = Grouping() - .addLevel(GroupingLevel() - .setExpression(AttributeNode("attr"))); + Grouping request; + request.addLevel(createGL(MU<AttributeNode>("attr"))); Group a = Group() .setId(NullResultNode()) @@ -944,48 +984,36 @@ Test::testMergeGroups() void Test::testMergeTrees() { - Grouping request = Grouping() - .addLevel(GroupingLevel() - .setMaxGroups(3) - .setExpression(AttributeNode("c1")) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")))) - .addLevel(GroupingLevel() - .setMaxGroups(2) - .setExpression(AttributeNode("c2")) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")))) - .addLevel(GroupingLevel() - .setMaxGroups(1) - .setExpression(AttributeNode("c3")) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")))); + Grouping request; + request.addLevel(createGL(3, MU<AttributeNode>("c1"), MU<AttributeNode>("s1"))) + .addLevel(createGL(2, MU<AttributeNode>("c2"), MU<AttributeNode>("s2"))) + .addLevel(createGL(1, MU<AttributeNode>("c3"), MU<AttributeNode>("s3"))); Group a = Group() .setId(NullResultNode()) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(100))) .addChild(Group().setId(Int64ResultNode(4)).setRank(RawRank(10))) .addChild(Group() .setId(Int64ResultNode(5)) .setRank(RawRank(5)) // merged with 200 rank node .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(100))) .addChild(Group().setId(Int64ResultNode(4)).setRank(RawRank(10))) .addChild(Group() .setId(Int64ResultNode(5)) .setRank(RawRank(500)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(100))) .addChild(Group().setId(Int64ResultNode(4)).setRank(RawRank(10))) .addChild(Group() .setId(Int64ResultNode(5)) .setRank(RawRank(200)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(100))) ) ) @@ -995,21 +1023,21 @@ Test::testMergeTrees() .setId(Int64ResultNode(10)) .setRank(RawRank(100)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(100))) // dummy child would be picked up here .addChild(Group() .setId(Int64ResultNode(15)) .setRank(RawRank(200)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(100))) .addChild(Group().setId(Int64ResultNode(14)).setRank(RawRank(10))) .addChild(Group() .setId(Int64ResultNode(15)) .setRank(RawRank(300)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(100))) ) ) @@ -1019,14 +1047,14 @@ Test::testMergeTrees() .setId(Int64ResultNode(15)) .setRank(RawRank(300)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(100))) .addChild(Group().setId(Int64ResultNode(19)).setRank(RawRank(10))) .addChild(Group() .setId(Int64ResultNode(20)) .setRank(RawRank(100)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(100))) ) ); @@ -1034,28 +1062,28 @@ Test::testMergeTrees() Group b = Group() .setId(NullResultNode()) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(100))) .addChild(Group().setId(Int64ResultNode(4)).setRank(RawRank(10))) .addChild(Group() .setId(Int64ResultNode(5)) .setRank(RawRank(200)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(100))) .addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(10))) .addChild(Group() .setId(Int64ResultNode(10)) .setRank(RawRank(400)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(100))) .addChild(Group().setId(Int64ResultNode(9)).setRank(RawRank(10))) .addChild(Group() .setId(Int64ResultNode(10)) .setRank(RawRank(100)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(100))) ) ) @@ -1065,14 +1093,14 @@ Test::testMergeTrees() .setId(Int64ResultNode(10)) .setRank(RawRank(100)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(100))) // dummy child would be picket up here .addChild(Group() .setId(Int64ResultNode(15)) .setRank(RawRank(200)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(100))) ) ) @@ -1081,21 +1109,21 @@ Test::testMergeTrees() .setId(Int64ResultNode(15)) .setRank(RawRank(5)) // merged with 300 rank node .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(100))) .addChild(Group().setId(Int64ResultNode(19)).setRank(RawRank(10))) .addChild(Group() .setId(Int64ResultNode(20)) .setRank(RawRank(5)) // merged with 100 rank node .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(100))) .addChild(Group().setId(Int64ResultNode(19)).setRank(RawRank(10))) .addChild(Group() .setId(Int64ResultNode(20)) .setRank(RawRank(500)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(100))) ) ) @@ -1104,14 +1132,14 @@ Test::testMergeTrees() .setId(Int64ResultNode(25)) .setRank(RawRank(300)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(100))) .addChild(Group().setId(Int64ResultNode(24)).setRank(RawRank(10))) .addChild(Group() .setId(Int64ResultNode(25)) .setRank(RawRank(400)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(100))) ) ) @@ -1120,25 +1148,25 @@ Test::testMergeTrees() Group expect = Group() .setId(NullResultNode()) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(200))) .addChild(Group() .setId(Int64ResultNode(5)) .setRank(RawRank(200)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(200))) .addChild(Group() .setId(Int64ResultNode(5)) .setRank(RawRank(500)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(100))) .addChild(Group() .setId(Int64ResultNode(5)) .setRank(RawRank(200)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(100))) ) ) @@ -1146,13 +1174,13 @@ Test::testMergeTrees() .setId(Int64ResultNode(10)) .setRank(RawRank(400)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(100))) .addChild(Group() .setId(Int64ResultNode(10)) .setRank(RawRank(100)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(100))) ) ) @@ -1161,19 +1189,19 @@ Test::testMergeTrees() .setId(Int64ResultNode(10)) .setRank(RawRank(100)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(200))) .addChild(Group() .setId(Int64ResultNode(15)) .setRank(RawRank(200)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(200))) .addChild(Group() .setId(Int64ResultNode(15)) .setRank(RawRank(300)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(100))) ) ) @@ -1182,19 +1210,19 @@ Test::testMergeTrees() .setId(Int64ResultNode(15)) .setRank(RawRank(300)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(200))) .addChild(Group() .setId(Int64ResultNode(20)) .setRank(RawRank(100)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(200))) .addChild(Group() .setId(Int64ResultNode(20)) .setRank(RawRank(500)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(100))) ) ) @@ -1202,13 +1230,13 @@ Test::testMergeTrees() .setId(Int64ResultNode(25)) .setRank(RawRank(300)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(100))) .addChild(Group() .setId(Int64ResultNode(25)) .setRank(RawRank(400)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(100))) ) ) @@ -1361,39 +1389,30 @@ Test::testPruneComplex() void Test::testPartialMerging() { - Grouping baseRequest = Grouping() - .addLevel(GroupingLevel() - .setExpression(AttributeNode("c1")) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")))) - .addLevel(GroupingLevel() - .setExpression(AttributeNode("c2")) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")))) - .addLevel(GroupingLevel() - .setExpression(AttributeNode("c3")) - .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")))); + Grouping baseRequest; + baseRequest.addLevel(createGL(MU<AttributeNode>("c1"), MU<AttributeNode>("s1"))) + .addLevel(createGL(MU<AttributeNode>("c2"), MU<AttributeNode>("s2"))) + .addLevel(createGL(MU<AttributeNode>("c3"), MU<AttributeNode>("s3"))); // Cached result Group cached = Group() .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(110))) .addChild(Group() .setId(Int64ResultNode(5)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(10))) .addChild(Group() .setId(Int64ResultNode(13)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(100))) .addChild(Group() .setId(Int64ResultNode(14)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(100))) ) ) @@ -1401,17 +1420,17 @@ Test::testPartialMerging() .addChild(Group() .setId(Int64ResultNode(10)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(100))) .addChild(Group() .setId(Int64ResultNode(15)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(100))) .addChild(Group() .setId(Int64ResultNode(22)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s3")) + .setExpression(MU<AttributeNode>("s3")) .setResult(Int64ResultNode(100))) ) ) @@ -1422,23 +1441,23 @@ Test::testPartialMerging() Grouping request = baseRequest.unchain().setFirstLevel(0).setLastLevel(0); Group incoming = Group() .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(0))); Group expected = Group() .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(110))) .addChild(Group() .setId(Int64ResultNode(5)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(0))) ) .addChild(Group() .setId(Int64ResultNode(10)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(0))) ); EXPECT_TRUE(testPartialMerge(request.unchain().setRoot(incoming), request.unchain().setLastLevel(3).setRoot(cached), expected)); @@ -1448,81 +1467,81 @@ Test::testPartialMerging() Grouping request = baseRequest.unchain().setFirstLevel(1).setLastLevel(1); Group incoming = Group() .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(200))) .addChild(Group() .setId(Int64ResultNode(3)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(0))) ) .addChild(Group() .setId(Int64ResultNode(5)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(0))) ) .addChild(Group() .setId(Int64ResultNode(7)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(0))) ) .addChild(Group() .setId(Int64ResultNode(10)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(0)))) .addChild(Group() .setId(Int64ResultNode(33)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(0))) ); Group expected = Group() .addResult(SumAggregationResult() - .setExpression(AttributeNode("s0")) + .setExpression(MU<AttributeNode>("s0")) .setResult(Int64ResultNode(200))) .addChild(Group() .setId(Int64ResultNode(3)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(0))) ) .addChild(Group() .setId(Int64ResultNode(5)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(10))) .addChild(Group() .setId(Int64ResultNode(13)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(0))) ) ) .addChild(Group() .setId(Int64ResultNode(7)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(0))) ) .addChild(Group() .setId(Int64ResultNode(10)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(100))) .addChild(Group() .setId(Int64ResultNode(15)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s2")) + .setExpression(MU<AttributeNode>("s2")) .setResult(Int64ResultNode(0))) ) ) .addChild(Group() .setId(Int64ResultNode(33)) .addResult(SumAggregationResult() - .setExpression(AttributeNode("s1")) + .setExpression(MU<AttributeNode>("s1")) .setResult(Int64ResultNode(0))) ); EXPECT_TRUE(testPartialMerge(request.unchain().setRoot(incoming), request.unchain().setFirstLevel(0).setLastLevel(3).setRoot(cached), expected)); @@ -1536,22 +1555,17 @@ void Test::testPruneSimple() { { - Grouping request = Grouping() - .addLevel(GroupingLevel() - .setExpression(AttributeNode("attr"))) - .setFirstLevel(1) - .setLastLevel(1); + Grouping request; + request.addLevel(createGL(MU<AttributeNode>("attr"))).setFirstLevel(1).setLastLevel(1); Group a = Group() .addChild(Group().setId(StringResultNode("foo"))) .addChild(Group().setId(StringResultNode("bar"))) .addChild(Group().setId(StringResultNode("baz"))); - Group b = Group() - .addChild(Group().setId(StringResultNode("foo"))); + Group b = Group().addChild(Group().setId(StringResultNode("foo"))); - Group expect = Group() - .addChild(Group().setId(StringResultNode("foo"))); + Group expect = Group().addChild(Group().setId(StringResultNode("foo"))); EXPECT_TRUE(testPrune(request.unchain().setFirstLevel(0).setRoot(a), request.unchain().setRoot(b), expect)); } @@ -1568,33 +1582,26 @@ Test::testTopN() ctx.result().add(0).add(1).add(2); ctx.add(IntAttrBuilder("foo").add(3).add(7).add(15).sp()); - Grouping request = Grouping() - .setRoot(Group() - .addResult(CountAggregationResult() - .setExpression(ConstantNode(Int64ResultNode(0))) - ) - ); + Grouping request; + request.setRoot(Group().addResult(CountAggregationResult().setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0))))); { - Group expect = Group() - .addResult(CountAggregationResult().setCount(3) - .setExpression(ConstantNode(Int64ResultNode(0))) - ); + Group expect; + expect.addResult(CountAggregationResult().setCount(3).setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0)))); EXPECT_TRUE(testAggregation(ctx, request, expect)); } { - Group expect = Group() - .addResult(CountAggregationResult().setCount(1) - .setExpression(ConstantNode(Int64ResultNode(0))) - ); + Group expect = Group().addResult(CountAggregationResult() + .setCount(1) + .setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0)))); EXPECT_TRUE(testAggregation(ctx, request.setTopN(1), expect)); } { - Grouping request2 = Grouping() - .addLevel(GroupingLevel() - .addAggregationResult(SumAggregationResult()) - .addOrderBy(AggregationRefNode(0), false)); + Grouping request2; + request2.addLevel(std::move(GroupingLevel() + .addAggregationResult(MU<SumAggregationResult>()) + .addOrderBy(MU<AggregationRefNode>(0), false))); EXPECT_TRUE(request2.needResort()); request2.setTopN(0); EXPECT_TRUE(request2.needResort()); @@ -1616,17 +1623,11 @@ Test::testCount() ctx.result().add(0).add(1).add(2); ctx.add(IntAttrBuilder("foo").add(3).add(7).add(15).sp()); - Grouping request = Grouping() - .setRoot(Group() - .addResult(CountAggregationResult() - .setExpression(ConstantNode(Int64ResultNode(0))) - ) - ); + Grouping request; + request.setRoot(Group().addResult(CountAggregationResult().setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0))))); - Group expect = Group() - .addResult(CountAggregationResult().setCount(3) - .setExpression(ConstantNode(Int64ResultNode(0))) - ); + Group expect; + expect.addResult(CountAggregationResult().setCount(3).setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0)))); EXPECT_TRUE(testAggregation(ctx, request, expect)); } @@ -1653,7 +1654,7 @@ Test::testFS4HitCollection() .setRoot(Group() .addResult(HitsAggregationResult() .setMaxHits(3) - .setExpression(ConstantNode(Int64ResultNode(0)))) + .setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0)))) ); Group expect = Group() @@ -1663,7 +1664,7 @@ Test::testFS4HitCollection() .addHit(FS4Hit(25, 25.0)) .addHit(FS4Hit(20, 20.0)) .sort() - .setExpression(ConstantNode(Int64ResultNode(0)))); + .setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0)))); EXPECT_TRUE(testAggregation(ctx, request, expect)); } @@ -1673,7 +1674,7 @@ Test::testFS4HitCollection() .setRoot(Group() .addResult(HitsAggregationResult() .setMaxHits(3) - .setExpression(ConstantNode(Int64ResultNode(0)))) + .setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0)))) ); Group expect = Group() @@ -1684,7 +1685,7 @@ Test::testFS4HitCollection() .addHit(FS4Hit(20, 20.0)) .addHit(FS4Hit(10, 10.0)) .sort() - .setExpression(ConstantNode(Int64ResultNode(0)))); + .setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0)))); Group a = Group() .setId(NullResultNode()) @@ -1694,7 +1695,7 @@ Test::testFS4HitCollection() .addHit(FS4Hit(1, 5.0)) .addHit(FS4Hit(2, 4.0)) .sort() - .setExpression(ConstantNode(Int64ResultNode(0)))); + .setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0)))); Group b = Group() .setId(NullResultNode()) @@ -1704,7 +1705,7 @@ Test::testFS4HitCollection() .addHit(FS4Hit(3, 7.0)) .addHit(FS4Hit(4, 6.0)) .sort() - .setExpression(ConstantNode(Int64ResultNode(0)))); + .setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0)))); Group c = Group() .setId(NullResultNode()) @@ -1714,7 +1715,7 @@ Test::testFS4HitCollection() .addHit(FS4Hit(5, 9.0)) .addHit(FS4Hit(6, 8.0)) .sort() - .setExpression(ConstantNode(Int64ResultNode(0)))); + .setExpression(MU<ConstantNode>(MU<Int64ResultNode>(0)))); EXPECT_TRUE(testMerge(request.unchain().setRoot(a), request.unchain().setRoot(b), request.unchain().setRoot(c), expect)); EXPECT_TRUE(testMerge(request.unchain().setRoot(b), request.unchain().setRoot(c), request.unchain().setRoot(a), expect)); @@ -1770,9 +1771,9 @@ Test::checkBucket(const NumericResultNode &width, const NumericResultNode &value } else { return EXPECT_TRUE(false); } - Grouping request = Grouping() - .addLevel(GroupingLevel() - .setExpression(FixedWidthBucketFunctionNode(AttributeNode("attr")).setWidth(width))); + std::unique_ptr<FixedWidthBucketFunctionNode> fixed = MU<FixedWidthBucketFunctionNode>(MU<AttributeNode>("attr")); + fixed->setWidth(width); + Grouping request = Grouping().addLevel(createGL(std::move(fixed))); Group expect = Group().addChild(Group().setId(bucket)); return testAggregation(ctx, request, expect); } @@ -1889,11 +1890,11 @@ struct RunDiff { ~RunDiff() { system("diff -u lhs.out rhs.out > diff.txt"); }}; int Test::Main() { - RunDiff runDiff; - (void) runDiff; - TEST_DEBUG("lhs.out", "rhs.out"); + //RunDiff runDiff; + //(void) runDiff; + //TEST_DEBUG("lhs.out", "rhs.out"); TEST_INIT("grouping_test"); - testAggregationSimple(); + TEST_DO(testAggregationSimple()); testAggregationLevels(); testAggregationMaxGroups(); testAggregationGroupOrder(); |