Skip to content
This repository has been archived by the owner on Dec 26, 2023. It is now read-only.

Commit

Permalink
old test poretd
Browse files Browse the repository at this point in the history
  • Loading branch information
martinus committed Jun 26, 2019
1 parent e636bc8 commit f850454
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 64 deletions.
63 changes: 0 additions & 63 deletions src/test/old/test_random_insert_erase.cpp
Original file line number Diff line number Diff line change
@@ -1,41 +1,4 @@

TEMPLATE_TEST_CASE("random insert & erase with Verifier", "", FlatMapVerifier, NodeMapVerifier,
(std::unordered_map<CtorDtorVerifier, CtorDtorVerifier>)) {
Rng rng(123);

REQUIRE(CtorDtorVerifier::mapSize() == 0);
TestType map;
for (size_t i = 1; i < 10000; ++i) {
auto v = rng(i);
auto k = rng(i);
map[k] = v;
map.erase(rng(i));
}

std::cout << "map.size()=" << map.size() << std::endl;
INFO("map size is " << CtorDtorVerifier::mapSize());
REQUIRE(CtorDtorVerifier::mapSize() == 6572);
REQUIRE(hash(map) == UINT64_C(0xd665be038c0ed434));
map.clear();

REQUIRE(CtorDtorVerifier::mapSize() == 0);
REQUIRE(hash(map) == UINT64_C(0x9e3779f8));
}

TEMPLATE_TEST_CASE("randins", "", (std::unordered_map<uint64_t, uint64_t>)) {
Rng rng(123);

TestType map;
for (size_t i = 1; i < 10; ++i) {
auto v = rng(i);
auto k = rng(i);
map[k] = v;
map.erase(rng(i));
}

std::cout << "map.size()=" << map.size() << std::endl;
map.clear();
}

// Dummy hash for testing collisions. Make sure to use robin_hood::hash, because this doesn't
// use a bad_hash_prevention multiplier.
Expand Down Expand Up @@ -87,29 +50,3 @@ TEMPLATE_TEST_CASE("collisions", "",
}
REQUIRE(CtorDtorVerifier::mapSize() == 0);
}

TEMPLATE_TEST_CASE("erase iterator", "", FlatMapVerifier, NodeMapVerifier) {
{
TestType map;
for (uint64_t i = 0; i < 100; ++i) {
map[i * 101] = i * 101;
}

typename TestType::const_iterator it = map.find(20 * 101);
REQUIRE(map.size() == 100);
REQUIRE(map.end() != map.find(20 * 101));
it = map.erase(it);
REQUIRE(map.size() == 99);
REQUIRE(map.end() == map.find(20 * 101));

it = map.begin();
size_t currentSize = map.size();
while (it != map.end()) {
it = map.erase(it);
currentSize--;
REQUIRE(map.size() == currentSize);
}
REQUIRE(map.size() == static_cast<size_t>(0));
}
REQUIRE(CtorDtorVerifier::mapSize() == static_cast<size_t>(0));
}
2 changes: 2 additions & 0 deletions src/test/unit/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ target_sources_local(rh PRIVATE
unit_initializerlist.cpp
unit_iterators_ctor.cpp
unit_iterators_empty.cpp
unit_iterators_erase.cpp
unit_iterators_insert.cpp
unit_iterators_stochastic.cpp
unit_load_factor.cpp
Expand All @@ -51,6 +52,7 @@ target_sources_local(rh PRIVATE
unit_not_moveable.cpp
unit_overflow.cpp
unit_pair_trivial.cpp
unit_random_verifier.cpp
unit_reserve_and_assign.cpp
unit_reserve.cpp
unit_sfc64_is_deterministic.cpp
Expand Down
3 changes: 2 additions & 1 deletion src/test/unit/unit_iterators_empty.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
#include <app/doctest.h>
#include <robin_hood.h>

#include <app/doctest.h>

TYPE_TO_STRING(robin_hood::unordered_flat_map<uint64_t, uint64_t>);
TYPE_TO_STRING(robin_hood::unordered_node_map<uint64_t, uint64_t>);

Expand Down
35 changes: 35 additions & 0 deletions src/test/unit/unit_iterators_erase.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#include <robin_hood.h>

#include <app/CtorDtorVerifier.h>
#include <app/doctest.h>

TYPE_TO_STRING(robin_hood::unordered_flat_map<CtorDtorVerifier, CtorDtorVerifier>);
TYPE_TO_STRING(robin_hood::unordered_node_map<CtorDtorVerifier, CtorDtorVerifier>);

TEST_CASE_TEMPLATE("erase iterator", Map,
robin_hood::unordered_node_map<CtorDtorVerifier, CtorDtorVerifier>,
robin_hood::unordered_flat_map<CtorDtorVerifier, CtorDtorVerifier>) {
{
Map map;
for (uint64_t i = 0; i < 100; ++i) {
map[i * 101] = i * 101;
}

typename Map::const_iterator it = map.find(20 * 101);
REQUIRE(map.size() == 100);
REQUIRE(map.end() != map.find(20 * 101));
it = map.erase(it);
REQUIRE(map.size() == 99);
REQUIRE(map.end() == map.find(20 * 101));

it = map.begin();
size_t currentSize = map.size();
while (it != map.end()) {
it = map.erase(it);
currentSize--;
REQUIRE(map.size() == currentSize);
}
REQUIRE(map.size() == static_cast<size_t>(0));
}
REQUIRE(CtorDtorVerifier::mapSize() == static_cast<size_t>(0));
}
35 changes: 35 additions & 0 deletions src/test/unit/unit_random_verifier.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
#include <robin_hood.h>

#include <app/CtorDtorVerifier.h>
#include <app/checksum.h>
#include <app/doctest.h>
#include <app/sfc64.h>

// verified with
// #include <unordered_map>
// std::unordered_map<CtorDtorVerifier, CtorDtorVerifier, robin_hood::hash<CtorDtorVerifier>>

TYPE_TO_STRING(robin_hood::unordered_flat_map<CtorDtorVerifier, CtorDtorVerifier>);
TYPE_TO_STRING(robin_hood::unordered_node_map<CtorDtorVerifier, CtorDtorVerifier>);

TEST_CASE_TEMPLATE("random_insert_erase_with_Verifier", Map,
robin_hood::unordered_node_map<CtorDtorVerifier, CtorDtorVerifier>,
robin_hood::unordered_flat_map<CtorDtorVerifier, CtorDtorVerifier>) {
sfc64 rng(1780);

REQUIRE(CtorDtorVerifier::mapSize() == static_cast<size_t>(0));
Map map;
for (size_t i = 1; i < 10000; ++i) {
auto v = rng(i);
auto k = rng(i);
map[k] = v;
map.erase(rng(i));
}

REQUIRE(CtorDtorVerifier::mapSize() == 6606);
REQUIRE(checksum::map(map) == UINT64_C(0x22E9B522B3B36762));
map.clear();

REQUIRE(CtorDtorVerifier::mapSize() == 0);
REQUIRE(checksum::map(map) == UINT64_C(0x9E3779F8));
}

0 comments on commit f850454

Please sign in to comment.