mirror of
https://github.com/nlohmann/json.git
synced 2026-03-05 00:36:28 +00:00
Add support of multi-dim C-style array member of struct. (#4262)
* Add support of multi-dim C-style array. * Support up to 4 dimensional array. * Suppress clang-tidy checks for C-style arrays
This commit is contained in:
@@ -369,6 +369,68 @@ TEST_CASE("value conversion")
|
||||
CHECK(std::equal(std::begin(nbs), std::end(nbs), std::begin(nbs2)));
|
||||
}
|
||||
|
||||
SECTION("built-in arrays: 2D")
|
||||
{
|
||||
const int nbs[][3] = {{0, 1, 2}, {3, 4, 5}}; // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays)
|
||||
int nbs2[][3] = {{0, 0, 0}, {0, 0, 0}}; // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays)
|
||||
|
||||
const json j2 = nbs;
|
||||
j2.get_to(nbs2);
|
||||
CHECK(std::equal(std::begin(nbs[0]), std::end(nbs[1]), std::begin(nbs2[0])));
|
||||
}
|
||||
|
||||
SECTION("built-in arrays: 3D")
|
||||
{
|
||||
// NOLINTBEGIN(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays)
|
||||
const int nbs[][2][3] = {\
|
||||
{{0, 1, 2}, {3, 4, 5}}, \
|
||||
{{10, 11, 12}, {13, 14, 15}}\
|
||||
};
|
||||
int nbs2[][2][3] = {\
|
||||
{{0, 0, 0}, {0, 0, 0}}, \
|
||||
{{0, 0, 0}, {0, 0, 0}}\
|
||||
};
|
||||
// NOLINTEND(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays)
|
||||
|
||||
const json j2 = nbs;
|
||||
j2.get_to(nbs2);
|
||||
CHECK(std::equal(std::begin(nbs[0][0]), std::end(nbs[1][1]), std::begin(nbs2[0][0])));
|
||||
}
|
||||
|
||||
SECTION("built-in arrays: 4D")
|
||||
{
|
||||
// NOLINTBEGIN(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays)
|
||||
const int nbs[][2][2][3] = {\
|
||||
{
|
||||
\
|
||||
{{0, 1, 2}, {3, 4, 5}}, \
|
||||
{{10, 11, 12}, {13, 14, 15}}\
|
||||
}, \
|
||||
{
|
||||
\
|
||||
{{20, 21, 22}, {23, 24, 25}}, \
|
||||
{{30, 31, 32}, {33, 34, 35}}\
|
||||
}\
|
||||
};
|
||||
int nbs2[][2][2][3] = {\
|
||||
{
|
||||
\
|
||||
{{0, 0, 0}, {0, 0, 0}}, \
|
||||
{{0, 0, 0}, {0, 0, 0}}\
|
||||
}, \
|
||||
{
|
||||
\
|
||||
{{0, 0, 0}, {0, 0, 0}}, \
|
||||
{{0, 0, 0}, {0, 0, 0}}\
|
||||
}\
|
||||
};
|
||||
// NOLINTEND(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays)
|
||||
|
||||
const json j2 = nbs;
|
||||
j2.get_to(nbs2);
|
||||
CHECK(std::equal(std::begin(nbs[0][0][0]), std::end(nbs[1][1][1]), std::begin(nbs2[0][0][0])));
|
||||
}
|
||||
|
||||
SECTION("std::deque<json>")
|
||||
{
|
||||
std::deque<json> a{"previous", "value"};
|
||||
|
||||
Reference in New Issue
Block a user