summaryrefslogtreecommitdiff
path: root/src/mongo/db/exec/sbe/expressions/sbe_lambda_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/exec/sbe/expressions/sbe_lambda_test.cpp')
-rw-r--r--src/mongo/db/exec/sbe/expressions/sbe_lambda_test.cpp36
1 files changed, 19 insertions, 17 deletions
diff --git a/src/mongo/db/exec/sbe/expressions/sbe_lambda_test.cpp b/src/mongo/db/exec/sbe/expressions/sbe_lambda_test.cpp
index df8a2835244..a355b12873b 100644
--- a/src/mongo/db/exec/sbe/expressions/sbe_lambda_test.cpp
+++ b/src/mongo/db/exec/sbe/expressions/sbe_lambda_test.cpp
@@ -30,9 +30,11 @@
#include "mongo/db/exec/sbe/expression_test_base.h"
namespace mongo::sbe {
-using SBELambdaTest = EExpressionTestFixture;
+using SBELambdaTest = GoldenEExpressionTestFixture;
TEST_F(SBELambdaTest, TraverseP_AddOneToArray) {
+ auto& os = gctx->outStream();
+
value::ViewOfValueAccessor slotAccessor;
auto argSlot = bindAccessor(&slotAccessor);
FrameId frame = 10;
@@ -44,22 +46,21 @@ TEST_F(SBELambdaTest, TraverseP_AddOneToArray) {
makeE<EVariable>(frame, 0),
makeC(makeInt32(1)))),
makeC(makeNothing())));
+ printInputExpression(os, *expr);
+
auto compiledExpr = compileExpression(*expr);
+ printCompiledExpression(os, *compiledExpr);
auto bsonArr = BSON_ARRAY(1 << 2 << 3);
slotAccessor.reset(value::TypeTags::bsonArray,
value::bitcastFrom<const char*>(bsonArr.objdata()));
- auto [tag, val] = runCompiledExpression(compiledExpr.get());
- value::ValueGuard guard(tag, val);
-
- auto [tagExpected, valExpected] = makeArray(BSON_ARRAY(2 << 3 << 4));
- value::ValueGuard expectedGuard(tagExpected, valExpected);
-
- ASSERT_THAT(std::make_pair(tag, val), ValueEq(std::make_pair(tagExpected, valExpected)));
+ executeAndPrintVariation(os, *compiledExpr);
}
TEST_F(SBELambdaTest, TraverseF_OpEq) {
+ auto& os = gctx->outStream();
+
value::ViewOfValueAccessor slotAccessor;
auto argSlot = bindAccessor(&slotAccessor);
FrameId frame = 10;
@@ -71,19 +72,22 @@ TEST_F(SBELambdaTest, TraverseF_OpEq) {
makeE<EVariable>(frame, 0),
makeC(makeInt32(3)))),
makeC(makeNothing())));
+ printInputExpression(os, *expr);
+
auto compiledExpr = compileExpression(*expr);
+ printCompiledExpression(os, *compiledExpr);
+
auto bsonArr = BSON_ARRAY(1 << 2 << 3 << 4);
slotAccessor.reset(value::TypeTags::bsonArray,
value::bitcastFrom<const char*>(bsonArr.objdata()));
- auto [tag, val] = runCompiledExpression(compiledExpr.get());
-
- value::ValueGuard guard(tag, val);
- ASSERT_THAT(std::make_pair(tag, val), ValueEq(makeBool(true)));
+ executeAndPrintVariation(os, *compiledExpr);
}
TEST_F(SBELambdaTest, TraverseF_WithLocalBind) {
+ auto& os = gctx->outStream();
+
value::ViewOfValueAccessor slotAccessor;
auto argSlot = bindAccessor(&slotAccessor);
FrameId frame1 = 10;
@@ -101,22 +105,20 @@ TEST_F(SBELambdaTest, TraverseF_WithLocalBind) {
sbe::makeE<EVariable>(frame2, 1),
sbe::makeE<EVariable>(frame2, 2));
-
auto expr = sbe::makeE<ELocalBind>(
frame2,
makeEs(makeE<EVariable>(argSlot), makeC(makeInt32(10)), makeC(makeInt32(20))),
std::move(ifExpr));
+ printInputExpression(os, *expr);
auto compiledExpr = compileExpression(*expr);
+ printCompiledExpression(os, *compiledExpr);
auto bsonArr = BSON_ARRAY(1 << 2 << 3 << 4);
slotAccessor.reset(value::TypeTags::bsonArray,
value::bitcastFrom<const char*>(bsonArr.objdata()));
- auto [tag, val] = runCompiledExpression(compiledExpr.get());
-
- value::ValueGuard guard(tag, val);
- ASSERT_THAT(std::make_pair(tag, val), ValueEq(makeInt32(10)));
+ executeAndPrintVariation(os, *compiledExpr);
}
} // namespace mongo::sbe