GCC Code Coverage Report


Directory: src/gate/
File: src/gate/tests/gatecore_cpp_test/test_blobs.cpp
Date: 2025-09-14 13:10:38
Exec Total Coverage
Lines: 66 66 100.0%
Functions: 9 9 100.0%
Branches: 146 397 36.8%

Line Branch Exec Source
1 #include "gate/tests.hpp"
2 #include "gate/blobs.hpp"
3
4 using namespace gate;
5
6
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(BitFields)
7 {
8
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 BitField empty;
9
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_CHECK(empty.c_impl() == NULL);
10
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_CHECK(empty.length() == 0);
11
12
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 BitField bf(22);
13
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 BitField bf2 = bf;
14
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 BitField bf3;
15
16
2/2
✓ Branch 0 taken 22 times.
✓ Branch 1 taken 1 times.
46 for (gate::size_t n = 0; n != 22; ++n)
17 {
18
1/2
✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
44 bf.set(n, (n % 2) == 1);
19 }
20
21
2/2
✓ Branch 0 taken 22 times.
✓ Branch 1 taken 1 times.
46 for (gate::size_t n = 0; n != 22; ++n)
22 {
23
1/2
✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
44 bool_t value = bf.get(n);
24
4/12
✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 22 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 22 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 22 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
44 GATEXX_TEST_CHECK(value == ((n % 2) == 1));
25 }
26
27
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_CHECK(bf[0] != bf[1]);
28
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_CHECK(bf[0] == bf[2]);
29
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_CHECK(bf[1] == bf[3]);
30
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 bf3 = bf2;
31 2 }
32
33
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(CBlobs)
34 {
35 static char const buffer[] = "Hello World";
36
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Blob b = Blob::createStatic(&buffer[0], sizeof(buffer));
37
38 2 gate_blob_t cb = GATE_INIT_EMPTY;
39
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 gate_blob_copy_constructor(&cb, b.c_impl());
40
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 13 taken 1 times.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
2 GATEXX_TEST_CHECK_EQUAL(gate_blob_length(&cb), b.length());
41
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 gate_blob_destructor(&cb);
42
43
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
2 gate_blob_duplicate_constructor(&cb, b.c_impl());
44
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Blob b2 = Blob::createFrom(cb);
45
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_CHECK_EQUAL(b2.length(), b.length());
46 2 }
47
48
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(Blobs)
49 {
50 { // empty blob
51
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 const Blob b;
52
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_CHECK(b.empty());
53
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_CHECK_EQUAL(b.length(), 0);
54 // out-of-bounds const-access returns zero:
55
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_CHECK_EQUAL(b[0], 0);
56 }
57
58 static char const buffer[] = "Hello World";
59 { // static blob
60
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Blob b = Blob::createStatic(&buffer[0], sizeof(buffer));
61
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_CHECK(!b.empty());
62
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_CHECK_EQUAL(b.length(), sizeof(buffer));
63
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_CHECK_EQUAL(b.data(), &buffer[0]);
64
65
2/2
✓ Branch 0 taken 12 times.
✓ Branch 1 taken 1 times.
26 for (gate::size_t n = 0; n < sizeof(buffer); ++n)
66 {
67
4/12
✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 12 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 12 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 12 times.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
24 GATEXX_TEST_CHECK_EQUAL(b.getByte(n), static_cast<uint8_t>(buffer[n]));
68 }
69 4 Blob token = b.subset(0, 5);
70
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_CHECK_EQUAL(token.length(), 5);
71 }
72
73 { // dynamic blob
74
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Blob b(&buffer[0], sizeof(buffer));
75
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_CHECK(!b.empty());
76
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_CHECK_EQUAL(b.length(), sizeof(buffer));
77
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_CHECK_NOT_EQUAL(b.data(), &buffer[0]);
78
79
2/2
✓ Branch 0 taken 12 times.
✓ Branch 1 taken 1 times.
26 for (gate::size_t n = 0; n < sizeof(buffer); ++n)
80 {
81
4/12
✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 12 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 12 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 12 times.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
24 GATEXX_TEST_CHECK_EQUAL(b.getByte(n), static_cast<uint8_t>(buffer[n]));
82 }
83
84 static gate::uint8_t const c = 'B';
85
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 b.setByte(0, c);
86
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 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
2 GATEXX_TEST_CHECK_EQUAL(b[0], c);
87
88
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Blob clone = b.clone();
89
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_CHECK_EQUAL(b.data(), clone.data());
90
91
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Blob copy = b.copy();
92
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_CHECK_NOT_EQUAL(b.data(), copy.data());
93
94
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Blob dupl(b);
95
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
4 Blob dupl2(*dupl.c_impl());
96
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Blob as;
97
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_CHECK(as.empty());
98
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 as = dupl;
99
100 2 gate_blob_t nb = GATE_INIT_EMPTY;
101
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Blob::assign(nb, b);
102
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 Blob imported = Blob::createFrom(nb);
103 }
104
105 { // dynamic buffer changes
106
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 Blob b(&buffer[0], sizeof(buffer));
107 2 char extracted[5] = GATE_INIT_EMPTY;
108
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_CHECK_EQUAL(b.getBytes(0, extracted, sizeof(extracted)), 5);
109 2 extracted[0] = 'B';
110
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 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
2 GATEXX_TEST_CHECK_EQUAL(b.setBytes(0, extracted, sizeof(extracted)), 5);
111 }
112 2 }
113