diff options
Diffstat (limited to 'src/mongo/s/catalog/type_chunk_test.cpp')
-rw-r--r-- | src/mongo/s/catalog/type_chunk_test.cpp | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/mongo/s/catalog/type_chunk_test.cpp b/src/mongo/s/catalog/type_chunk_test.cpp index 4589e4d4c38..eabce7ed879 100644 --- a/src/mongo/s/catalog/type_chunk_test.cpp +++ b/src/mongo/s/catalog/type_chunk_test.cpp @@ -245,6 +245,65 @@ TEST(ChunkRange, BasicBSONParsing) { ASSERT_BSONOBJ_EQ(BSON("x" << 10), chunkRange.getMax()); } +TEST(ChunkRange, Covers) { + auto target = ChunkRange(BSON("x" << 5), BSON("x" << 10)); + ASSERT(!target.covers(ChunkRange(BSON("x" << 0), BSON("x" << 5)))); + ASSERT(!target.covers(ChunkRange(BSON("x" << 10), BSON("x" << 15)))); + ASSERT(!target.covers(ChunkRange(BSON("x" << 0), BSON("x" << 7)))); + ASSERT(!target.covers(ChunkRange(BSON("x" << 7), BSON("x" << 15)))); + ASSERT(!target.covers(ChunkRange(BSON("x" << 0), BSON("x" << 15)))); + ASSERT(!target.covers(ChunkRange(BSON("x" << 0), BSON("x" << 10)))); + ASSERT(!target.covers(ChunkRange(BSON("x" << 5), BSON("x" << 15)))); + ASSERT(target.covers(ChunkRange(BSON("x" << 5), BSON("x" << 10)))); + ASSERT(target.covers(ChunkRange(BSON("x" << 6), BSON("x" << 10)))); + ASSERT(target.covers(ChunkRange(BSON("x" << 5), BSON("x" << 9)))); + ASSERT(target.covers(ChunkRange(BSON("x" << 6), BSON("x" << 9)))); +} + +TEST(ChunkRange, Overlap) { + auto target = ChunkRange(BSON("x" << 5), BSON("x" << 10)); + ASSERT(!target.overlapWith(ChunkRange(BSON("x" << 0), BSON("x" << 5)))); + ASSERT(!target.overlapWith(ChunkRange(BSON("x" << 0), BSON("x" << 4)))); + ASSERT(!target.overlapWith(ChunkRange(BSON("x" << 10), BSON("x" << 15)))); + ASSERT(!target.overlapWith(ChunkRange(BSON("x" << 11), BSON("x" << 15)))); + ASSERT(ChunkRange(BSON("x" << 7), BSON("x" << 10)) == + *target.overlapWith(ChunkRange(BSON("x" << 7), BSON("x" << 15)))); + ASSERT(ChunkRange(BSON("x" << 5), BSON("x" << 10)) == + *target.overlapWith(ChunkRange(BSON("x" << 0), BSON("x" << 10)))); + ASSERT(ChunkRange(BSON("x" << 5), BSON("x" << 10)) == + *target.overlapWith(ChunkRange(BSON("x" << 0), BSON("x" << 15)))); + ASSERT(ChunkRange(BSON("x" << 5), BSON("x" << 10)) == + *target.overlapWith(ChunkRange(BSON("x" << 5), BSON("x" << 15)))); + ASSERT(ChunkRange(BSON("x" << 5), BSON("x" << 9)) == + *target.overlapWith(ChunkRange(BSON("x" << 0), BSON("x" << 9)))); + ASSERT(ChunkRange(BSON("x" << 9), BSON("x" << 10)) == + *target.overlapWith(ChunkRange(BSON("x" << 9), BSON("x" << 15)))); +} + +TEST(ChunkRange, Union) { + auto target = ChunkRange(BSON("x" << 5), BSON("x" << 10)); + ASSERT(ChunkRange(BSON("x" << 0), BSON("x" << 10)) == + target.unionWith(ChunkRange(BSON("x" << 0), BSON("x" << 5)))); + ASSERT(ChunkRange(BSON("x" << 0), BSON("x" << 10)) == + target.unionWith(ChunkRange(BSON("x" << 0), BSON("x" << 4)))); + ASSERT(ChunkRange(BSON("x" << 5), BSON("x" << 15)) == + target.unionWith(ChunkRange(BSON("x" << 10), BSON("x" << 15)))); + ASSERT(ChunkRange(BSON("x" << 5), BSON("x" << 15)) == + target.unionWith(ChunkRange(BSON("x" << 11), BSON("x" << 15)))); + ASSERT(ChunkRange(BSON("x" << 5), BSON("x" << 15)) == + target.unionWith(ChunkRange(BSON("x" << 7), BSON("x" << 15)))); + ASSERT(ChunkRange(BSON("x" << 0), BSON("x" << 10)) == + target.unionWith(ChunkRange(BSON("x" << 0), BSON("x" << 10)))); + ASSERT(ChunkRange(BSON("x" << 0), BSON("x" << 14)) == + target.unionWith(ChunkRange(BSON("x" << 0), BSON("x" << 14)))); + ASSERT(ChunkRange(BSON("x" << 5), BSON("x" << 15)) == + target.unionWith(ChunkRange(BSON("x" << 5), BSON("x" << 15)))); + ASSERT(ChunkRange(BSON("x" << 0), BSON("x" << 10)) == + target.unionWith(ChunkRange(BSON("x" << 0), BSON("x" << 9)))); + ASSERT(ChunkRange(BSON("x" << 5), BSON("x" << 15)) == + target.unionWith(ChunkRange(BSON("x" << 9), BSON("x" << 15)))); +} + TEST(ChunkRange, MinGreaterThanMaxShouldError) { auto parseStatus = ChunkRange::fromBSON(BSON("min" << BSON("x" << 10) << "max" << BSON("x" << 0))); |