GCC Code Coverage Report


Directory: src/gate/
File: src/gate/tests/gatecore_cpp_test/test_streams.cpp
Date: 2025-09-14 13:10:38
Exec Total Coverage
Lines: 84 86 97.7%
Functions: 12 13 92.3%
Branches: 118 309 38.2%

Line Branch Exec Source
1 #include "gate/tests.hpp"
2 #include "gate/streams.hpp"
3
4 using namespace gate;
5
6 static String const test_content = String::createStaticFrom("Hello World\n");
7
8 5 static void write_stream(Stream& strm)
9 {
10
2/2
✓ Branch 0 taken 500 times.
✓ Branch 1 taken 5 times.
505 for (unsigned n = 0; n != 100; ++n)
11 {
12 500 gate::size_t written = strm.writeBlock(test_content.c_str(), test_content.size());
13
1/2
✓ Branch 3 taken 500 times.
✗ Branch 4 not taken.
500 GATEXX_TEST_CHECK_EQUAL(written, test_content.size());
14
2/8
✓ Branch 3 taken 500 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 500 times.
✗ Branch 7 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
500 GATEXX_TEST_CHECK_NOTHROW(strm.flush());
15 }
16 5 }
17
18 5 static void read_stream(Stream& strm)
19 {
20 char buffer[1024];
21
2/2
✓ Branch 0 taken 500 times.
✓ Branch 1 taken 5 times.
505 for (unsigned n = 0; n != 100; ++n)
22 {
23
1/2
✓ Branch 2 taken 500 times.
✗ Branch 3 not taken.
500 gate::size_t lenpeek = strm.peek(buffer, test_content.length());
24
4/12
✓ Branch 1 taken 500 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 500 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 500 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 500 times.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
500 GATEXX_TEST_CHECK(lenpeek <= test_content.length());
25
1/2
✓ Branch 2 taken 500 times.
✗ Branch 3 not taken.
500 gate::size_t retrieved = strm.readBlock(buffer, test_content.length());
26
4/12
✓ Branch 1 taken 500 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 500 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 500 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 500 times.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
500 GATEXX_TEST_CHECK_EQUAL(retrieved, test_content.length());
27 }
28
1/2
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
5 gate::size_t eofretrieved = strm.readBlock(buffer, test_content.length());
29
4/12
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 5 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 5 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 5 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
5 GATEXX_TEST_CHECK(eofretrieved == 0);
30 5 }
31
32 4 static void common_write_checks(Stream& strm)
33 {
34
1/2
✓ Branch 3 taken 4 times.
✗ Branch 4 not taken.
4 GATEXX_TEST_CHECK(strm.c_impl() != NULL);
35
1/2
✓ Branch 3 taken 4 times.
✗ Branch 4 not taken.
4 GATEXX_TEST_CHECK(!strm.empty());
36
1/2
✓ Branch 5 taken 4 times.
✗ Branch 6 not taken.
4 GATEXX_TEST_CHECK(!strm.getInterfaceName().empty());
37 4 strm.tryWrite("abc", 3);
38 4 strm.tryWriteBlock("abc", 3);
39 4 strm.tryFlush();
40 4 strm << static_cast<gate::int16_t>(16);
41 4 strm << static_cast<gate::int32_t>(32);
42 4 strm << static_cast<gate::int64_t>(64);
43 4 strm << static_cast<gate::uint16_t>(16);
44 4 strm << static_cast<gate::uint32_t>(32);
45 4 strm << static_cast<gate::uint64_t>(64);
46 4 strm << 3.2f;
47 4 strm << 6.4;
48 4 strm << true;
49 4 strm << "xyz";
50 4 strm << test_content;
51 4 strm << test_content.c_impl();
52 4 }
53
54 void memstream_checks(MemStream& strm)
55 {
56
57 }
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(MemStream)
60 {
61 {
62
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 MemStream m;
63
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 m.fill('A', 5);
64
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 m.discard(3);
65
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 m.discardBack(1);
66
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_REQUIRE(m.getData());
67
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(*m.getData(), 'A');
68
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 Stream::skip(m, m.size());
69
70 }
71 {
72
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 MemStream m;
73
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 write_stream(m);
74
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 read_stream(m);
75
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 common_write_checks(m);
76 }
77
78 {
79 char buffer[8192];
80
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 StaticMemStream m(buffer, sizeof(buffer));
81
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 write_stream(m);
82
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 read_stream(m);
83
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 common_write_checks(m);
84 }
85
86 {
87 char buffer[8192];
88
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 LocalMemStream m(buffer, sizeof(buffer));
89
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 write_stream(m);
90
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 read_stream(m);
91
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 common_write_checks(m);
92 }
93
94 {
95
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 MemFileStream m;
96
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 write_stream(m);
97
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 MemFileStream m2 = m.share();
98
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 m2.seek(0, GATE_STREAM_SEEK_BEGIN);
99
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 m2.reset();
100
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(m2.getAvailable() > 0);
101
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(m2.getSize() > 0);
102
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 read_stream(m2);
103
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 common_write_checks(m);
104
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(m2.canRead());
105
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(m2.canWrite());
106 }
107
108 2 }
109
110
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(StringStream)
111 {
112
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 StringStream ss;
113
114
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 write_stream(ss);
115
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 String view = ss.toView();
116
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(!view.empty());
117
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 read_stream(ss);
118 2 }
119
120
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(SyncMemStream)
121 {
122
2/4
✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
2 static StaticString const msg = "Hello World";
123
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 SyncMemStream sms(256, 500);
124
125
4/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
2 GATEXX_TEST_CHECK_NOTHROW(sms.writeBlock(msg.c_str(), msg.length()));
126
127 char buffer[16];
128 2 gate::size_t returned = 0;
129
4/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 not taken.
✗ Branch 15 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
2 GATEXX_TEST_CHECK_NOTHROW(returned = sms.read(buffer, sizeof(buffer)));
130
131
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_EQUAL(returned, msg.length());
132
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 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(0 == Mem::compare(msg.c_str(), buffer, msg.length()));
133
134
5/14
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
4 GATEXX_TEST_CHECK_THROW(returned = sms.readBlock(buffer, sizeof(buffer)));
135 2 }
136