@@ -0,0 +1,82 | |||
|
1 | #include "AmdaParser.h" | |
|
2 | ||
|
3 | #include <DataSource/DataSourceItem.h> | |
|
4 | ||
|
5 | #include <QObject> | |
|
6 | #include <QtTest> | |
|
7 | ||
|
8 | #include <QString> | |
|
9 | ||
|
10 | namespace { | |
|
11 | ||
|
12 | /// Path for the tests | |
|
13 | const auto TESTS_RESOURCES_PATH | |
|
14 | = QFileInfo{QString{AMDA_TESTS_RESOURCES_DIR}, "TestAmdaParser"}.absoluteFilePath(); | |
|
15 | ||
|
16 | QString inputFilePath(const QString &inputFileName) | |
|
17 | { | |
|
18 | return QFileInfo{TESTS_RESOURCES_PATH, inputFileName}.absoluteFilePath(); | |
|
19 | } | |
|
20 | ||
|
21 | struct ExpectedResults { | |
|
22 | explicit ExpectedResults() = default; | |
|
23 | explicit ExpectedResults(std::shared_ptr<DataSourceItem> item) | |
|
24 | : m_ParsingOK{true}, m_Item{std::move(item)} | |
|
25 | { | |
|
26 | } | |
|
27 | ||
|
28 | // Parsing was successfully completed | |
|
29 | bool m_ParsingOK{false}; | |
|
30 | // Expected item after parsing | |
|
31 | std::shared_ptr<DataSourceItem> m_Item{nullptr}; | |
|
32 | }; | |
|
33 | ||
|
34 | } // namespace | |
|
35 | ||
|
36 | Q_DECLARE_METATYPE(ExpectedResults) | |
|
37 | ||
|
38 | class TestAmdaParser : public QObject { | |
|
39 | Q_OBJECT | |
|
40 | private slots: | |
|
41 | /// Input test data | |
|
42 | /// @sa testReadJson() | |
|
43 | void testReadJson_data(); | |
|
44 | ||
|
45 | /// Tests parsing of a JSON file | |
|
46 | void testReadJson(); | |
|
47 | }; | |
|
48 | ||
|
49 | void TestAmdaParser::testReadJson_data() | |
|
50 | { | |
|
51 | // ////////////// // | |
|
52 | // Test structure // | |
|
53 | // ////////////// // | |
|
54 | ||
|
55 | // Name of JSON file to read | |
|
56 | QTest::addColumn<QString>("inputFileName"); | |
|
57 | // Expected results | |
|
58 | QTest::addColumn<ExpectedResults>("expectedResults"); | |
|
59 | } | |
|
60 | ||
|
61 | void TestAmdaParser::testReadJson() | |
|
62 | { | |
|
63 | QFETCH(QString, inputFileName); | |
|
64 | QFETCH(ExpectedResults, expectedResults); | |
|
65 | ||
|
66 | // Parses file | |
|
67 | auto filePath = inputFilePath(inputFileName); | |
|
68 | auto item = AmdaParser::readJson(filePath); | |
|
69 | ||
|
70 | // Validates results | |
|
71 | if (expectedResults.m_ParsingOK) { | |
|
72 | QVERIFY(item != nullptr); | |
|
73 | QVERIFY(expectedResults.m_Item != nullptr); | |
|
74 | QVERIFY(*item == *expectedResults.m_Item); | |
|
75 | } | |
|
76 | else { | |
|
77 | QVERIFY(item == nullptr); | |
|
78 | } | |
|
79 | } | |
|
80 | ||
|
81 | QTEST_MAIN(TestAmdaParser) | |
|
82 | #include "TestAmdaParser.moc" |
@@ -4,6 +4,7 SET(SQPAMDA_LIBRARY_NAME "${LIBRARY_PREFFIX}_amda${DEBUG_SUFFIX}") | |||
|
4 | 4 | SET(SOURCES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src") |
|
5 | 5 | SET(INCLUDES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include") |
|
6 | 6 | SET(RESOURCES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/resources") |
|
7 | SET(TESTS_RESOURCES_DIR "${CMAKE_CURRENT_SOURCE_DIR}/tests-resources") | |
|
7 | 8 | |
|
8 | 9 | # Include amda directory |
|
9 | 10 | INCLUDE_DIRECTORIES(${INCLUDES_DIR}) |
@@ -131,6 +132,8 IF(BUILD_TESTS) | |||
|
131 | 132 | LIST(APPEND testFilesToFormat ${TESTS_HEADERS}) |
|
132 | 133 | LIST(APPEND FORMATTING_INPUT_FILES ${testFilesToFormat}) |
|
133 | 134 | SCIQLOP_SET_TO_PARENT_SCOPE(FORMATTING_INPUT_FILES) |
|
135 | ||
|
136 | ADD_DEFINITIONS(-DAMDA_TESTS_RESOURCES_DIR="${TESTS_RESOURCES_DIR}") | |
|
134 | 137 | ENDIF(BUILD_TESTS) |
|
135 | 138 | |
|
136 | 139 | # |
General Comments 0
You need to be logged in to leave comments.
Login now