64 const auto parent_identifier = parent->identifier();
66 parent->setData(QVariant::fromValue(42));
69 const auto child_identifier = child->
identifier();
72 document.save(fileName);
78 document.load(fileName);
84 auto reco_child = reco_parent->
getItem(
"", 0);
87 EXPECT_EQ(reco_parent->model(), &model);
89 EXPECT_EQ(reco_parent->parent(), model.
rootItem());
90 EXPECT_EQ(reco_parent->displayName(),
"SessionItem");
91 EXPECT_EQ(reco_parent->childrenCount(), 1);
92 EXPECT_EQ(reco_parent->identifier(), parent_identifier);
93 EXPECT_EQ(reco_parent->itemTags()->defaultTag(),
"defaultTag");
94 EXPECT_EQ(reco_parent->data<
int>(), 42);
97 EXPECT_EQ(reco_child->model(), &model);
99 EXPECT_EQ(reco_child->parent(), reco_parent);
100 EXPECT_EQ(reco_child->displayName(),
"Property");
101 EXPECT_EQ(reco_child->childrenCount(), 0);
102 EXPECT_EQ(reco_child->identifier(), child_identifier);
103 EXPECT_EQ(reco_child->itemTags()->defaultTag(),
"");
117 const auto parent_identifier1 = parent1->
identifier();
120 const auto parent_identifier2 = parent2->
identifier();
123 document.save(fileName);
126 model1.removeItem(model1.rootItem(), {
"", 0});
127 model2.removeItem(model2.rootItem(), {
"", 0});
130 document.load(fileName);
135 auto reco_parent1 = model1.rootItem()->getItem(
"", 0);
136 auto reco_parent2 = model2.rootItem()->getItem(
"", 0);
139 EXPECT_EQ(reco_parent1->model(), &model1);
140 EXPECT_EQ(reco_parent1->parent(), model1.rootItem());
141 EXPECT_EQ(reco_parent1->identifier(), parent_identifier1);
143 EXPECT_EQ(reco_parent2->model(), &model2);
144 EXPECT_EQ(reco_parent2->parent(), model2.rootItem());
145 EXPECT_EQ(reco_parent2->identifier(), parent_identifier2);
158 const auto parent_identifier1 = parent1->
identifier();
161 const auto parent_identifier2 = parent2->
identifier();
166 document.
save(fileName);
170 model1.removeItem(model1.rootItem(), {
"", 0});
171 model2.removeItem(model2.rootItem(), {
"", 0});
176 EXPECT_THROW(document.load(fileName), std::runtime_error);
Convenience class which creates a directory on disk for test content.
Tests JsonDocument class.
Saves and restores list of SessionModel's to/from disk using json format.
void save(const std::string &file_name) const override
Saves models on disk.
Item to carry concrete editable entity (e.g.
PropertyItem * setDisplayName(const std::string &name) override
Sets display name (fluent interface).
The main object representing an editable/displayable/serializable entity.
std::string identifier() const
Returns unique identifier.
SessionItem * getItem(const std::string &tag, int row=0) const
Returns item at given row of given tag.
void registerTag(const TagInfo &tagInfo, bool set_as_default=false)
Registers tag to hold items under given name.
virtual SessionItem * setDisplayName(const std::string &name)
Sets display name (fluent interface).
Main class to hold hierarchy of SessionItem objects.
SessionItem * rootItem() const
Returns root item of the model.
T * insertItem(SessionItem *parent=nullptr, const TagRow &tagrow={})
Inserts item into given parent under given tagrow.
void removeItem(SessionItem *parent, const TagRow &tagrow)
Removes given row from parent.
static TagInfo universalTag(std::string name, std::vector< std::string > modelTypes={})
Constructs universal tag intended for unlimited amount of various items.
TEST_F(JsonDocumentTest, saveLoadSingleModel)
Saving the model with content into document and restoring it after.
const model_type PropertyType
const model_type BaseType
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.