diff options
author | Jennifer Peshansky <jennifer.peshansky@mongodb.com> | 2022-11-03 16:13:20 +0000 |
---|---|---|
committer | Jennifer Peshansky <jennifer.peshansky@mongodb.com> | 2022-11-03 16:13:20 +0000 |
commit | e74d2910bbe76790ad131d53fee277829cd95982 (patch) | |
tree | cabe148764529c9623652374fbc36323a550cd44 /src/mongo/unittest/assert_that_test.cpp | |
parent | 280145e9940729480bb8a35453d4056afac87641 (diff) | |
parent | ba467f46cc1bc49965e1d72b541eff0cf1d7b22e (diff) | |
download | mongo-e74d2910bbe76790ad131d53fee277829cd95982.tar.gz |
Merge branch 'master' into jenniferpeshansky/SERVER-70854jenniferpeshansky/SERVER-70854
Diffstat (limited to 'src/mongo/unittest/assert_that_test.cpp')
-rw-r--r-- | src/mongo/unittest/assert_that_test.cpp | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/src/mongo/unittest/assert_that_test.cpp b/src/mongo/unittest/assert_that_test.cpp index a20ec42197a..01482a61149 100644 --- a/src/mongo/unittest/assert_that_test.cpp +++ b/src/mongo/unittest/assert_that_test.cpp @@ -29,13 +29,20 @@ #include "mongo/platform/basic.h" +#include <array> #include <functional> #include <list> +#include <map> +#include <set> #include <string> +#include <unordered_map> +#include <unordered_set> #include <vector> #include "mongo/base/status.h" #include "mongo/logv2/log.h" +#include "mongo/stdx/unordered_map.h" +#include "mongo/stdx/unordered_set.h" #include "mongo/unittest/assert_that.h" #include "mongo/unittest/unittest.h" #include "mongo/util/assert_util.h" @@ -224,6 +231,11 @@ TEST(AssertThat, Demo) { ASSERT_THAT(myVec, ElementsAre(Eq(111), AllOf(Lt(1000), Gt(0)), Any())); ASSERT_THAT(myList, ElementsAre(Eq(111), AllOf(Lt(1000), Gt(0)), Any())); + // Map + std::map<int, int> myMap{{101, 201}, {102, 202}}; + ASSERT_THAT( + myMap, ElementsAre(TupleElementsAre(Eq(101), Eq(201)), TupleElementsAre(Eq(102), Eq(202)))); + // Structs/Tuples struct { int i; @@ -245,6 +257,26 @@ TEST(AssertThat, Demo) { ASSERT_THAT(obj, Not(BSONObjHas(BSONElementIs(Eq("x"), Any(), Any())))); } +TEST(StringifyForAssert, PrintableTypes) { + using stringify::stringifyForAssert; + ASSERT_EQ(stringifyForAssert(3.14), "3.14"); + ASSERT_EQ(stringifyForAssert(std::string{"pi"}), "pi"); + ASSERT_EQ(stringifyForAssert(std::pair<std::string, double>{"pi", 3.14}), "(pi, 3.14)"); + ASSERT_EQ(stringifyForAssert(std::tuple<int, int>{1, 2}), "(1, 2)"); + ASSERT_EQ(stringifyForAssert(std::tuple<>{}), "()"); + ASSERT_EQ(stringifyForAssert(std::vector<int>{1, 2, 3}), "[1, 2, 3]"); + ASSERT_EQ(stringifyForAssert(std::list<int>{1, 2, 3}), "[1, 2, 3]"); + ASSERT_EQ(stringifyForAssert(std::map<int, std::string>{{1, "a"}, {2, "b"}}), + "[(1, a), (2, b)]"); + ASSERT_THAT( + stringifyForAssert(std::unordered_map<int, std::string>{{1, "a"}, {2, "b"}}), // NOLINT + AnyOf(Eq("[(1, a), (2, b)]"), Eq("[(2, b), (1, a)]"))); + ASSERT_THAT(stringifyForAssert(stdx::unordered_map<int, std::string>{{1, "a"}, {2, "b"}}), + AnyOf(Eq("[(1, a), (2, b)]"), Eq("[(2, b), (1, a)]"))); + ASSERT_EQ(stringifyForAssert(std::array{1, 2, 3, 4}), "[1, 2, 3, 4]") + << "std::array is both a sequence and a tuple. Should prefer sequence notation"; +} + TEST(AssertThat, UnprintableValues) { struct Unprintable { int i; @@ -257,6 +289,5 @@ TEST(AssertThat, UnprintableValues) { ASSERT_STRING_CONTAINS(Eq(v).describe(), lastResort); } - } // namespace } // namespace mongo::unittest::match |