diff options
author | David Storch <david.storch@10gen.com> | 2016-10-03 11:48:27 -0400 |
---|---|---|
committer | David Storch <david.storch@10gen.com> | 2016-10-06 11:19:24 -0400 |
commit | 4976eb401b3f16482fb35287ea60d7e8b33fe76d (patch) | |
tree | 3ab5cfaec3f76dc334b006f0b1eeb7162772d4d6 /src/mongo/db/pipeline/parsed_exclusion_projection_test.cpp | |
parent | a2d34afd4330258e05c5ac1e9174338cfda29a10 (diff) | |
download | mongo-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.cpp | 23 |
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. // |