1 #include <robin_hood.h> 2 3 #include <app/CtorDtorVerifier.h> 4 #include <app/checksum.h> 5 #include <app/doctest.h> 6 #include <app/sfc64.h> 7 8 // verified with 9 // #include <unordered_map> 10 // std::unordered_map<CtorDtorVerifier, CtorDtorVerifier, robin_hood::hash<CtorDtorVerifier>> 11 12 TYPE_TO_STRING(robin_hood::unordered_flat_map<CtorDtorVerifier, CtorDtorVerifier>); 13 TYPE_TO_STRING(robin_hood::unordered_node_map<CtorDtorVerifier, CtorDtorVerifier>); 14 15 TEST_CASE_TEMPLATE("random_insert_erase_with_Verifier", Map, 16 robin_hood::unordered_node_map<CtorDtorVerifier, CtorDtorVerifier>, 17 robin_hood::unordered_flat_map<CtorDtorVerifier, CtorDtorVerifier>) { 18 sfc64 rng(1780); 19 20 REQUIRE(CtorDtorVerifier::mapSize() == static_cast<size_t>(0)); 21 Map map; 22 for (size_t i = 1; i < 10000; ++i) { 23 auto v = rng(i); 24 auto k = rng(i); 25 map[k] = v; 26 map.erase(rng(i)); 27 } 28 29 REQUIRE(CtorDtorVerifier::mapSize() == 6606); 30 REQUIRE(checksum::map(map) == UINT64_C(0x22E9B522B3B36762)); 31 map.clear(); 32 33 REQUIRE(CtorDtorVerifier::mapSize() == 0); 34 REQUIRE(checksum::map(map) == UINT64_C(0x9E3779F8)); 35 } 36