diff --git a/CMakeLists.txt b/CMakeLists.txt index 1554107..1e7c069 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,4 +39,13 @@ target_link_libraries(UnitTests Catch2::Catch2) include(CTest) include(Catch) -catch_discover_tests(UnitTests) \ No newline at end of file +catch_discover_tests(UnitTests) + +if (ENABLE_COVERAGE) + set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/../external/codecov/cmake" ${CMAKE_MODULE_PATH}) + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/CMake") + find_package(codecov) + add_coverage(UnitTests) + list(APPEND LCOV_REMOVE_PATTERNS "/usr/") + coverage_evaluate() +endif() diff --git a/src/internal.cpp b/src/internal.cpp index e6ff8e8..f576563 100644 --- a/src/internal.cpp +++ b/src/internal.cpp @@ -8,6 +8,24 @@ namespace vkvm { Impl impl; + auto setDefaultValues() -> void { + impl.localMemoryWarn = false; + if (getSharedMemory() != nullptr) { + setMode(GraphicMode::RGB); + setCharactersPerRow(60); + setCharactersPerColumn(20); + setHeight(600); + setWidth(800); + setMousePosition(42, 42); + setBackgroundColor(black); + setForegroundColor(white); + setRedrawInterval(20); + setTimerInterruptInterval(10); + setFont(FontType(3, "", 0, 0)); + } + impl.localMemoryWarn = true; + } + auto sendSignal(pid_t pid, int signalNumber) -> void { kill(pid, signalNumber); } diff --git a/src/internal.hpp b/src/internal.hpp index a84676a..ff57774 100644 --- a/src/internal.hpp +++ b/src/internal.hpp @@ -65,6 +65,9 @@ constexpr int keyboardBufferSize = 16; extern Impl impl; + + auto setDefaultValues() -> void; + /** * send a signal to a process * @param pid of the process to which the signal is send diff --git a/src/vkvm.cpp b/src/vkvm.cpp index 9e42e38..837500b 100644 --- a/src/vkvm.cpp +++ b/src/vkvm.cpp @@ -15,24 +15,6 @@ namespace vkvm { setDefaultValues(); } - auto setDefaultValues() -> void { - impl.localMemoryWarn = false; - if (getSharedMemory() != nullptr) { - setMode(GraphicMode::RGB); - setCharactersPerRow(60); - setCharactersPerColumn(20); - setHeight(600); - setWidth(800); - setMousePosition(42, 42); - setBackgroundColor(black); - setForegroundColor(white); - setRedrawInterval(20); - setTimerInterruptInterval(10); - setFont(FontType(3, "", 0, 0)); - } - impl.localMemoryWarn = true; - } - auto registerEvent(EventType type, const std::function &handler) -> bool { int signum = SIGUSR1 + impl.eventTable.size(); auto ivt = getInterruptTable(); @@ -205,7 +187,7 @@ namespace vkvm { } auto reset() -> void { - //TODO(julian): reset + setDefaultValues(); } auto getWidth() -> int { diff --git a/src/vkvm.hpp b/src/vkvm.hpp index b882206..7c50541 100644 --- a/src/vkvm.hpp +++ b/src/vkvm.hpp @@ -28,7 +28,6 @@ namespace vkvm { */ auto initialize(int pid) -> void; - auto setDefaultValues() -> void; /** * set pixel at a x,y position to a certain color. diff --git a/test/default_test.cpp b/test/default_test.cpp new file mode 100644 index 0000000..eac0105 --- /dev/null +++ b/test/default_test.cpp @@ -0,0 +1,70 @@ +#include "../src/internal.hpp" +#include "../src/vkvm.hpp" +#include + +TEST_CASE("Default values") { + vkvm::initialize(0); + + SECTION("before") { + REQUIRE(vkvm::getMode() == vkvm::RGB); + REQUIRE(vkvm::getCharactersPerRow() == 60); + REQUIRE(vkvm::getCharactersPerColumn() == 20); + REQUIRE(vkvm::getHeight() == 600); + REQUIRE(vkvm::getWidth() == 800); + REQUIRE(vkvm::getMousePosition().x == 42); + REQUIRE(vkvm::getMousePosition().y == 42); + REQUIRE(vkvm::getBackgroundColor() == vkvm::black); + REQUIRE(vkvm::getForegroundColor() == vkvm::white); + REQUIRE(vkvm::getRedrawInterval() == 20); + REQUIRE(vkvm::getTimerInterruptInterval() == 10); + REQUIRE(vkvm::getFont().getId() == 3); + } + + SECTION("change") { + vkvm::setMode(vkvm::TwoColors); + vkvm::setCharactersPerRow(100); + vkvm::setCharactersPerColumn(100); + vkvm::setHeight(40); + vkvm::setWidth(40); + vkvm::setMousePosition(41, 43); + vkvm::setBackgroundColor(vkvm::red); + vkvm::setForegroundColor(vkvm::blue); + vkvm::setRedrawInterval(1); + vkvm::setTimerInterruptInterval(2); + vkvm::setFont(vkvm::FontType(5, "", 5, 5)); + + + + REQUIRE(vkvm::getMode() == vkvm::TwoColors); + REQUIRE(vkvm::getCharactersPerRow() == 100); + REQUIRE(vkvm::getCharactersPerColumn() == 100); + REQUIRE(vkvm::getHeight() == 40); + REQUIRE(vkvm::getWidth() == 40); + REQUIRE(vkvm::getMousePosition().x == 41); + REQUIRE(vkvm::getMousePosition().y == 43); + REQUIRE(vkvm::getBackgroundColor() == vkvm::red); + REQUIRE(vkvm::getForegroundColor() == vkvm::blue); + REQUIRE(vkvm::getRedrawInterval() == 1); + REQUIRE(vkvm::getTimerInterruptInterval() == 2); + REQUIRE(vkvm::getFont().getId() == 5); + } + + + SECTION("after") { + vkvm::reset(); + REQUIRE(vkvm::getMode() == vkvm::RGB); + REQUIRE(vkvm::getCharactersPerRow() == 60); + REQUIRE(vkvm::getCharactersPerColumn() == 20); + REQUIRE(vkvm::getHeight() == 600); + REQUIRE(vkvm::getWidth() == 800); + REQUIRE(vkvm::getMousePosition().x == 42); + REQUIRE(vkvm::getMousePosition().y == 42); + REQUIRE(vkvm::getBackgroundColor() == vkvm::black); + REQUIRE(vkvm::getForegroundColor() == vkvm::white); + REQUIRE(vkvm::getRedrawInterval() == 20); + REQUIRE(vkvm::getTimerInterruptInterval() == 10); + REQUIRE(vkvm::getFont().getId() == 3); + + } + +}