Commit ec9647ae authored by Anthony VH's avatar Anthony VH

Moved test for #1647 regression to regressions file.

parent ddda67a0
......@@ -1537,31 +1537,6 @@ NLOHMANN_JSON_SERIALIZE_ENUM(TaskState,
{TS_COMPLETED, "completed"},
})
namespace
{
// Helper struct to test whether compile error does not trigger upon
// conversion of an enum in the presence of non-member operator== for
// user-defined type with "non default" from_json function (#1647).
struct NonDefaultFromJsonStruct { };
inline bool operator== (NonDefaultFromJsonStruct const& lhs, NonDefaultFromJsonStruct const& rhs)
{
return true;
}
}
namespace nlohmann
{
template <>
struct adl_serializer<NonDefaultFromJsonStruct>
{
static NonDefaultFromJsonStruct from_json (json const& j)
{
return {};
}
};
}
TEST_CASE("JSON to enum mapping")
{
SECTION("enum class")
......
......@@ -159,6 +159,38 @@ bool operator==(Data const& lhs, Data const& rhs)
using float_json = nlohmann::basic_json<std::map, std::vector, std::string, bool, std::int64_t, std::uint64_t, float>;
/////////////////////////////////////////////////////////////////////
// for #1647
/////////////////////////////////////////////////////////////////////
namespace
{
struct NonDefaultFromJsonStruct { };
inline bool operator== (NonDefaultFromJsonStruct const& lhs, NonDefaultFromJsonStruct const& rhs)
{
return true;
}
enum class for_1647 { one, two };
NLOHMANN_JSON_SERIALIZE_ENUM(for_1647,
{
{for_1647::one, "one"},
{for_1647::two, "two"},
})
}
namespace nlohmann
{
template <>
struct adl_serializer<NonDefaultFromJsonStruct>
{
static NonDefaultFromJsonStruct from_json (json const& j)
{
return {};
}
};
}
TEST_CASE("regression tests")
{
......@@ -1820,6 +1852,12 @@ TEST_CASE("regression tests")
CHECK(j.contains(jptr1));
CHECK(j.contains(jptr2));
}
SECTION("issue #1647 - compile error when deserializing enum if both non-default from_json and non-member operator== exists for other type")
{
auto val = nlohmann::json("one").get<for_1647>();
CHECK(val == for_1647::one);
}
}
#if not defined(JSON_NOEXCEPTION)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment