summaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests/grouping/grouping_serialization_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'searchlib/src/tests/grouping/grouping_serialization_test.cpp')
-rw-r--r--searchlib/src/tests/grouping/grouping_serialization_test.cpp153
1 files changed, 76 insertions, 77 deletions
diff --git a/searchlib/src/tests/grouping/grouping_serialization_test.cpp b/searchlib/src/tests/grouping/grouping_serialization_test.cpp
index a7a197d44d5..0586594ec5c 100644
--- a/searchlib/src/tests/grouping/grouping_serialization_test.cpp
+++ b/searchlib/src/tests/grouping/grouping_serialization_test.cpp
@@ -27,6 +27,8 @@ document::GlobalId getGlobalId(uint32_t docId) {
.getGlobalId();
}
+#define MU std::make_unique
+
struct Fixture {
// Set WRITE_FILES to true to generate new expected serialization files.
const bool WRITE_FILES = false;
@@ -69,28 +71,27 @@ struct Fixture {
Identifiable::UP newObj = Identifiable::create(stream);
if (!EXPECT_TRUE(newObj.get() != 0)) {
- LOG(error, "object of class '%s' resulted in empty echo",
- obj.getClass().name());
+ LOG(error, "object of class '%s' resulted in empty echo", obj.getClass().name());
return;
}
if (EXPECT_EQUAL(obj.asString(), newObj->asString())
&& EXPECT_TRUE(newObj->cmp(obj) == 0)
&& EXPECT_TRUE(obj.cmp(*newObj) == 0))
{
- LOG(info, "object of class '%s' passed echo test : %s",
- obj.getClass().name(), newObj->asString().c_str());
+ LOG(info, "object of class '%s' passed echo test : %s", obj.getClass().name(), newObj->asString().c_str());
} else {
- LOG(error, "object of class '%s' FAILED echo test",
- obj.getClass().name());
+ LOG(error, "object of class '%s' FAILED echo test", obj.getClass().name());
}
}
};
//-----------------------------------------------------------------------------
-ExpressionNode::CP createDummyExpression() {
- return AddFunctionNode().addArg(ConstantNode(Int64ResultNode(2)))
- .addArg(ConstantNode(Int64ResultNode(2)));
+ExpressionNode::UP
+createDummyExpression() {
+ std::unique_ptr<AddFunctionNode> f = MU<AddFunctionNode>();
+ f->addArg(MU<ConstantNode>(MU<Int64ResultNode>(2))).addArg(MU<ConstantNode>(MU<Int64ResultNode>(2)));
+ return f;
}
//-----------------------------------------------------------------------------
@@ -150,83 +151,82 @@ TEST_F("testSpecialNodes", Fixture("testSpecialNodes")) {
TEST_F("testFunctionNodes", Fixture("testFunctionNodes")) {
f.checkObject(AddFunctionNode()
- .addArg(ConstantNode(Int64ResultNode(7)))
- .addArg(ConstantNode(Int64ResultNode(8)))
- .addArg(ConstantNode(Int64ResultNode(9))));
+ .addArg(MU<ConstantNode>(MU<Int64ResultNode>(7)))
+ .addArg(MU<ConstantNode>(MU<Int64ResultNode>(8)))
+ .addArg(MU<ConstantNode>(MU<Int64ResultNode>(9))));
f.checkObject(XorFunctionNode()
- .addArg(ConstantNode(Int64ResultNode(7)))
- .addArg(ConstantNode(Int64ResultNode(8)))
- .addArg(ConstantNode(Int64ResultNode(9))));
+ .addArg(MU<ConstantNode>(MU<Int64ResultNode>(7)))
+ .addArg(MU<ConstantNode>(MU<Int64ResultNode>(8)))
+ .addArg(MU<ConstantNode>(MU<Int64ResultNode>(9))));
f.checkObject(MultiplyFunctionNode()
- .addArg(ConstantNode(Int64ResultNode(7)))
- .addArg(ConstantNode(Int64ResultNode(8)))
- .addArg(ConstantNode(Int64ResultNode(9))));
+ .addArg(MU<ConstantNode>(MU<Int64ResultNode>(7)))
+ .addArg(MU<ConstantNode>(MU<Int64ResultNode>(8)))
+ .addArg(MU<ConstantNode>(MU<Int64ResultNode>(9))));
f.checkObject(DivideFunctionNode()
- .addArg(ConstantNode(Int64ResultNode(7)))
- .addArg(ConstantNode(Int64ResultNode(8)))
- .addArg(ConstantNode(Int64ResultNode(9))));
+ .addArg(MU<ConstantNode>(MU<Int64ResultNode>(7)))
+ .addArg(MU<ConstantNode>(MU<Int64ResultNode>(8)))
+ .addArg(MU<ConstantNode>(MU<Int64ResultNode>(9))));
f.checkObject(ModuloFunctionNode()
- .addArg(ConstantNode(Int64ResultNode(7)))
- .addArg(ConstantNode(Int64ResultNode(8)))
- .addArg(ConstantNode(Int64ResultNode(9))));
+ .addArg(MU<ConstantNode>(MU<Int64ResultNode>(7)))
+ .addArg(MU<ConstantNode>(MU<Int64ResultNode>(8)))
+ .addArg(MU<ConstantNode>(MU<Int64ResultNode>(9))));
f.checkObject(MinFunctionNode()
- .addArg(ConstantNode(Int64ResultNode(7)))
- .addArg(ConstantNode(Int64ResultNode(8)))
- .addArg(ConstantNode(Int64ResultNode(9))));
+ .addArg(MU<ConstantNode>(MU<Int64ResultNode>(7)))
+ .addArg(MU<ConstantNode>(MU<Int64ResultNode>(8)))
+ .addArg(MU<ConstantNode>(MU<Int64ResultNode>(9))));
f.checkObject(MaxFunctionNode()
- .addArg(ConstantNode(Int64ResultNode(7)))
- .addArg(ConstantNode(Int64ResultNode(8)))
- .addArg(ConstantNode(Int64ResultNode(9))));
- f.checkObject(TimeStampFunctionNode(ConstantNode(Int64ResultNode(7)),
+ .addArg(MU<ConstantNode>(MU<Int64ResultNode>(7)))
+ .addArg(MU<ConstantNode>(MU<Int64ResultNode>(8)))
+ .addArg(MU<ConstantNode>(MU<Int64ResultNode>(9))));
+ f.checkObject(TimeStampFunctionNode(MU<ConstantNode>(MU<Int64ResultNode>(7)),
TimeStampFunctionNode::Hour, true));
- f.checkObject(ZCurveFunctionNode(ConstantNode(Int64ResultNode(7)),
+ f.checkObject(ZCurveFunctionNode(MU<ConstantNode>(MU<Int64ResultNode>(7)),
ZCurveFunctionNode::X));
- f.checkObject(ZCurveFunctionNode(ConstantNode(Int64ResultNode(7)),
+ f.checkObject(ZCurveFunctionNode(MU<ConstantNode>(MU<Int64ResultNode>(7)),
ZCurveFunctionNode::Y));
- f.checkObject(NegateFunctionNode(ConstantNode(Int64ResultNode(7))));
- f.checkObject(SortFunctionNode(ConstantNode(Int64ResultNode(7))));
- f.checkObject(NormalizeSubjectFunctionNode(ConstantNode(
- StringResultNode("foo"))));
- f.checkObject(ReverseFunctionNode(ConstantNode(Int64ResultNode(7))));
- f.checkObject(MD5BitFunctionNode(ConstantNode(Int64ResultNode(7)), 64));
- f.checkObject(XorBitFunctionNode(ConstantNode(Int64ResultNode(7)), 64));
+ f.checkObject(NegateFunctionNode(MU<ConstantNode>(MU<Int64ResultNode>(7))));
+ f.checkObject(SortFunctionNode(MU<ConstantNode>(MU<Int64ResultNode>(7))));
+ f.checkObject(NormalizeSubjectFunctionNode(MU<ConstantNode>(MU<StringResultNode>("foo"))));
+ f.checkObject(ReverseFunctionNode(MU<ConstantNode>(MU<Int64ResultNode>(7))));
+ f.checkObject(MD5BitFunctionNode(MU<ConstantNode>(MU<Int64ResultNode>(7)), 64));
+ f.checkObject(XorBitFunctionNode(MU<ConstantNode>(MU<Int64ResultNode>(7)), 64));
f.checkObject(CatFunctionNode()
- .addArg(ConstantNode(Int64ResultNode(7)))
- .addArg(ConstantNode(Int64ResultNode(8)))
- .addArg(ConstantNode(Int64ResultNode(9))));
+ .addArg(MU<ConstantNode>(MU<Int64ResultNode>(7)))
+ .addArg(MU<ConstantNode>(MU<Int64ResultNode>(8)))
+ .addArg(MU<ConstantNode>(MU<Int64ResultNode>(9))));
f.checkObject(FixedWidthBucketFunctionNode());
- f.checkObject(FixedWidthBucketFunctionNode(AttributeNode("foo")));
- f.checkObject(FixedWidthBucketFunctionNode(AttributeNode("foo"))
+ f.checkObject(FixedWidthBucketFunctionNode(MU<AttributeNode>("foo")));
+ f.checkObject(FixedWidthBucketFunctionNode(MU<AttributeNode>("foo"))
.setWidth(Int64ResultNode(10)));
- f.checkObject(FixedWidthBucketFunctionNode(AttributeNode("foo"))
+ f.checkObject(FixedWidthBucketFunctionNode(MU<AttributeNode>("foo"))
.setWidth(FloatResultNode(10.0)));
f.checkObject(RangeBucketPreDefFunctionNode());
- f.checkObject(RangeBucketPreDefFunctionNode(AttributeNode("foo")));
- f.checkObject(DebugWaitFunctionNode(ConstantNode(Int64ResultNode(5)),
+ f.checkObject(RangeBucketPreDefFunctionNode(MU<AttributeNode>("foo")));
+ f.checkObject(DebugWaitFunctionNode(MU<ConstantNode>(MU<Int64ResultNode>(5)),
3.3, false));
}
TEST_F("testAggregatorResults", Fixture("testAggregatorResults")) {
f.checkObject(SumAggregationResult()
- .setExpression(AttributeNode("attributeA"))
+ .setExpression(MU<AttributeNode>("attributeA"))
.setResult(Int64ResultNode(7)));
f.checkObject(XorAggregationResult()
.setXor(Int64ResultNode(7))
- .setExpression(AttributeNode("attributeA")));
+ .setExpression(MU<AttributeNode>("attributeA")));
f.checkObject(CountAggregationResult()
.setCount(7)
- .setExpression(AttributeNode("attributeA")));
+ .setExpression(MU<AttributeNode>("attributeA")));
f.checkObject(MinAggregationResult()
- .setExpression(AttributeNode("attributeA"))
+ .setExpression(MU<AttributeNode>("attributeA"))
.setResult(Int64ResultNode(7)));
f.checkObject(MaxAggregationResult()
- .setExpression(AttributeNode("attributeA"))
+ .setExpression(MU<AttributeNode>("attributeA"))
.setResult(Int64ResultNode(7)));
f.checkObject(AverageAggregationResult()
- .setExpression(AttributeNode("attributeA"))
+ .setExpression(MU<AttributeNode>("attributeA"))
.setResult(Int64ResultNode(7)));
ExpressionCountAggregationResult expression_count;
- expression_count.setExpression(ConstantNode(Int64ResultNode(67)))
+ expression_count.setExpression(MU<ConstantNode>(MU<Int64ResultNode>(67)))
.aggregate(DocId(42), HitRank(21));
f.checkObject(expression_count);
}
@@ -245,7 +245,7 @@ TEST_F("testHitCollection", Fixture("testHitCollection")) {
.addHit(FS4Hit(0, 3.0).setGlobalId(getGlobalId(30)))
.addHit(FS4Hit(0, 4.0).setGlobalId(getGlobalId(40)))
.addHit(FS4Hit(0, 5.0).setGlobalId(getGlobalId(50)))
- .setExpression(ConstantNode(Int64ResultNode(5))));
+ .setExpression(MU<ConstantNode>(MU<Int64ResultNode>(5))));
f.checkObject(HitsAggregationResult()
.setMaxHits(3)
.addHit(FS4Hit(0, 1.0).setGlobalId(getGlobalId(10))
@@ -254,20 +254,20 @@ TEST_F("testHitCollection", Fixture("testHitCollection")) {
.setDistributionKey(200))
.addHit(FS4Hit(0, 3.0).setGlobalId(getGlobalId(30))
.setDistributionKey(300))
- .setExpression(ConstantNode(Int64ResultNode(5))));
+ .setExpression(MU<ConstantNode>(MU<Int64ResultNode>(5))));
f.checkObject(HitsAggregationResult()
.setMaxHits(3)
.addHit(VdsHit("10", 1.0).setSummary("100", 3))
.addHit(VdsHit("20", 2.0).setSummary("200", 3))
.addHit(VdsHit("30", 3.0).setSummary("300", 3))
- .setExpression(ConstantNode(Int64ResultNode(5))));
+ .setExpression(MU<ConstantNode>(MU<Int64ResultNode>(5))));
}
TEST_F("testGroupingLevel", Fixture("testGroupingLevel")) {
f.checkObject(GroupingLevel()
.setMaxGroups(100)
.setExpression(createDummyExpression())
- .addAggregationResult(SumAggregationResult()
+ .addResult(SumAggregationResult()
.setExpression(createDummyExpression())));
}
@@ -279,9 +279,9 @@ TEST_F("testGroup", Fixture("testGroup")) {
.addChild(Group().setId(Int64ResultNode(110)))
.addChild(Group().setId(Int64ResultNode(120))
.setRank(20.5)
- .addAggregationResult(SumAggregationResult()
+ .addResult(SumAggregationResult()
.setExpression(createDummyExpression()))
- .addAggregationResult(SumAggregationResult()
+ .addResult(SumAggregationResult()
.setExpression(createDummyExpression())))
.addChild(Group().setId(Int64ResultNode(130))
.addChild(Group().setId(Int64ResultNode(131)))));
@@ -293,32 +293,31 @@ TEST_F("testGrouping", Fixture("testGrouping")) {
.addLevel(GroupingLevel()
.setMaxGroups(100)
.setExpression(createDummyExpression())
- .addAggregationResult(SumAggregationResult()
+ .addResult(SumAggregationResult()
.setExpression(createDummyExpression())))
.addLevel(GroupingLevel()
.setMaxGroups(10)
.setExpression(createDummyExpression())
- .addAggregationResult(SumAggregationResult()
+ .addResult(SumAggregationResult()
.setExpression(createDummyExpression()))
- .addAggregationResult(SumAggregationResult()
+ .addResult(SumAggregationResult()
.setExpression(createDummyExpression()))));
f.checkObject(Grouping()
.addLevel(GroupingLevel()
- .setExpression(AttributeNode("folder"))
- .addAggregationResult(XorAggregationResult()
- .setExpression(MD5BitFunctionNode(
- AttributeNode("docid"), 64)))
- .addAggregationResult(SumAggregationResult()
- .setExpression(MinFunctionNode()
- .addArg(AttributeNode("attribute1"))
- .addArg(AttributeNode("attribute2")))
+ .setExpression(MU<AttributeNode>("folder"))
+ .addResult(XorAggregationResult()
+ .setExpression(MU<MD5BitFunctionNode>(MU<AttributeNode>("docid"), 64)))
+ .addResult(SumAggregationResult()
+ .setExpression(ExpressionNode::UP(MinFunctionNode()
+ .addArg(MU<AttributeNode>("attribute1"))
+ .addArg(MU<AttributeNode>("attribute2")).clone()))
)
- .addAggregationResult(XorAggregationResult()
+ .addResult(XorAggregationResult()
.setExpression(
- XorBitFunctionNode(CatFunctionNode()
- .addArg(GetDocIdNamespaceSpecificFunctionNode())
- .addArg(DocumentFieldNode("folder"))
- .addArg(DocumentFieldNode("flags")), 64)))));
+ ExpressionNode::UP(XorBitFunctionNode(ExpressionNode::UP(CatFunctionNode()
+ .addArg(MU<GetDocIdNamespaceSpecificFunctionNode>())
+ .addArg(MU<DocumentFieldNode>("folder"))
+ .addArg(MU<DocumentFieldNode>("flags")).clone()), 64).clone())))));
}
} // namespace