diff options
Diffstat (limited to 'src/mongo/db/ftdc/compressor_test.cpp')
-rw-r--r-- | src/mongo/db/ftdc/compressor_test.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/mongo/db/ftdc/compressor_test.cpp b/src/mongo/db/ftdc/compressor_test.cpp index 509504037b7..f8dee52f889 100644 --- a/src/mongo/db/ftdc/compressor_test.cpp +++ b/src/mongo/db/ftdc/compressor_test.cpp @@ -170,6 +170,11 @@ public: ValidateDocumentList(list, _docs, _mode); } + void setExpectedDocuments(const std::vector<BSONObj>& docs) { + _docs.clear(); + std::copy(docs.begin(), docs.end(), std::back_inserter(_docs)); + } + private: std::vector<BSONObj> _docs; FTDCConfig _config; @@ -537,4 +542,40 @@ TEST_F(FTDCCompressorTest, TestManyMetrics) { } } +// Test various non-finite double values +TEST_F(FTDCCompressorTest, TestDoubleValues) { + TestTie c; + + auto st = c.addSample(BSON("d" << 0.0)); + ASSERT_HAS_SPACE(st); + st = c.addSample(BSON("d" << -42.0)); + ASSERT_HAS_SPACE(st); + st = c.addSample(BSON("d" << 42.0)); + ASSERT_HAS_SPACE(st); + st = c.addSample(BSON("d" << std::numeric_limits<double>::max())); + ASSERT_HAS_SPACE(st); + st = c.addSample(BSON("d" << std::numeric_limits<double>::min())); + ASSERT_HAS_SPACE(st); + st = c.addSample(BSON("d" << std::numeric_limits<double>::lowest())); + ASSERT_HAS_SPACE(st); + st = c.addSample(BSON("d" << std::numeric_limits<double>::infinity())); + ASSERT_HAS_SPACE(st); + st = c.addSample(BSON("d" << -std::numeric_limits<double>::infinity())); + ASSERT_HAS_SPACE(st); + st = c.addSample(BSON("d" << std::numeric_limits<double>::quiet_NaN())); + ASSERT_HAS_SPACE(st); + + c.setExpectedDocuments({ + BSON("d" << 0.0), + BSON("d" << -42.0), + BSON("d" << 42.0), + BSON("d" << std::numeric_limits<long long>::max()), + BSON("d" << 0), + BSON("d" << std::numeric_limits<long long>::min()), + BSON("d" << std::numeric_limits<long long>::max()), + BSON("d" << std::numeric_limits<long long>::min()), + BSON("d" << 0), + }); +} + } // namespace mongo |