summaryrefslogtreecommitdiff
path: root/src/mongo/db/pipeline/expression_date_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/pipeline/expression_date_test.cpp')
-rw-r--r--src/mongo/db/pipeline/expression_date_test.cpp84
1 files changed, 29 insertions, 55 deletions
diff --git a/src/mongo/db/pipeline/expression_date_test.cpp b/src/mongo/db/pipeline/expression_date_test.cpp
index c4b7a01db42..efe0a577ef6 100644
--- a/src/mongo/db/pipeline/expression_date_test.cpp
+++ b/src/mongo/db/pipeline/expression_date_test.cpp
@@ -64,10 +64,8 @@ TEST_F(ExpressionDateFromPartsTest, SerializesToObjectSyntax) {
{"second", Document{{"$const", 15}}},
{"millisecond", Document{{"$const", 414}}},
{"timezone", Document{{"$const", "America/Los_Angeles"_sd}}}}}});
- ASSERT_VALUE_EQ(dateExp->serialize(SerializationOptions{
- boost::make_optional(ExplainOptions::Verbosity::kQueryPlanner)}),
- expectedSerialization);
- ASSERT_VALUE_EQ(dateExp->serialize(), expectedSerialization);
+ ASSERT_VALUE_EQ(dateExp->serialize(true), expectedSerialization);
+ ASSERT_VALUE_EQ(dateExp->serialize(false), expectedSerialization);
}
TEST_F(ExpressionDateFromPartsTest, OptimizesToConstantIfAllInputsAreConstant) {
@@ -185,10 +183,8 @@ TEST_F(ExpressionDateToPartsTest, SerializesToObjectSyntax) {
Document{{"date", Document{{"$const", Date_t{}}}},
{"timezone", Document{{"$const", "Europe/London"_sd}}},
{"iso8601", Document{{"$const", false}}}}}});
- ASSERT_VALUE_EQ(dateExp->serialize(SerializationOptions{
- boost::make_optional(ExplainOptions::Verbosity::kQueryPlanner)}),
- expectedSerialization);
- ASSERT_VALUE_EQ(dateExp->serialize(), expectedSerialization);
+ ASSERT_VALUE_EQ(dateExp->serialize(true), expectedSerialization);
+ ASSERT_VALUE_EQ(dateExp->serialize(false), expectedSerialization);
}
TEST_F(ExpressionDateToPartsTest, OptimizesToConstantIfAllInputsAreConstant) {
@@ -434,28 +430,22 @@ TEST_F(DateExpressionTest, SerializesToObjectSyntax) {
Value(Document{{expName,
Document{{"date", Document{{"$const", Date_t{}}}},
{"timezone", Document{{"$const", "Europe/London"_sd}}}}}});
- ASSERT_VALUE_EQ(dateExp->serialize(SerializationOptions{
- boost::make_optional(ExplainOptions::Verbosity::kQueryPlanner)}),
- expectedSerialization);
- ASSERT_VALUE_EQ(dateExp->serialize(), expectedSerialization);
+ ASSERT_VALUE_EQ(dateExp->serialize(true), expectedSerialization);
+ ASSERT_VALUE_EQ(dateExp->serialize(false), expectedSerialization);
// Test that it serializes to the full format if given a date.
spec = BSON(expName << Date_t{});
expectedSerialization =
Value(Document{{expName, Document{{"date", Document{{"$const", Date_t{}}}}}}});
dateExp = Expression::parseExpression(expCtx.get(), spec, expCtx->variablesParseState);
- ASSERT_VALUE_EQ(dateExp->serialize(SerializationOptions{
- boost::make_optional(ExplainOptions::Verbosity::kQueryPlanner)}),
- expectedSerialization);
- ASSERT_VALUE_EQ(dateExp->serialize(), expectedSerialization);
+ ASSERT_VALUE_EQ(dateExp->serialize(true), expectedSerialization);
+ ASSERT_VALUE_EQ(dateExp->serialize(false), expectedSerialization);
// Test that it serializes to the full format if given a date within an array.
spec = BSON(expName << BSON_ARRAY(Date_t{}));
dateExp = Expression::parseExpression(expCtx.get(), spec, expCtx->variablesParseState);
- ASSERT_VALUE_EQ(dateExp->serialize(SerializationOptions{
- boost::make_optional(ExplainOptions::Verbosity::kQueryPlanner)}),
- expectedSerialization);
- ASSERT_VALUE_EQ(dateExp->serialize(), expectedSerialization);
+ ASSERT_VALUE_EQ(dateExp->serialize(true), expectedSerialization);
+ ASSERT_VALUE_EQ(dateExp->serialize(false), expectedSerialization);
}
}
@@ -608,10 +598,8 @@ TEST_F(ExpressionDateToStringTest, SerializesToObjectSyntax) {
{"timezone", Document{{"$const", "Europe/London"_sd}}},
{"onNull", Document{{"$const", "nullDefault"_sd}}}}}});
- ASSERT_VALUE_EQ(dateExp->serialize(SerializationOptions{
- boost::make_optional(ExplainOptions::Verbosity::kQueryPlanner)}),
- expectedSerialization);
- ASSERT_VALUE_EQ(dateExp->serialize(), expectedSerialization);
+ ASSERT_VALUE_EQ(dateExp->serialize(true), expectedSerialization);
+ ASSERT_VALUE_EQ(dateExp->serialize(false), expectedSerialization);
}
TEST_F(ExpressionDateToStringTest, OptimizesToConstantIfAllInputsAreConstant) {
@@ -836,10 +824,8 @@ TEST_F(ExpressionDateFromStringTest, SerializesToObjectSyntax) {
Document{{"$dateFromString",
Document{{"dateString", Document{{"$const", "2017-07-04T13:06:44Z"_sd}}}}}});
- ASSERT_VALUE_EQ(dateExp->serialize(SerializationOptions{
- boost::make_optional(ExplainOptions::Verbosity::kQueryPlanner)}),
- expectedSerialization);
- ASSERT_VALUE_EQ(dateExp->serialize(), expectedSerialization);
+ ASSERT_VALUE_EQ(dateExp->serialize(true), expectedSerialization);
+ ASSERT_VALUE_EQ(dateExp->serialize(false), expectedSerialization);
// Test that it serializes to the full format if given an object specification.
spec = BSON("$dateFromString" << BSON("dateString"
@@ -852,10 +838,8 @@ TEST_F(ExpressionDateFromStringTest, SerializesToObjectSyntax) {
Document{{"dateString", Document{{"$const", "2017-07-04T13:06:44Z"_sd}}},
{"timezone", Document{{"$const", "Europe/London"_sd}}}}}});
- ASSERT_VALUE_EQ(dateExp->serialize(SerializationOptions{
- boost::make_optional(ExplainOptions::Verbosity::kQueryPlanner)}),
- expectedSerialization);
- ASSERT_VALUE_EQ(dateExp->serialize(), expectedSerialization);
+ ASSERT_VALUE_EQ(dateExp->serialize(true), expectedSerialization);
+ ASSERT_VALUE_EQ(dateExp->serialize(false), expectedSerialization);
spec = BSON("$dateFromString" << BSON("dateString"
<< "2017-07-04T13:06:44Z"
@@ -870,10 +854,8 @@ TEST_F(ExpressionDateFromStringTest, SerializesToObjectSyntax) {
{"timezone", Document{{"$const", "Europe/London"_sd}}},
{"format", Document{{"$const", "%Y-%d-%mT%H:%M:%S"_sd}}}}}});
- ASSERT_VALUE_EQ(dateExp->serialize(SerializationOptions{
- boost::make_optional(ExplainOptions::Verbosity::kQueryPlanner)}),
- expectedSerialization);
- ASSERT_VALUE_EQ(dateExp->serialize(), expectedSerialization);
+ ASSERT_VALUE_EQ(dateExp->serialize(true), expectedSerialization);
+ ASSERT_VALUE_EQ(dateExp->serialize(false), expectedSerialization);
spec = BSON("$dateFromString" << BSON("dateString"
<< "2017-07-04T13:06:44Z"
@@ -894,10 +876,8 @@ TEST_F(ExpressionDateFromStringTest, SerializesToObjectSyntax) {
{"onNull", Document{{"$const", "nullDefault"_sd}}},
{"onError", Document{{"$const", "errorDefault"_sd}}}}}});
- ASSERT_VALUE_EQ(dateExp->serialize(SerializationOptions{
- boost::make_optional(ExplainOptions::Verbosity::kQueryPlanner)}),
- expectedSerialization);
- ASSERT_VALUE_EQ(dateExp->serialize(), expectedSerialization);
+ ASSERT_VALUE_EQ(dateExp->serialize(true), expectedSerialization);
+ ASSERT_VALUE_EQ(dateExp->serialize(false), expectedSerialization);
}
TEST_F(ExpressionDateFromStringTest, OptimizesToConstantIfAllInputsAreConstant) {
@@ -1436,15 +1416,13 @@ void assertParsesAndSerializesExpression(boost::intrusive_ptr<ExpressionContextF
const auto expression =
Expression::parseExpression(expCtx.get(), expressionSpec, expCtx->variablesParseState);
const auto expectedSerialization = Value(expectedSerializedExpressionSpec);
- ASSERT_VALUE_EQ(expression->serialize(SerializationOptions{
- boost::make_optional(ExplainOptions::Verbosity::kQueryPlanner)}),
- expectedSerialization);
- ASSERT_VALUE_EQ(expression->serialize(), expectedSerialization);
+ ASSERT_VALUE_EQ(expression->serialize(true), expectedSerialization);
+ ASSERT_VALUE_EQ(expression->serialize(false), expectedSerialization);
// Verify that parsed and then serialized expression is the same.
ASSERT_VALUE_EQ(Expression::parseExpression(
expCtx.get(), expectedSerializedExpressionSpec, expCtx->variablesParseState)
- ->serialize(),
+ ->serialize(false),
expectedSerialization);
}
@@ -1793,7 +1771,7 @@ TEST_F(ExpressionDateDiffTest, AddsDependencies) {
auto depsTracker = dateDiffExpression->getDependencies();
ASSERT_TRUE(
(depsTracker.fields ==
- OrderedPathSet{
+ std::set<std::string>{
"startDateField", "endDateField", "unitField", "timezoneField", "startOfWeekField"}));
}
} // namespace ExpressionDateDiffTest
@@ -1891,7 +1869,7 @@ TEST_F(ExpressionDateTruncTest, AddsDependencies) {
const auto depsTracker = dateTruncExpression->getDependencies();
ASSERT_TRUE(
(depsTracker.fields ==
- OrderedPathSet{
+ std::set<std::string>{
"dateField", "unitField", "binSizeField", "timezoneField", "startOfWeekField"}));
}
} // namespace
@@ -1915,10 +1893,8 @@ TEST_F(ExpressionDateArithmeticsTest, SerializesToObject) {
Document{{"startDate", Document{{"$const", Date_t{}}}},
{"unit", Document{{"$const", "day"_sd}}},
{"amount", Document{{"$const", 1}}}}}});
- ASSERT_VALUE_EQ(dateAddExp->serialize(SerializationOptions{
- boost::make_optional(ExplainOptions::Verbosity::kQueryPlanner)}),
- expectedSerialization);
- ASSERT_VALUE_EQ(dateAddExp->serialize(), expectedSerialization);
+ ASSERT_VALUE_EQ(dateAddExp->serialize(true), expectedSerialization);
+ ASSERT_VALUE_EQ(dateAddExp->serialize(false), expectedSerialization);
// with timezone
doc = BSON(expName << BSON("startDate" << Date_t{} << "unit"
@@ -1932,10 +1908,8 @@ TEST_F(ExpressionDateArithmeticsTest, SerializesToObject) {
{"unit", Document{{"$const", "day"_sd}}},
{"amount", Document{{"$const", -1}}},
{"timezone", Document{{"$const", "America/New_York"_sd}}}}}});
- ASSERT_VALUE_EQ(dateAddExp->serialize(SerializationOptions{
- boost::make_optional(ExplainOptions::Verbosity::kQueryPlanner)}),
- expectedSerialization);
- ASSERT_VALUE_EQ(dateAddExp->serialize(), expectedSerialization);
+ ASSERT_VALUE_EQ(dateAddExp->serialize(true), expectedSerialization);
+ ASSERT_VALUE_EQ(dateAddExp->serialize(false), expectedSerialization);
}
}