GCC Code Coverage Report


Directory: src/gate/
File: src/gate/tech/tests/gatetech_cpp_test/test_barcodes.cpp
Date: 2025-09-14 13:10:38
Exec Total Coverage
Lines: 22 34 64.7%
Functions: 9 10 90.0%
Branches: 49 151 32.5%

Line Branch Exec Source
1 #include "gate/tests.hpp"
2 #include "gate/tech/barcodes.hpp"
3 #include "gate/graphics/imageformats.hpp"
4 #include "gate/console.hpp"
5
6 using namespace gate;
7 using namespace gate::tech;
8
9 static const StaticString test_data = "Hello World, world of hellos";
10
11 static void ascii_print_gray_image(gate::graph::RasterImage const& image)
12 {
13 if (image.getPixelFormat() != gate::graph::RasterImage::PixelFormat_gray8)
14 {
15 return;
16 }
17 unsigned const my = image.getHeight();
18 unsigned const mx = image.getWidth();
19
20 for (unsigned y = 0; y != my; ++y)
21 {
22 gate::uint8_t const* pixelptr = static_cast<gate::uint8_t const*>(image.getPixelPtr(0, y));
23 for (unsigned x = 0; x != mx; ++x, ++pixelptr)
24 {
25 if (*pixelptr < 127)
26 {
27 /* black / filled */
28 Console.write("X", 1);
29 }
30 else
31 {
32 /* white / empty */
33 Console.write(" ", 1);
34 }
35 }
36 Console.println(NULL);
37 }
38 }
39
40
2/7
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
6 GATEXX_TEST_UNIT(QRCode)
41 {
42
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 QRCodeBarcodeProcessor qr;
43
44 #if defined(GATE_EXTLIB_QRCODE)
45 graph::RasterImage image;
46 GATEXX_TEST_REQUIRE_NOTHROW(image = qr.print(test_data));
47
48 GATEXX_TEST_CHECK(image.getPixelFormat() == gate::graph::RasterImage::PixelFormat_gray8);
49 ascii_print_gray_image(image);
50
51 Optional<String> decoded_data;
52 GATEXX_TEST_CHECK_NOTHROW(decoded_data = qr.scan(image));
53 GATEXX_TEST_REQUIRE(!decoded_data.empty());
54 GATEXX_TEST_CHECK(*decoded_data == test_data);
55 #endif
56
57 2 }
58
59
2/7
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
6 GATEXX_TEST_UNIT(DataMatrix)
60 {
61
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 DtmxBarcodeProcessor dmtx;
62
63
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 graph::RasterImage image;
64
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
2 GATEXX_TEST_REQUIRE_NOTHROW(image = dmtx.print(test_data));
65
66 4 Optional<String> decoded_data;
67
5/16
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
2 GATEXX_TEST_CHECK_NOTHROW(decoded_data = dmtx.scan(image));
68
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
2 GATEXX_TEST_REQUIRE(!decoded_data.empty());
69
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
2 GATEXX_TEST_REQUIRE(*decoded_data == test_data);
70 2 }
71
72
2/7
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
6 GATEXX_TEST_UNIT(EAN13Barcode)
73 {
74
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 static StaticString const ean13_barcode_sample = "4013752077059";
75
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 EanBarcodeProcessor barcode;
76
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 graph::RasterImage image;
77
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
2 GATEXX_TEST_REQUIRE_NOTHROW(image = barcode.print(ean13_barcode_sample));
78
79 4 Optional<String> decoded_data;
80
5/16
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
2 GATEXX_TEST_CHECK_NOTHROW(decoded_data = barcode.scan(image));
81
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
2 GATEXX_TEST_REQUIRE(!decoded_data.empty());
82
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
2 GATEXX_TEST_REQUIRE(*decoded_data == ean13_barcode_sample);
83 2 }
84