Skip to content

Commit fb895ba

Browse files
committed
✅ add regression test for #3810
Signed-off-by: Niels Lohmann <[email protected]>
1 parent f06604f commit fb895ba

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

tests/src/unit-regression2.cpp

+28
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,17 @@ inline for_3333::for_3333(const json& j)
377377
: for_3333(j.value("x", 0), j.value("y", 0))
378378
{}
379379

380+
/////////////////////////////////////////////////////////////////////
381+
// for #3810
382+
/////////////////////////////////////////////////////////////////////
383+
384+
struct Example_3810
385+
{
386+
int bla{};
387+
};
388+
389+
NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(Example_3810, bla);
390+
380391
TEST_CASE("regression tests 2")
381392
{
382393
SECTION("issue #1001 - Fix memory leak during parser callback")
@@ -1004,6 +1015,23 @@ TEST_CASE("regression tests 2")
10041015
CHECK(p.x == 1);
10051016
CHECK(p.y == 2);
10061017
}
1018+
1019+
SECTION("issue #3810 - ordered_json doesn't support construction from C array of custom type")
1020+
{
1021+
Example_3810 states[45];
1022+
1023+
// This works:
1024+
nlohmann::json j;
1025+
j["test"] = states;
1026+
CHECK(j["test"].dump() == "[{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0}]");
1027+
1028+
// This doesn't compile:
1029+
nlohmann::ordered_json oj;
1030+
oj["test"] = states;
1031+
CHECK(oj["test"].dump() == "[{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0},{\"bla\":0}]");
1032+
1033+
CHECK(j == oj);
1034+
}
10071035
}
10081036

10091037
DOCTEST_CLANG_SUPPRESS_WARNING_POP

0 commit comments

Comments
 (0)