osrm-backend/test/unit/insert_or_assign.cpp
Siarhei Fedartsou f1087e81ec Squashed 'third_party/unordered_dense/' content from commit 231e48c94
git-subtree-dir: third_party/unordered_dense
git-subtree-split: 231e48c9426bd21c273669e5fdcd042c146975cf
2024-05-30 19:06:16 +02:00

50 lines
1.3 KiB
C++

#include <ankerl/unordered_dense.h>
#include <app/doctest.h>
#include <string> // for string, operator==, allocator
#include <utility> // for pair
#include <vector> // for vector
TEST_CASE_MAP("insert_or_assign", std::string, std::string) {
auto map = map_t();
auto ret = map.insert_or_assign("a", "b");
REQUIRE(ret.second);
REQUIRE(ret.first == map.find("a"));
REQUIRE(map.size() == 1);
REQUIRE(map["a"] == "b");
ret = map.insert_or_assign("c", "d");
REQUIRE(ret.second);
REQUIRE(ret.first == map.find("c"));
REQUIRE(map.size() == 2);
REQUIRE(map["c"] == "d");
ret = map.insert_or_assign("c", "dd");
REQUIRE_FALSE(ret.second);
REQUIRE(ret.first == map.find("c"));
REQUIRE(map.size() == 2);
REQUIRE(map["c"] == "dd");
std::string key = "a";
std::string value = "bb";
ret = map.insert_or_assign(key, value);
REQUIRE_FALSE(ret.second);
REQUIRE(ret.first == map.find("a"));
REQUIRE(map.size() == 2);
REQUIRE(map["a"] == "bb");
key = "e";
value = "f";
auto pos = map.insert_or_assign(map.end(), key, value);
REQUIRE(pos == map.find("e"));
REQUIRE(map.size() == 3);
REQUIRE(map["e"] == "f");
pos = map.insert_or_assign(map.begin(), "e", "ff");
REQUIRE(pos == map.find("e"));
REQUIRE(map.size() == 3);
REQUIRE(map["e"] == "ff");
}