28 const std::string samplemodel_name =
"SampleModel";
29 const std::string materialmodel_name =
"MaterialModel";
32 std::string get_json_filename(
const std::string& model_name)
34 std::string result(model_name);
35 std::transform(result.begin(), result.end(), result.begin(), ::tolower);
36 return result +
".json";
53 std::vector<SessionModel*>
models()
const
55 return {sample_model.get(), material_model.get()};
74 EXPECT_TRUE(
project.projectDir().empty());
75 EXPECT_FALSE(
project.isModified());
85 auto project_dir = createEmptyDir(
"Untitled1");
88 EXPECT_EQ(
project.projectDir(), project_dir);
89 EXPECT_FALSE(
project.isModified());
91 auto sample_json =
Utils::join(project_dir, get_json_filename(samplemodel_name));
94 auto material_json =
Utils::join(project_dir, get_json_filename(materialmodel_name));
105 item0->
setData(std::string(
"sample_model_item"));
106 auto item0_identifier = item0->identifier();
108 auto item1 = material_model->insertItem<
PropertyItem>();
109 item1->
setData(std::string(
"material_model_item"));
110 auto item1_identifier = item1->identifier();
113 auto project_dir = createEmptyDir(
"Untitled2");
115 EXPECT_TRUE(
project.isModified());
117 EXPECT_FALSE(
project.isModified());
119 EXPECT_EQ(
project.projectDir(), project_dir);
122 sample_model->clear();
123 material_model->clear();
124 EXPECT_EQ(sample_model->rootItem()->childrenCount(), 0);
125 EXPECT_EQ(material_model->rootItem()->childrenCount(), 0);
126 EXPECT_TRUE(
project.isModified());
130 EXPECT_EQ(sample_model->rootItem()->childrenCount(), 1);
131 EXPECT_EQ(material_model->rootItem()->childrenCount(), 1);
134 EXPECT_EQ(sample_model->rootItem()->children()[0]->identifier(), item0_identifier);
135 EXPECT_EQ(material_model->rootItem()->children()[0]->identifier(), item1_identifier);
137 EXPECT_EQ(
project.projectDir(), project_dir);
138 EXPECT_FALSE(
project.isModified());
Convenience class which creates a directory on disk for test content.
Project represents content of all application models in a folder on disk.
Item to carry concrete editable entity (e.g.
bool setData(const T &value, int role=ItemDataRole::DATA, bool direct=false)
Sets data for a given role.
Main class to hold hierarchy of SessionItem objects.
ProjectContext createContext()
std::unique_ptr< SessionModel > material_model
std::unique_ptr< SessionModel > sample_model
std::vector< SessionModel * > models() const
MVVM_MODEL_EXPORT std::string join(const std::string &part1, const std::string &part2)
Joins two path elements into the path.
MVVM_MODEL_EXPORT bool exists(const std::string &fileName)
Returns true if file exists.
materialitems.h Collection of materials to populate MaterialModel.
@ project
selective copying for saving/loading the project (tags and data created by item, updated from JSON)
TEST_F(ProjectTest, initialState)
Provides necessary information for Project construction.
models_callback_t m_models_callback