diff options
Diffstat (limited to 'src/mongo/s/chunk_version_test.cpp')
-rw-r--r-- | src/mongo/s/chunk_version_test.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/mongo/s/chunk_version_test.cpp b/src/mongo/s/chunk_version_test.cpp index 7b51e5197ce..0e1fd283a48 100644 --- a/src/mongo/s/chunk_version_test.cpp +++ b/src/mongo/s/chunk_version_test.cpp @@ -152,5 +152,30 @@ TEST(ChunkVersionConstruction, CreateWithLargeValues) { ASSERT_EQ(epoch, version.epoch()); } +TEST(ChunkVersionManipulation, ThrowsErrorIfOverflowIsAttemptedForMajorVersion) { + const uint32_t minorVersion = 0; + const uint32_t majorVersion = std::numeric_limits<uint32_t>::max(); + const auto epoch = OID::gen(); + + ChunkVersion version(majorVersion, minorVersion, epoch); + ASSERT_EQ(majorVersion, version.majorVersion()); + ASSERT_EQ(minorVersion, version.minorVersion()); + ASSERT_EQ(epoch, version.epoch()); + + ASSERT_THROWS_CODE(version.incMajor(), DBException, 31180); +} + +TEST(ChunkVersionManipulation, ThrowsErrorIfOverflowIsAttemptedForMinorVersion) { + const uint32_t minorVersion = std::numeric_limits<uint32_t>::max(); + const uint32_t majorVersion = 0; + const auto epoch = OID::gen(); + + ChunkVersion version(majorVersion, minorVersion, epoch); + ASSERT_EQ(majorVersion, version.majorVersion()); + ASSERT_EQ(minorVersion, version.minorVersion()); + ASSERT_EQ(epoch, version.epoch()); + + ASSERT_THROWS_CODE(version.incMinor(), DBException, 31181); +} } // namespace } // namespace mongo |