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.