diff options
author | Blake Oler <blake.oler@10gen.com> | 2017-09-11 13:26:16 -0400 |
---|---|---|
committer | Blake Oler <blake.oler@10gen.com> | 2017-09-12 13:24:44 -0400 |
commit | 33cb4a950c5de3c1c783b25ecf0fd4454cce844a (patch) | |
tree | 02220841b1d28906053395dc3c74b7e33afc11fe /src/mongo/db/matcher/expression_serialization_test.cpp | |
parent | 152ade06b7c7db03d358d42f41a961b3e8787a35 (diff) | |
download | mongo-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.cpp | 24 |
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())); } |