Make json_pointer usable as map key (again) (#3685)

* Make json_pointer usable as map key

* Add unit tests
This commit is contained in:
Florian Albrechtskirchinger
2022-08-07 14:35:40 +02:00
committed by GitHub
parent 231f3108ff
commit 31265dc69c
3 changed files with 71 additions and 4 deletions

View File

@@ -15,6 +15,7 @@ using nlohmann::json;
using namespace nlohmann::literals; // NOLINT(google-build-using-namespace)
#endif
#include <map>
#include <sstream>
TEST_CASE("JSON pointers")
@@ -697,6 +698,32 @@ TEST_CASE("JSON pointers")
}
}
SECTION("less-than comparison")
{
auto ptr1 = json::json_pointer("/foo/a");
auto ptr2 = json::json_pointer("/foo/b");
CHECK(ptr1 < ptr2);
CHECK_FALSE(ptr2 < ptr1);
// build with C++20
// JSON_HAS_CPP_20
#if JSON_HAS_THREE_WAY_COMPARISON
CHECK((ptr1 <=> ptr2) == std::strong_ordering::less); // *NOPAD*
CHECK(ptr2 > ptr1);
#endif
}
SECTION("usable as map key")
{
auto ptr = json::json_pointer("/foo");
std::map<json::json_pointer, int> m;
m[ptr] = 42;
CHECK(m.find(ptr) != m.end());
}
SECTION("backwards compatibility and mixing")
{
json j = R"(