diff --git a/CMakeLists.txt b/CMakeLists.txt index cf4aa7b..fc766bb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,2 +1,3 @@ cmake_minimum_required(VERSION 3.0) add_subdirectory(src) +add_subdirectory(test) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index edb97f4..68cd220 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -4,11 +4,11 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) if (UNIX) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wno-long-long -pedantic") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wno-long-long -pedantic") endif() if (WIN32) - add_definitions(-DWIN32) + add_definitions(-DWIN32) endif() find_package(Qt5Core) @@ -18,20 +18,20 @@ find_package(Qt5Quick) find_package(Qt5Widgets) set(HEADERS_LIST - BaseQAbstractListModel.h - DOtherSideTypes.h - DynamicSignal.h - BaseQObject.h - DynamicProperty.h - DynamicSlot.h - DOtherSide.h - DynamicQObject.h - IDynamicQObject.h + BaseQAbstractListModel.h + DOtherSideTypes.h + DynamicSignal.h + BaseQObject.h + DynamicProperty.h + DynamicSlot.h + DOtherSide.h + DynamicQObject.h + IDynamicQObject.h ) set(SRC_LIST - DOtherSide.cpp + DOtherSide.cpp ) add_library(${PROJECT_NAME} SHARED ${SRC_LIST} ${HEADERS_LIST}) -target_link_libraries(${PROJECT_NAME} Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Qml Qt5::Quick) +target_link_libraries(${PROJECT_NAME} PRIVATE Qt5::Core Qt5::Gui Qt5::Widgets Qt5::Qml Qt5::Quick) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt new file mode 100644 index 0000000..51756ef --- /dev/null +++ b/test/CMakeLists.txt @@ -0,0 +1,14 @@ +project(TestDynamicQObject) + +set(CMAKE_AUTOMOC ON) +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +if (UNIX) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall -Wno-long-long -pedantic") +endif() + +find_package(Qt5Test REQUIRED) + +add_executable(${PROJECT_NAME} test_dynamicqobject.cpp) + +target_link_libraries(${PROJECT_NAME} Qt5::Test) diff --git a/test/test_dynamicqobject.cpp b/test/test_dynamicqobject.cpp new file mode 100644 index 0000000..231d146 --- /dev/null +++ b/test/test_dynamicqobject.cpp @@ -0,0 +1,52 @@ +#include +#include +#include "../src/DynamicQObject.h" + +class TestDynamicQObject : public QObject +{ + Q_OBJECT + +private slots: + void memoryLeakTest() { + DynamicQObject dynamicQObject; + } + + void testRegisterSignal() { + DynamicQObject dynamicQObject; + int index; + dynamicQObject.registerSignal("fooSignal", {}, index); + QCOMPARE(index != -1, true); + + QSignalSpy signalSpy(&dynamicQObject, SIGNAL(fooSignal())); + dynamicQObject.emitSignal("fooSignal", {}); + QCOMPARE(signalSpy.count(), 1); + } + + void testRegisterSlot() { + DynamicQObject dynamicQObject; + int index; + dynamicQObject.registerSlot("fooSlot", QMetaType::Void, {}, index); + QCOMPARE(index != -1, true); + } + + void testRegisterProperty() { + DynamicQObject dynamicQObject; + int index = -1; + bool result = false; + result = dynamicQObject.registerSlot("foo", QMetaType::Int, {}, index); + QCOMPARE(index != -1, true); + QCOMPARE(result, true); + result = dynamicQObject.registerSlot("setFoo", QMetaType::Void, {QMetaType::Int}, index); + QCOMPARE(index != -1, true); + QCOMPARE(result, true); + result = dynamicQObject.registerSignal("fooChanged", {QMetaType::Int}, index); + QCOMPARE(index != -1, true); + QCOMPARE(result, true); + result = dynamicQObject.registerProperty("foo", QMetaType::Int, "foo", "setFoo", "fooChanged"); + QCOMPARE(result, true); + } +}; + +QTEST_MAIN(TestDynamicQObject) + +#include "test_dynamicqobject.moc"