summaryrefslogtreecommitdiff
path: root/src/mongo/db/matcher/expression_serialization_test.cpp
diff options
context:
space:
mode:
authorBlake Oler <blake.oler@10gen.com>2017-09-11 13:26:16 -0400
committerBlake Oler <blake.oler@10gen.com>2017-09-12 13:24:44 -0400
commit33cb4a950c5de3c1c783b25ecf0fd4454cce844a (patch)
tree02220841b1d28906053395dc3c74b7e33afc11fe /src/mongo/db/matcher/expression_serialization_test.cpp
parent152ade06b7c7db03d358d42f41a961b3e8787a35 (diff)
downloadmongo-33cb4a950c5de3c1c783b25ecf0fd4454cce844a.tar.gz
SERVER-30717 Serialize OrMatchExpression to {$alwaysFalse: 1}
Diffstat (limited to 'src/mongo/db/matcher/expression_serialization_test.cpp')
-rw-r--r--src/mongo/db/matcher/expression_serialization_test.cpp24
1 files changed, 19 insertions, 5 deletions
diff --git a/src/mongo/db/matcher/expression_serialization_test.cpp b/src/mongo/db/matcher/expression_serialization_test.cpp
index 2d2bd3127fc..4ae5a56848d 100644
--- a/src/mongo/db/matcher/expression_serialization_test.cpp
+++ b/src/mongo/db/matcher/expression_serialization_test.cpp
@@ -32,6 +32,7 @@
#include "mongo/db/json.h"
#include "mongo/db/matcher/expression.h"
+#include "mongo/db/matcher/expression_always_boolean.h"
#include "mongo/db/matcher/expression_parser.h"
#include "mongo/db/matcher/extensions_callback_noop.h"
#include "mongo/db/matcher/matcher.h"
@@ -142,6 +143,19 @@ TEST(SerializeBasic, ExpressionOr) {
ASSERT_EQ(original.matches(obj), reserialized.matches(obj));
}
+TEST(SerializeBasic, ExpressionOrWithNoChildrenSerializesCorrectly) {
+ boost::intrusive_ptr<ExpressionContextForTest> expCtx(new ExpressionContextForTest());
+ // We construct an OrMatchExpression directly rather than using the match expression
+ // parser, since the parser does not permit a $or with no children.
+ OrMatchExpression original;
+ Matcher reserialized(serialize(&original),
+ kSimpleCollator,
+ expCtx,
+ ExtensionsCallbackNoop(),
+ MatchExpressionParser::kAllowAllSpecialFeatures);
+ ASSERT_BSONOBJ_EQ(*reserialized.getQuery(), BSON(AlwaysFalseMatchExpression::kName << 1));
+}
+
TEST(SerializeBasic, ExpressionElemMatchObjectSerializesCorrectly) {
boost::intrusive_ptr<ExpressionContextForTest> expCtx(new ExpressionContextForTest());
Matcher original(fromjson("{x: {$elemMatch: {a: {$gt: 0}, b: {$gt: 0}}}}"),
@@ -323,7 +337,7 @@ TEST(SerializeBasic, ExpressionAllWithEmptyArraySerializesCorrectly) {
expCtx,
ExtensionsCallbackNoop(),
MatchExpressionParser::kAllowAllSpecialFeatures);
- ASSERT_BSONOBJ_EQ(*reserialized.getQuery(), fromjson("{$alwaysFalse: 1}"));
+ ASSERT_BSONOBJ_EQ(*reserialized.getQuery(), BSON(AlwaysFalseMatchExpression::kName << 1));
ASSERT_BSONOBJ_EQ(*reserialized.getQuery(), serialize(reserialized.getMatchExpression()));
BSONObj obj = fromjson("{x: [1, 2, 3]}");
@@ -1444,7 +1458,7 @@ TEST(SerializeBasic, ExpressionTextWithDefaultLanguageSerializesCorrectly) {
TEST(SerializeBasic, ExpressionAlwaysTrueSerializesCorrectly) {
boost::intrusive_ptr<ExpressionContextForTest> expCtx(new ExpressionContextForTest());
- Matcher original(fromjson("{$alwaysTrue: 1}"),
+ Matcher original(BSON(AlwaysTrueMatchExpression::kName << 1),
kSimpleCollator,
expCtx,
ExtensionsCallbackNoop(),
@@ -1454,13 +1468,13 @@ TEST(SerializeBasic, ExpressionAlwaysTrueSerializesCorrectly) {
expCtx,
ExtensionsCallbackNoop(),
MatchExpressionParser::kAllowAllSpecialFeatures);
- ASSERT_BSONOBJ_EQ(*reserialized.getQuery(), fromjson("{$alwaysTrue: 1}"));
+ ASSERT_BSONOBJ_EQ(*reserialized.getQuery(), BSON(AlwaysTrueMatchExpression::kName << 1));
ASSERT_BSONOBJ_EQ(*reserialized.getQuery(), serialize(reserialized.getMatchExpression()));
}
TEST(SerializeBasic, ExpressionAlwaysFalseSerializesCorrectly) {
boost::intrusive_ptr<ExpressionContextForTest> expCtx(new ExpressionContextForTest());
- Matcher original(fromjson("{$alwaysFalse: 1}"),
+ Matcher original(BSON(AlwaysFalseMatchExpression::kName << 1),
kSimpleCollator,
expCtx,
ExtensionsCallbackNoop(),
@@ -1470,7 +1484,7 @@ TEST(SerializeBasic, ExpressionAlwaysFalseSerializesCorrectly) {
expCtx,
ExtensionsCallbackNoop(),
MatchExpressionParser::kAllowAllSpecialFeatures);
- ASSERT_BSONOBJ_EQ(*reserialized.getQuery(), fromjson("{$alwaysFalse: 1}"));
+ ASSERT_BSONOBJ_EQ(*reserialized.getQuery(), BSON(AlwaysFalseMatchExpression::kName << 1));
ASSERT_BSONOBJ_EQ(*reserialized.getQuery(), serialize(reserialized.getMatchExpression()));
}