summaryrefslogtreecommitdiff
path: root/src/mongo/db/pipeline/parsed_exclusion_projection_test.cpp
diff options
context:
space:
mode:
authorDavid Storch <david.storch@10gen.com>2016-10-03 11:48:27 -0400
committerDavid Storch <david.storch@10gen.com>2016-10-06 11:19:24 -0400
commit4976eb401b3f16482fb35287ea60d7e8b33fe76d (patch)
tree3ab5cfaec3f76dc334b006f0b1eeb7162772d4d6 /src/mongo/db/pipeline/parsed_exclusion_projection_test.cpp
parenta2d34afd4330258e05c5ac1e9174338cfda29a10 (diff)
downloadmongo-4976eb401b3f16482fb35287ea60d7e8b33fe76d.tar.gz
SERVER-19153 push $match as far forward as possible
Diffstat (limited to 'src/mongo/db/pipeline/parsed_exclusion_projection_test.cpp')
-rw-r--r--src/mongo/db/pipeline/parsed_exclusion_projection_test.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/mongo/db/pipeline/parsed_exclusion_projection_test.cpp b/src/mongo/db/pipeline/parsed_exclusion_projection_test.cpp
index a9fb218d8ef..3673330dbfb 100644
--- a/src/mongo/db/pipeline/parsed_exclusion_projection_test.cpp
+++ b/src/mongo/db/pipeline/parsed_exclusion_projection_test.cpp
@@ -117,6 +117,29 @@ TEST(ExclusionProjection, ShouldNotAddAnyDependencies) {
ASSERT_FALSE(deps.getNeedTextScore());
}
+TEST(ExclusionProjection, ShouldReportExcludedFieldsAsModified) {
+ ParsedExclusionProjection exclusion;
+ exclusion.parse(BSON("_id" << false << "a" << false << "b.c" << false));
+
+ auto modifiedPaths = exclusion.getModifiedPaths();
+ ASSERT(modifiedPaths.type == DocumentSource::GetModPathsReturn::Type::kFiniteSet);
+ ASSERT_EQ(modifiedPaths.paths.count("_id"), 1UL);
+ ASSERT_EQ(modifiedPaths.paths.count("a"), 1UL);
+ ASSERT_EQ(modifiedPaths.paths.count("b.c"), 1UL);
+ ASSERT_EQ(modifiedPaths.paths.size(), 3UL);
+}
+
+TEST(ExclusionProjection, ShouldReportExcludedFieldsAsModifiedWhenSpecifiedAsNestedObj) {
+ ParsedExclusionProjection exclusion;
+ exclusion.parse(BSON("a" << BSON("b" << false << "c" << BSON("d" << false))));
+
+ auto modifiedPaths = exclusion.getModifiedPaths();
+ ASSERT(modifiedPaths.type == DocumentSource::GetModPathsReturn::Type::kFiniteSet);
+ ASSERT_EQ(modifiedPaths.paths.count("a.b"), 1UL);
+ ASSERT_EQ(modifiedPaths.paths.count("a.c.d"), 1UL);
+ ASSERT_EQ(modifiedPaths.paths.size(), 2UL);
+}
+
//
// Tests of execution of exclusions at the top level.
//