From a08f6167b3d7b7a0d887ad1afc1aa5c772241033 Mon Sep 17 00:00:00 2001 From: Moritz Martinius Date: Thu, 16 Nov 2023 20:58:31 +0100 Subject: [PATCH 1/2] Fix build, logging and added some coverage report (I should do more commits) --- .gitignore | 8 ++++++-- generate_coverage.sh | 21 +++++++++++++++++++++ meson.build | 38 ++++---------------------------------- src/main.cpp | 4 ---- src/meson.build | 24 ++++++++++++++++++++++++ tests/meson.build | 9 ++++----- 6 files changed, 59 insertions(+), 45 deletions(-) create mode 100755 generate_coverage.sh create mode 100644 src/meson.build diff --git a/.gitignore b/.gitignore index b215aae..c0c51c9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,13 @@ +# Folder builddir/ +ptouch-print/ subprojects/* -!subprojects/*.wrap .cache/ +coverageReport/ + +# Files +!subprojects/*.wrap .vscode/* !.vscode/c_cpp_properties.json !.vscode/settings.json !.vscode/launch.json -ptouch-print/ \ No newline at end of file diff --git a/generate_coverage.sh b/generate_coverage.sh new file mode 100755 index 0000000..32b1ef4 --- /dev/null +++ b/generate_coverage.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +SCRIPT_PATH="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )" +HTML_COV_PATH="coverageReport/html" +HTML_START_FILE="index.html" + +echo "Generating Coverage report for ptouch-prnt" + +ninja -C builddir +ninja -C builddir test + +mkdir -p ${HTML_COV_PATH} +gcovr --html --html-details --html-syntax-highlighting --filter src --output ${HTML_COV_PATH}/${HTML_START_FILE} + +if [ $? ] +then + echo "Coverage report successful generated!" + echo "Open: file://${SCRIPT_PATH}/${HTML_COV_PATH}/${HTML_START_FILE}" +else + echo "Error generating coverage report!" +fi \ No newline at end of file diff --git a/meson.build b/meson.build index 888c1e7..84a0756 100644 --- a/meson.build +++ b/meson.build @@ -17,45 +17,15 @@ endif incdir = include_directories('src') -ptprnt_hpps = [ - 'src/libusbwrap/interface/IUsbDeviceFactory.hpp', - 'src/libusbwrap/interface/IUsbDevice.hpp', - 'src/libusbwrap/UsbDeviceFactory.hpp', - 'src/libusbwrap/LibUsbTypes.hpp', - 'src/libusbwrap/UsbDevice.hpp', - 'src/interface/IPrinterDriver.hpp', - 'src/interface/IPrinterTypes.hpp', - 'src/P700Printer.hpp', - 'src/PtouchPrint.hpp', - 'src/graphics/Bitmap.hpp', - 'src/graphics/Image.hpp', - 'src/graphics/Monochrome.hpp' -] - -ptprnt_srcs = [ - 'src/PtouchPrint.cpp', - 'src/P700Printer.cpp', - 'src/graphics/Image.cpp', - 'src/graphics/Bitmap.cpp', - 'src/graphics/Monochrome.cpp', - 'src/libusbwrap/UsbDeviceFactory.cpp', - 'src/libusbwrap/UsbDevice.cpp', -] - -ptprnt_lib = library('ptprnt', - include_directories: incdir, - install: true, - dependencies: [usb_dep, log_dep, pangocairo_dep, cli11_dep], - sources: [ptprnt_hpps, ptprnt_srcs]) - -ptprnt_dep = declare_dependency(include_directories: incdir, - link_with: ptprnt_lib) +subdir('src') ptprnt_exe = executable( 'ptprnt', 'src/main.cpp', install: true, - dependencies : [usb_dep, log_dep, cli11_dep, ptprnt_dep], + dependencies : [usb_dep, log_dep, pangocairo_dep, cli11_dep], + include_directories: incdir, + sources: [ptprnt_srcs], cpp_args : ['-DPROJ_VERSION="'+meson.project_version()+'"'], ) diff --git a/src/main.cpp b/src/main.cpp index ddc6b74..ed35bcc 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -16,10 +16,6 @@ along with this program. If not, see . */ - -#include -#include - #include "PtouchPrint.hpp" int main(int argc, char** argv) { diff --git a/src/meson.build b/src/meson.build new file mode 100644 index 0000000..a5fb667 --- /dev/null +++ b/src/meson.build @@ -0,0 +1,24 @@ +ptprnt_hpps = files ( + 'libusbwrap/interface/IUsbDeviceFactory.hpp', + 'libusbwrap/interface/IUsbDevice.hpp', + 'libusbwrap/UsbDeviceFactory.hpp', + 'libusbwrap/LibUsbTypes.hpp', + 'libusbwrap/UsbDevice.hpp', + 'interface/IPrinterDriver.hpp', + 'interface/IPrinterTypes.hpp', + 'P700Printer.hpp', + 'PtouchPrint.hpp', + 'graphics/Bitmap.hpp', + 'graphics/Image.hpp', + 'graphics/Monochrome.hpp' +) + +ptprnt_srcs = files ( + 'PtouchPrint.cpp', + 'P700Printer.cpp', + 'graphics/Image.cpp', + 'graphics/Bitmap.cpp', + 'graphics/Monochrome.cpp', + 'libusbwrap/UsbDeviceFactory.cpp', + 'libusbwrap/UsbDevice.cpp', +) \ No newline at end of file diff --git a/tests/meson.build b/tests/meson.build index 5bfd7a6..493afcc 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -1,6 +1,6 @@ -tests = [['bitmap_test', 'bitmap_test_exe', ['bitmap_test/bitmap_test.cpp']], - ['image_test', 'image_test_exe', ['image_test/image_test.cpp']], - ['monochrome_test', 'monochrome_test_exe', ['monochrome_test/monochrome_test.cpp']] +tests = [['bitmap_test', 'bitmap_test_exe', ptprnt_srcs + ['bitmap_test/bitmap_test.cpp']], + ['image_test', 'image_test_exe', ptprnt_srcs +['image_test/image_test.cpp']], + ['monochrome_test', 'monochrome_test_exe', ptprnt_srcs +['monochrome_test/monochrome_test.cpp']] ] foreach test : tests @@ -8,8 +8,7 @@ foreach test : tests executable(test.get(1), sources: test.get(2), include_directories: incdir, - link_with:[ptprnt_lib], - dependencies: [gtest_dep, pangocairo_dep] + dependencies: [gtest_dep, usb_dep, log_dep, pangocairo_dep, cli11_dep] ) ) endforeach \ No newline at end of file -- 2.49.1 From 3fd667104824bfa18b73e070a0ee1e87cda66ad4 Mon Sep 17 00:00:00 2001 From: Moritz Martinius Date: Thu, 16 Nov 2023 21:17:46 +0100 Subject: [PATCH 2/2] Increase the coverage a bit to see if reporting is motivating :) --- src/graphics/Bitmap.cpp | 5 +++++ src/graphics/Bitmap.hpp | 2 ++ tests/bitmap_test/bitmap_test.cpp | 35 +++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+) diff --git a/src/graphics/Bitmap.cpp b/src/graphics/Bitmap.cpp index b197947..bffb917 100644 --- a/src/graphics/Bitmap.cpp +++ b/src/graphics/Bitmap.cpp @@ -52,6 +52,11 @@ bool Bitmap::setPixels(const std::vector& pixels) { return true; } +template +std::vector Bitmap::getPixelsCpy() { + return mPixels; +} + template std::optional> Bitmap::getLine(uint16_t line) { if (line >= mHeight) { diff --git a/src/graphics/Bitmap.hpp b/src/graphics/Bitmap.hpp index 42c5ec1..16325e8 100644 --- a/src/graphics/Bitmap.hpp +++ b/src/graphics/Bitmap.hpp @@ -22,6 +22,7 @@ #include #include +#include #include #include @@ -41,6 +42,7 @@ class Bitmap { uint16_t getWidth(); uint16_t getHeight(); bool setPixels(const std::vector& pixels); + std::vector getPixelsCpy(); std::optional> getLine(uint16_t line); std::optional> getCol(uint16_t col); diff --git a/tests/bitmap_test/bitmap_test.cpp b/tests/bitmap_test/bitmap_test.cpp index 532196a..3185b0e 100644 --- a/tests/bitmap_test/bitmap_test.cpp +++ b/tests/bitmap_test/bitmap_test.cpp @@ -21,7 +21,9 @@ #include +#include #include +#include TEST(basic_test, Bitmap_createBitmapWithCertainSize_yieldsSpecifiedSize) { auto bm = ptprnt::graphics::Bitmap(16, 8); @@ -64,3 +66,36 @@ TEST(basic_test, Bitmap_getBitmapColInsideOfImage_yieldsValidColSize) { auto colSize = col->size(); ASSERT_EQ(8, colSize); } + +TEST(basic_test, Bitmap_setPixels_setsGivenPixels) { + auto bm = ptprnt::graphics::Bitmap(16, 8); + std::vector pix(16 * 8); + + bm.setPixels(pix); + auto pixCpy = bm.getPixelsCpy(); + + ASSERT_EQ(pix, pixCpy); +} + +TEST(basic_test, Bitmap_setPixels_isSuccessfulWithValidPixels) { + auto bm = ptprnt::graphics::Bitmap(16, 8); + std::vector pix(16 * 8); + + ASSERT_TRUE(bm.setPixels(pix)); +} + +TEST(basic_test, Bitmap_setPixels_yieldsSamePixelsBack) { + auto bm = ptprnt::graphics::Bitmap(16, 8); + std::vector pix(16 * 8); + + bm.setPixels(pix); + auto pixCpy = bm.getPixelsCpy(); + ASSERT_EQ(pix, pixCpy); +} + +TEST(basic_test, Bitmap_setPixelsWithWrongSize_isFailing) { + auto bm = ptprnt::graphics::Bitmap(5, 8); + std::vector pix(16 * 8); + + ASSERT_FALSE(bm.setPixels(pix)); +} -- 2.49.1