BornAgain  1.19.0
Simulate and fit neutron and x-ray scattering at grazing incidence
JsonItemContainerConverterTest Class Reference

Checks JsonItemContainerConverter class and its ability to convert SessionItemContainer to json and back. More...

Inheritance diagram for JsonItemContainerConverterTest:
[legend]
Collaboration diagram for JsonItemContainerConverterTest:
[legend]

Public Member Functions

 JsonItemContainerConverterTest ()
 
 ~JsonItemContainerConverterTest ()
 
std::unique_ptr< JsonItemContainerConvertercreateConverter () const
 
std::string createEmptyDir (const std::string &subdir) const
 Creates an empty directory in main test folder. More...
 
std::string testDir () const
 
std::string testPath () const
 Return full path to the test folder. Located in CMAKE_BINARY_DIR/test_output/<m_test_dir>. More...
 

Public Attributes

std::unique_ptr< JsonItemDataConverterm_itemdata_converter
 

Protected Attributes

std::string m_test_dir
 

Detailed Description

Checks JsonItemContainerConverter class and its ability to convert SessionItemContainer to json and back.

Full testing is not possible since JsonItemContainerConverter requires machinery provided by JsonItemConverter. Simplifed item/json creation is used.

Definition at line 36 of file jsonitemcontainerconverter.test.cpp.

Constructor & Destructor Documentation

◆ JsonItemContainerConverterTest()

JsonItemContainerConverterTest::JsonItemContainerConverterTest ( )
inline

Definition at line 38 of file jsonitemcontainerconverter.test.cpp.

39  : FolderBasedTest("test_JsonItemContainerConverterTest")
40  , m_itemdata_converter(std::make_unique<JsonItemDataConverter>())
41  {
42  }
FolderBasedTest(const std::string &test_dir)
std::unique_ptr< JsonItemDataConverter > m_itemdata_converter

◆ ~JsonItemContainerConverterTest()

JsonItemContainerConverterTest::~JsonItemContainerConverterTest ( )
default

Member Function Documentation

◆ createConverter()

std::unique_ptr<JsonItemContainerConverter> JsonItemContainerConverterTest::createConverter ( ) const
inline

Definition at line 44 of file jsonitemcontainerconverter.test.cpp.

45  {
46  //! Simplified method to convert SessionItem to JSON object.
47  auto to_json = [this](const SessionItem& item) {
48  QJsonObject result;
49  result[JsonItemFormatAssistant::modelKey] = QString::fromStdString(item.modelType());
50  result[JsonItemFormatAssistant::itemDataKey] =
51  m_itemdata_converter->to_json(*item.itemData());
52  result[JsonItemFormatAssistant::itemTagsKey] = QJsonObject();
53  return result;
54  };
55 
56  //! Simplified method to create SessionItem from JSON object
57  auto create_item = [this](const QJsonObject& json) {
58  auto result = std::make_unique<SessionItem>();
59  m_itemdata_converter->from_json(json[JsonItemFormatAssistant::itemDataKey].toArray(),
60  *result->itemData());
61  return result;
62  };
63 
64  //! Simplified method to update SessionItem from JSON object
65  auto update_item = [this](const QJsonObject& json, SessionItem* item) {
66  m_itemdata_converter->from_json(json[JsonItemFormatAssistant::itemDataKey].toArray(),
67  *item->itemData());
68  };
69 
70  ConverterCallbacks callbacks{to_json, create_item, update_item};
71  return std::make_unique<JsonItemContainerConverter>(callbacks);
72  }
The main object representing an editable/displayable/serializable entity.
Definition: sessionitem.h:38
Provides necessary callbacks to convert SessionItem to JSON and back.

References ModelView::JsonItemFormatAssistant::itemDataKey, ModelView::JsonItemFormatAssistant::itemTagsKey, and ModelView::JsonItemFormatAssistant::modelKey.

◆ createEmptyDir()

std::string FolderBasedTest::createEmptyDir ( const std::string &  subdir) const
inherited

Creates an empty directory in main test folder.

Remove recursively previous one with the same name, if exist.

Definition at line 39 of file folderbasedtest.cpp.

40 {
41  auto path = ModelView::Utils::join(testPath(), subdir);
44  return path;
45 }
std::string testPath() const
Return full path to the test folder. Located in CMAKE_BINARY_DIR/test_output/<m_test_dir>.
MVVM_MODEL_EXPORT void remove_all(const std::string &path)
Removes directory with all its content.
Definition: fileutils.cpp:67
MVVM_MODEL_EXPORT std::string join(const std::string &part1, const std::string &part2)
Joins two path elements into the path.
Definition: fileutils.cpp:37
MVVM_MODEL_EXPORT bool create_directory(const std::string &path)
Create directory, parent directory must exist.
Definition: fileutils.cpp:47

References ModelView::Utils::create_directory(), ModelView::Utils::join(), ModelView::Utils::remove_all(), and FolderBasedTest::testPath().

Here is the call graph for this function:

◆ testDir()

std::string FolderBasedTest::testDir ( ) const
inherited

Definition at line 24 of file folderbasedtest.cpp.

25 {
26  return m_test_dir;
27 }
std::string m_test_dir

References FolderBasedTest::m_test_dir.

◆ testPath()

std::string FolderBasedTest::testPath ( ) const
inherited

Return full path to the test folder. Located in CMAKE_BINARY_DIR/test_output/<m_test_dir>.

Definition at line 31 of file folderbasedtest.cpp.

32 {
34 }
std::string TestDirectoryPath(const std::string &test_sub_dir)
Returns full path to the main test folder in CMAKE_BINARY_DIR.
Definition: test_utils.cpp:47

References FolderBasedTest::m_test_dir, and TestUtils::TestDirectoryPath().

Referenced by FolderBasedTest::createEmptyDir().

Here is the call graph for this function:

Member Data Documentation

◆ m_itemdata_converter

std::unique_ptr<JsonItemDataConverter> JsonItemContainerConverterTest::m_itemdata_converter

Definition at line 76 of file jsonitemcontainerconverter.test.cpp.

◆ m_test_dir

std::string FolderBasedTest::m_test_dir
protectedinherited

The documentation for this class was generated from the following file: