summaryrefslogtreecommitdiff
path: root/src/mongo/db/matcher/expression_parser_test.cpp
diff options
context:
space:
mode:
authorNick Zolnierz <nicholas.zolnierz@mongodb.com>2017-07-21 12:23:23 -0400
committerNick Zolnierz <nicholas.zolnierz@mongodb.com>2017-07-24 20:36:37 -0400
commitf22a10013a0aa26a4ad776e0f69e0ab5d33c5f86 (patch)
tree13a268adf693fc2a7a656cac1af45d9f0822d348 /src/mongo/db/matcher/expression_parser_test.cpp
parentcd64c5cfbd0706b38d52cbf9f772fa08ecd969fc (diff)
downloadmongo-f22a10013a0aa26a4ad776e0f69e0ab5d33c5f86.tar.gz
SERVER-30028: Create $alwaysTrue and $alwaysFalse MatchExpressions
Diffstat (limited to 'src/mongo/db/matcher/expression_parser_test.cpp')
-rw-r--r--src/mongo/db/matcher/expression_parser_test.cpp68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/mongo/db/matcher/expression_parser_test.cpp b/src/mongo/db/matcher/expression_parser_test.cpp
index bc047818622..de45bc15c33 100644
--- a/src/mongo/db/matcher/expression_parser_test.cpp
+++ b/src/mongo/db/matcher/expression_parser_test.cpp
@@ -249,4 +249,72 @@ TEST(StatusWithTest, Fib1) {
ASSERT(x.isOK());
ASSERT(3 == x.getValue());
}
+
+TEST(MatchExpressionParserTest, AlwaysFalseFailsToParseNonOneArguments) {
+ auto queryIntArgument = BSON("$alwaysFalse" << 0);
+ auto expr = MatchExpressionParser::parse(
+ queryIntArgument, ExtensionsCallbackDisallowExtensions(), nullptr);
+ ASSERT_EQ(expr.getStatus(), ErrorCodes::FailedToParse);
+
+ auto queryStringArgument = BSON("$alwaysFalse"
+ << "");
+ expr = MatchExpressionParser::parse(
+ queryStringArgument, ExtensionsCallbackDisallowExtensions(), nullptr);
+ ASSERT_EQ(expr.getStatus(), ErrorCodes::FailedToParse);
+
+ auto queryDoubleArgument = BSON("$alwaysFalse" << 1.1);
+ expr = MatchExpressionParser::parse(
+ queryDoubleArgument, ExtensionsCallbackDisallowExtensions(), nullptr);
+ ASSERT_EQ(expr.getStatus(), ErrorCodes::FailedToParse);
+
+ auto queryFalseArgument = BSON("$alwaysFalse" << true);
+ expr = MatchExpressionParser::parse(
+ queryFalseArgument, ExtensionsCallbackDisallowExtensions(), nullptr);
+ ASSERT_EQ(expr.getStatus(), ErrorCodes::FailedToParse);
+}
+
+TEST(MatchExpressionParserTest, AlwaysFalseParsesIntegerArgument) {
+ auto query = BSON("$alwaysFalse" << 1);
+ auto expr =
+ MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), nullptr);
+ ASSERT_OK(expr.getStatus());
+
+ ASSERT_FALSE(expr.getValue()->matchesBSON(fromjson("{}")));
+ ASSERT_FALSE(expr.getValue()->matchesBSON(fromjson("{x: 1}")));
+ ASSERT_FALSE(expr.getValue()->matchesBSON(fromjson("{x: 'blah'}")));
+}
+
+TEST(MatchExpressionParserTest, AlwaysTrueFailsToParseNonOneArguments) {
+ auto queryIntArgument = BSON("$alwaysTrue" << 0);
+ auto expr = MatchExpressionParser::parse(
+ queryIntArgument, ExtensionsCallbackDisallowExtensions(), nullptr);
+ ASSERT_EQ(expr.getStatus(), ErrorCodes::FailedToParse);
+
+ auto queryStringArgument = BSON("$alwaysTrue"
+ << "");
+ expr = MatchExpressionParser::parse(
+ queryStringArgument, ExtensionsCallbackDisallowExtensions(), nullptr);
+ ASSERT_EQ(expr.getStatus(), ErrorCodes::FailedToParse);
+
+ auto queryDoubleArgument = BSON("$alwaysTrue" << 1.1);
+ expr = MatchExpressionParser::parse(
+ queryDoubleArgument, ExtensionsCallbackDisallowExtensions(), nullptr);
+ ASSERT_EQ(expr.getStatus(), ErrorCodes::FailedToParse);
+
+ auto queryFalseArgument = BSON("$alwaysTrue" << true);
+ expr = MatchExpressionParser::parse(
+ queryFalseArgument, ExtensionsCallbackDisallowExtensions(), nullptr);
+ ASSERT_EQ(expr.getStatus(), ErrorCodes::FailedToParse);
+}
+
+TEST(MatchExpressionParserTest, AlwaysTrueParsesIntegerArgument) {
+ auto query = BSON("$alwaysTrue" << 1);
+ auto expr =
+ MatchExpressionParser::parse(query, ExtensionsCallbackDisallowExtensions(), nullptr);
+ ASSERT_OK(expr.getStatus());
+
+ ASSERT_TRUE(expr.getValue()->matchesBSON(fromjson("{}")));
+ ASSERT_TRUE(expr.getValue()->matchesBSON(fromjson("{x: 1}")));
+ ASSERT_TRUE(expr.getValue()->matchesBSON(fromjson("{x: 'blah'}")));
+}
}