GCC Code Coverage Report


Directory: src/gate/
File: src/gate/tech/tests/gatetech_cpp_test/test_barcodes.cpp
Date: 2026-09-21 06:26:40
Exec Total Coverage
Lines: 19 19 100.0%
Functions: 6 6 100.0%
Branches: 46 134 34.3%

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