summaryrefslogtreecommitdiff
path: root/src/mongo/db/pipeline/expression_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/pipeline/expression_test.cpp')
-rw-r--r--src/mongo/db/pipeline/expression_test.cpp27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/mongo/db/pipeline/expression_test.cpp b/src/mongo/db/pipeline/expression_test.cpp
index c9bc46a2c8b..2cdc6bb5a30 100644
--- a/src/mongo/db/pipeline/expression_test.cpp
+++ b/src/mongo/db/pipeline/expression_test.cpp
@@ -5975,7 +5975,6 @@ TEST(ExpressionRegexFindTest, ExtendedRegexOptions) {
TEST(ExpressionRegexFindTest, FailureCase) {
Value input(
fromjson("{input: 'FirstLine\\nSecondLine', regex: {invalid : 'regex'} , options: 'mi'}"));
- BSONObj expectedOut(fromjson("{match: 'Second', idx:10, captures:[]}"));
intrusive_ptr<ExpressionContextForTest> expCtx(new ExpressionContextForTest());
ExpressionRegexFind regexF(expCtx);
regexF.addOperand(ExpressionConstant::create(expCtx, input));
@@ -6036,6 +6035,32 @@ TEST(ExpressionRegexFindAllTest, InvalidUTF8InRegex) {
ASSERT_THROWS_CODE(regexF.evaluate(Document()), DBException, 51111);
}
+TEST(ExpressionRegexMatchTest, NoMatch) {
+ Value input(fromjson("{input: 'asdf', regex: '^sd' }"));
+ Value expectedOut(false);
+ intrusive_ptr<ExpressionContextForTest> expCtx(new ExpressionContextForTest());
+ ExpressionRegexMatch regexMatchExpr(expCtx);
+ regexMatchExpr.addOperand(ExpressionConstant::create(expCtx, input));
+ ASSERT_VALUE_EQ(regexMatchExpr.evaluate(Document()), expectedOut);
+}
+
+TEST(ExpressionRegexMatchTest, ExtendedRegexOptions) {
+ Value input(fromjson("{input: 'FirstLine\\nSecondLine', regex: '^second' , options: 'mi'}"));
+ Value expectedOut(true);
+ intrusive_ptr<ExpressionContextForTest> expCtx(new ExpressionContextForTest());
+ ExpressionRegexMatch regexMatchExpr(expCtx);
+ regexMatchExpr.addOperand(ExpressionConstant::create(expCtx, input));
+ ASSERT_VALUE_EQ(regexMatchExpr.evaluate(Document()), expectedOut);
+}
+
+TEST(ExpressionRegexMatchTest, FailureCase) {
+ Value input(fromjson("{regex: 'valid', input: {invalid : 'input'} , options: 'mi'}"));
+ intrusive_ptr<ExpressionContextForTest> expCtx(new ExpressionContextForTest());
+ ExpressionRegexMatch regexMatchExpr(expCtx);
+ regexMatchExpr.addOperand(ExpressionConstant::create(expCtx, input));
+ ASSERT_THROWS_CODE(regexMatchExpr.evaluate(Document()), DBException, 51104);
+}
+
} // namespace ExpressionRegexTest
class All : public Suite {