From ac9e67540b80d5d5bd08a101f435c4dc2613bfd8 2017-06-05 07:37:16 From: Alexandre Leroux Date: 2017-06-05 07:37:16 Subject: [PATCH] Inits unit tests for DataSource controller --- diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 27e4fb1..2253ebd 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -79,10 +79,12 @@ IF(BUILD_TESTS) ${testDirectory}/*.c ${testDirectory}/*.cpp ${testDirectory}/*.h) - LIST (REMOVE_ITEM currentTestSources ${TESTS_SOURCES}) - LIST (REMOVE_ITEM currentTestSources ${TESTS_HEADERS}) + LIST (REMOVE_ITEM currentTestSources ${TESTS_SOURCES}) + # LIST (REMOVE_ITEM currentTestSources ${TESTS_HEADERS}) ADD_EXECUTABLE(${testName} ${testFile} ${currentTestSources}) + set_property(TARGET ${testName} PROPERTY CXX_STANDARD 14) + set_property(TARGET ${testName} PROPERTY CXX_STANDARD_REQUIRED ON) TARGET_LINK_LIBRARIES( ${testName} ${TEST_LIBRARIES} ) qt5_use_modules(${testName} Test) diff --git a/core/tests/DataSource/TestDataSourceController.cpp b/core/tests/DataSource/TestDataSourceController.cpp new file mode 100644 index 0000000..03279dc --- /dev/null +++ b/core/tests/DataSource/TestDataSourceController.cpp @@ -0,0 +1,49 @@ +#include +#include + +#include +#include + +#include + +class TestDataSourceController : public QObject { + Q_OBJECT +private slots: + void testRegisterDataSource(); + void testSetDataSourceItem(); +}; + +void TestDataSourceController::testRegisterDataSource() +{ + DataSourceController dataSourceController{}; + + auto uid = dataSourceController.registerDataSource(QStringLiteral("Source1")); + QVERIFY(!uid.isNull()); +} + +void TestDataSourceController::testSetDataSourceItem() +{ + DataSourceController dataSourceController{}; + + // Spy to test controllers' signals + QSignalSpy signalSpy{&dataSourceController, SIGNAL(dataSourceItemSet(const DataSourceItem &))}; + + // Create a data source item + auto source1Name = QStringLiteral("Source1"); + auto source1Values = QVector{source1Name}; + auto source1Item = std::make_unique(std::move(source1Values)); + + // Add data source item to the controller and check that a signal has been emitted after setting + // data source item in the controller + auto source1Uid = dataSourceController.registerDataSource(source1Name); + dataSourceController.setDataSourceItem(source1Uid, std::move(source1Item)); + QCOMPARE(signalSpy.count(), 1); + + // Try to a data source item with an unregistered uid and check that no signal has been emitted + auto unregisteredUid = QUuid::createUuid(); + dataSourceController.setDataSourceItem(unregisteredUid, std::make_unique()); + QCOMPARE(signalSpy.count(), 1); +} + +QTEST_MAIN(TestDataSourceController) +#include "TestDataSourceController.moc" diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt index e3cd44b..3269442 100644 --- a/gui/CMakeLists.txt +++ b/gui/CMakeLists.txt @@ -110,9 +110,11 @@ IF(BUILD_TESTS) ${testDirectory}/*.cpp ${testDirectory}/*.h) LIST (REMOVE_ITEM currentTestSources ${TESTS_SOURCES}) - LIST (REMOVE_ITEM currentTestSources ${TESTS_HEADERS}) + # LIST (REMOVE_ITEM currentTestSources ${TESTS_HEADERS}) ADD_EXECUTABLE(${testName} ${testFile} ${currentTestSources}) + set_property(TARGET ${testName} PROPERTY CXX_STANDARD 14) + set_property(TARGET ${testName} PROPERTY CXX_STANDARD_REQUIRED ON) TARGET_LINK_LIBRARIES( ${testName} ${TEST_LIBRARIES} ) qt5_use_modules(${testName} Test)