27 #include <QJsonDocument>
28 #include <QJsonObject>
51 m_itemdata_converter->to_json(*item.itemData());
57 auto create_item = [
this](
const QJsonObject& json) {
58 auto result = std::make_unique<SessionItem>();
65 auto update_item = [
this](
const QJsonObject& json,
SessionItem* item) {
71 return std::make_unique<JsonItemContainerConverter>(callbacks);
96 auto json = converter->to_json(container);
117 auto json = converter->to_json(container);
124 converter->from_json(json, container2);
127 EXPECT_EQ(container2.
itemAt(0), item2);
128 EXPECT_EQ(item->displayName(), item2->displayName());
129 EXPECT_EQ(item->identifier(), item2->identifier());
130 EXPECT_EQ(42, item2->data<
int>());
148 auto json = converter->to_json(container);
162 converter->from_json(document.object(), container2);
165 EXPECT_EQ(container2.
itemAt(0), item2);
166 EXPECT_EQ(item->displayName(), item2->displayName());
167 EXPECT_EQ(item->identifier(), item2->identifier());
168 EXPECT_EQ(42, item2->data<
int>());
180 const int n_max_items = 3;
181 for (
int i = 0; i < n_max_items; ++i) {
189 auto json = converter->to_json(container);
193 converter->from_json(json, container2);
196 EXPECT_EQ(container2.
itemCount(), n_max_items);
197 for (
int i = 0; i < n_max_items; ++i) {
Convenience class which creates a directory on disk for test content.
Checks JsonItemContainerConverter class and its ability to convert SessionItemContainer to json and b...
std::unique_ptr< JsonItemContainerConverter > createConverter() const
std::unique_ptr< JsonItemDataConverter > m_itemdata_converter
~JsonItemContainerConverterTest()
JsonItemContainerConverterTest()
Default converter of SessionItemData to/from json object.
Item to carry concrete editable entity (e.g.
Holds collection of SessionItem objects related to the same tag.
bool insertItem(SessionItem *item, int index)
Inserts item in a vector of children at given index, returns true in the case of success.
int itemCount() const
Returns number of items in given tag.
SessionItem * itemAt(int index) const
Returns item at given index. Returns nullptr if index is invalid.
The main object representing an editable/displayable/serializable entity.
std::string identifier() const
Returns unique identifier.
bool setData(const T &value, int role=ItemDataRole::DATA, bool direct=false)
Sets data for a given role.
T data(int role=ItemDataRole::DATA) const
Returns data of given type T for given role.
Holds info about single tag for SessionItem.
static TagInfo universalTag(std::string name, std::vector< std::string > modelTypes={})
Constructs universal tag intended for unlimited amount of various items.
static TagInfo propertyTag(std::string name, std::string model_type)
Constructs tag intended for single property.
TEST_F(JsonItemContainerConverterTest, propertyContainerToJson)
SessionItemContainer (with single property item) to json object.
const model_type PropertyType
materialitems.h Collection of materials to populate MaterialModel.
std::string TestFileName(const std::string &test_sub_dir, const std::string &file_name)
Returns full path to the file in test directory.
void SaveJson(const QJsonObject &object, const std::string &fileName)
QJsonDocument LoadJson(const std::string &fileName)
std::unique_ptr< IUnitConverter > createConverter(const ISimulation &simulation)
Provides necessary callbacks to convert SessionItem to JSON and back.