28 #include <QJsonDocument>
29 #include <QJsonObject>
41 setToolTip(
"compound");
42 addProperty(
"Thickness", 42)->setToolTip(
"thickness");
50 auto catalogue = std::make_unique<ModelView::ItemCatalogue>();
52 setItemCatalogue(std::move(catalogue));
65 return std::make_unique<JsonItemConverter>(context);
81 auto object = converter->to_json(&item);
96 auto object = converter->to_json(&item);
98 auto reco = converter->from_json(
object);
100 EXPECT_EQ(reco->modelType(), item.
modelType());
101 EXPECT_EQ(reco->displayName(), item.
displayName());
102 EXPECT_EQ(reco->identifier(), item.
identifier());
103 EXPECT_EQ(reco->toolTip(), std::string(
"abc"));
113 auto object = converter->to_json(&item);
120 auto reco = converter->from_json(document.object());
122 EXPECT_EQ(reco->parent(),
nullptr);
123 EXPECT_EQ(reco->modelType(), item.
modelType());
124 EXPECT_EQ(reco->displayName(), item.
displayName());
125 EXPECT_EQ(reco->identifier(), item.
identifier());
135 auto parent = std::make_unique<SessionItem>(
model_type);
136 parent->setDisplayName(
"parent_name");
139 child->setDisplayName(
"child_name");
143 auto object = converter->to_json(parent.get());
148 auto reco_parent = converter->from_json(
object);
151 EXPECT_EQ(reco_parent->childrenCount(), 1);
152 EXPECT_EQ(reco_parent->modelType(),
model_type);
153 EXPECT_EQ(reco_parent->displayName(),
"parent_name");
154 EXPECT_EQ(reco_parent->identifier(), parent->identifier());
155 EXPECT_EQ(reco_parent->itemTags()->defaultTag(),
"defaultTag");
156 EXPECT_EQ(reco_parent->model(),
nullptr);
159 auto reco_child = reco_parent->getItem(
"defaultTag");
160 EXPECT_EQ(reco_child->parent(), reco_parent.get());
161 EXPECT_EQ(reco_child->childrenCount(), 0);
162 EXPECT_EQ(reco_child->modelType(),
model_type);
163 EXPECT_EQ(reco_child->displayName(),
"child_name");
164 EXPECT_EQ(reco_child->identifier(), child->identifier());
165 EXPECT_EQ(reco_child->itemTags()->defaultTag(),
"");
175 auto parent = std::make_unique<SessionItem>(
model_type);
176 parent->setDisplayName(
"parent_name");
179 child->setDisplayName(
"child_name");
183 auto object = converter->to_json(parent.get());
193 auto reco_parent = converter->from_json(document.object());
196 EXPECT_EQ(reco_parent->childrenCount(), 1);
197 EXPECT_EQ(reco_parent->modelType(),
model_type);
198 EXPECT_EQ(reco_parent->displayName(),
"parent_name");
199 EXPECT_EQ(reco_parent->identifier(), parent->identifier());
200 EXPECT_EQ(reco_parent->itemTags()->defaultTag(),
"defaultTag");
201 EXPECT_EQ(reco_parent->model(),
nullptr);
204 auto reco_child = reco_parent->getItem(
"defaultTag");
205 EXPECT_EQ(reco_child->parent(), reco_parent.get());
206 EXPECT_EQ(reco_child->childrenCount(), 0);
207 EXPECT_EQ(reco_child->modelType(),
model_type);
208 EXPECT_EQ(reco_child->displayName(),
"child_name");
209 EXPECT_EQ(reco_child->identifier(), child->identifier());
210 EXPECT_EQ(reco_child->itemTags()->defaultTag(),
"");
220 auto object = converter->to_json(&item);
227 auto reco = converter->from_json(document.object());
229 EXPECT_EQ(reco->parent(),
nullptr);
230 EXPECT_EQ(reco->modelType(), item.modelType());
231 EXPECT_EQ(reco->displayName(), item.displayName());
232 EXPECT_EQ(reco->identifier(), item.identifier());
234 EXPECT_EQ(reco->toolTip(),
"compound");
236 EXPECT_EQ(reco->getItem(
"Thickness")->toolTip(),
"thickness");
Convenience class which creates a directory on disk for test content.
Checks JsonItem class and its ability to convert SessionItems to json and back.
std::unique_ptr< JsonItemConverter > createConverter()
std::unique_ptr< SessionModel > m_model
Complex item holding mixed SessionItem types (single properties and other CompountItems).
Item to carry concrete editable entity (e.g.
The main object representing an editable/displayable/serializable entity.
std::string identifier() const
Returns unique identifier.
SessionItem * setToolTip(const std::string &tooltip)
Sets item tooltip (fluent interface).
virtual std::string displayName() const
Returns display name.
model_type modelType() const
Returns item's model type.
Main class to hold hierarchy of SessionItem objects.
static TagInfo universalTag(std::string name, std::vector< std::string > modelTypes={})
Constructs universal tag intended for unlimited amount of various items.
static TagRow append(const std::string &tag_name={})
Returns TagRow corresponding to the append to tag_name.
TEST_F(JsonItemConverterTest, propertyItemToJson)
PropertyItem to json object.
const model_type BaseType
materialitems.h Collection of materials to populate MaterialModel.
@ clone
full deep copying with item identifiers preserved
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)
Collection of input paramters for SessionItemConverter.