diff options
author | Nick Zolnierz <nicholas.zolnierz@mongodb.com> | 2017-07-21 12:23:23 -0400 |
---|---|---|
committer | Nick Zolnierz <nicholas.zolnierz@mongodb.com> | 2017-07-24 20:36:37 -0400 |
commit | f22a10013a0aa26a4ad776e0f69e0ab5d33c5f86 (patch) | |
tree | 13a268adf693fc2a7a656cac1af45d9f0822d348 /src/mongo/db/matcher/expression_parser_test.cpp | |
parent | cd64c5cfbd0706b38d52cbf9f772fa08ecd969fc (diff) | |
download | mongo-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.cpp | 68 |
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'}"))); +} } |