add unit-inplace_array.cpp
This commit is contained in:
parent
e2c1831223
commit
b44bddb508
79
tests/src/unit-inplace_array.cpp
Normal file
79
tests/src/unit-inplace_array.cpp
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
// __ _____ _____ _____
|
||||||
|
// __| | __| | | | JSON for Modern C++ (supporting code)
|
||||||
|
// | | |__ | | | | | | version 3.11.2
|
||||||
|
// |_____|_____|_____|_|___| https://github.com/nlohmann/json
|
||||||
|
//
|
||||||
|
// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann <https://nlohmann.me>
|
||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
#include "doctest_compatibility.h"
|
||||||
|
|
||||||
|
#include <array>
|
||||||
|
#include <string>
|
||||||
|
#include <iostream>
|
||||||
|
|
||||||
|
#include <nlohmann/json.hpp>
|
||||||
|
|
||||||
|
using json = nlohmann::json;
|
||||||
|
using ordered_json = nlohmann::ordered_json;
|
||||||
|
|
||||||
|
|
||||||
|
class Person
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//Person(){ std::cout<<"Person constructor\n";}
|
||||||
|
int age;
|
||||||
|
std::string name;
|
||||||
|
NLOHMANN_DEFINE_TYPE_INTRUSIVE(Person, name, age);
|
||||||
|
|
||||||
|
int count{1}; // the data must not be reset
|
||||||
|
};
|
||||||
|
|
||||||
|
class SchoolA
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//SchoolA(){ std::cout<<"School constructor\n";}
|
||||||
|
std::array<Person, 2> persons;
|
||||||
|
|
||||||
|
NLOHMANN_DEFINE_TYPE_INTRUSIVE(SchoolA, persons);
|
||||||
|
};
|
||||||
|
class SchoolB
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
//SchoolB(){ std::cout<<"School constructor\n";}
|
||||||
|
|
||||||
|
Person persons[2];
|
||||||
|
|
||||||
|
NLOHMANN_DEFINE_TYPE_INTRUSIVE(SchoolB, persons);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
TEST_CASE("inplace_array<nlohmann::json>")
|
||||||
|
{
|
||||||
|
|
||||||
|
json obj = R"({"persons":[{"age":100, "name":"alex"}, {"age":200, "name":"edmond"}]})"_json;
|
||||||
|
|
||||||
|
{
|
||||||
|
SchoolA s;
|
||||||
|
from_json(obj, s);
|
||||||
|
CHECK(s.persons[0].age == 100);
|
||||||
|
|
||||||
|
s.persons[0].count = 88;
|
||||||
|
|
||||||
|
from_json(obj, s);
|
||||||
|
CHECK(s.persons[0].count == 88);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
SchoolB s;
|
||||||
|
from_json(obj, s);
|
||||||
|
|
||||||
|
CHECK(s.persons[0].age == 100);
|
||||||
|
|
||||||
|
s.persons[0].count = 88;
|
||||||
|
|
||||||
|
from_json(obj, s);
|
||||||
|
CHECK(s.persons[0].count == 88);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user