GCC Code Coverage Report


Directory: src/gate/
File: src/gate/tests/gatecore_cpp_test/test_streams.cpp
Date: 2025-12-12 23:40:09
Exec Total Coverage
Lines: 180 182 98.9%
Functions: 24 25 96.0%
Branches: 303 827 36.6%

Line Branch Exec Source
1 #include "gate/tests.hpp"
2 #include "gate/streams.hpp"
3
4 using namespace gate;
5
6 static StaticString const test_content = "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 1000 Result<gate::size_t> peekResult = strm.tryPeek(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(peekResult.hasValue());
25 500 gate::size_t lenpeek = 0;
26
4/14
✓ Branch 1 taken 500 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 500 times.
✗ Branch 5 not taken.
✓ Branch 8 taken 500 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 500 times.
✗ Branch 12 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
500 GATEXX_TEST_CHECK_NOTHROW(lenpeek = strm.peek(buffer, test_content.length()));
27
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());
28
1/2
✓ Branch 2 taken 500 times.
✗ Branch 3 not taken.
500 gate::size_t retrieved = strm.readBlock(buffer, test_content.length());
29
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());
30 }
31
1/2
✓ Branch 2 taken 5 times.
✗ Branch 3 not taken.
5 gate::size_t eofretrieved = strm.readBlock(buffer, test_content.length());
32
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);
33 5 }
34
35 4 static void common_write_checks(Stream& strm)
36 {
37
1/2
✓ Branch 3 taken 4 times.
✗ Branch 4 not taken.
4 GATEXX_TEST_CHECK(strm.c_impl() != NULL);
38
1/2
✓ Branch 3 taken 4 times.
✗ Branch 4 not taken.
4 GATEXX_TEST_CHECK(!strm.empty());
39
1/2
✓ Branch 5 taken 4 times.
✗ Branch 6 not taken.
4 GATEXX_TEST_CHECK(!strm.getInterfaceName().empty());
40 4 strm.tryWrite("abc", 3);
41 4 strm.tryWriteBlock("abc", 3);
42 4 strm.tryFlush();
43 4 strm << static_cast<gate::int16_t>(16);
44 4 strm << static_cast<gate::int32_t>(32);
45 4 strm << static_cast<gate::int64_t>(64);
46 4 strm << static_cast<gate::uint16_t>(16);
47 4 strm << static_cast<gate::uint32_t>(32);
48 4 strm << static_cast<gate::uint64_t>(64);
49 4 strm << 3.2f;
50 4 strm << 6.4;
51 4 strm << true;
52 4 strm << "xyz";
53 4 strm.println("Hello");
54 4 strm.println("World", 5);
55 4 strm << test_content;
56 4 strm << test_content.c_impl();
57 4 }
58
59 void memstream_checks(MemStream& strm)
60 {
61
62 }
63
64
2/7
✓ Branch 2 taken 3 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.
10 GATEXX_TEST_UNIT(MemStream)
65 {
66 {
67
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 MemStream m;
68
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 m.reserve(2);
69
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 m.fill('A', 5);
70
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 m.discard(3);
71
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 m.discardBack(1);
72
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(m.c_impl() != NULL);
73
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());
74
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');
75
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());
76
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 MemStream m2;
77 2 m.swap(m2);
78 2 m2.swap(m);
79 }
80 {
81
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 MemStream m;
82
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 write_stream(m);
83
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 read_stream(m);
84
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 common_write_checks(m);
85 }
86
87 {
88 char buffer[8192];
89
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 StaticMemStream m(buffer, sizeof(buffer));
90
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 write_stream(m);
91
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 read_stream(m);
92
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 common_write_checks(m);
93
94
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 StaticMemStream m2 = m;
95
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 StaticMemStream m3(NULL, 0, 0);
96
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 m3 = m2;
97 }
98
99 {
100 char buffer[8192];
101
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 LocalMemStream m(buffer, sizeof(buffer));
102
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 write_stream(m);
103
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(m.getData() != NULL);
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(m.size() != 0);
105
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 read_stream(m);
106
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 common_write_checks(m);
107
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 m.discard(1);
108
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 m.discardBack(1);
109 }
110
111 {
112
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 MemFileStream m;
113
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 write_stream(m);
114
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 MemFileStream m2 = m.share();
115
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 m2.seek(0, GATE_STREAM_SEEK_BEGIN);
116
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 m2.reset();
117
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);
118
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);
119
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 read_stream(m2);
120
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 common_write_checks(m);
121
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());
122
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());
123 }
124
125 {
126 static char mem_block[] = "Hello World, World of Hellos";
127 static gate_size_t mem_block_len = sizeof(mem_block) - 1;
128
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 MemViewStream ms(mem_block, mem_block_len, 0);
129
130
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(ms.getResource(GATE_STREAM_RESOURCE_INPUT) != 0);
131
132 char buffer[128];
133
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 gate::size_t len = ms.readBlock(buffer, sizeof(buffer));
134
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(len, mem_block_len);
135
136
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(ms.reset());
137
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(ms.getAvailable(), mem_block_len);
138
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(ms.seek(13, ControlStream::Seek_Begin));
139
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 len = ms.readBlock(buffer, sizeof(buffer));
140
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK_EQUAL(len, 15);
141
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(gate_str_compare(buffer, len, "World of Hellos", 15) == 0);
142 }
143 2 }
144
145
2/7
✓ Branch 2 taken 3 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.
10 GATEXX_TEST_UNIT(StringStream)
146 {
147
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 StringStream ss;
148
149
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 write_stream(ss);
150
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 String view = ss.toView();
151
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());
152
153
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 StringStream sscopy = ss;
154
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 read_stream(ss);
155
156
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 StringStream ss3;
157
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 ss3 = sscopy;
158 2 sscopy.swap(ss3);
159 2 }
160
161
2/7
✓ Branch 2 taken 3 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.
10 GATEXX_TEST_UNIT(SyncMemStream)
162 {
163
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";
164
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 SyncMemStream sms(256, 500);
165
166
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()));
167
168 char buffer[16];
169 4 gate::Result<gate::size_t> returnedResult = sms.tryRead(buffer, sizeof(buffer));
170
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(returnedResult.hasValue());
171
172
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_EQUAL(returnedResult.value(), msg.length());
173
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()));
174
175 2 gate::size_t returned = 0;
176
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)));
177
178
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 SyncMemStream sms2 = sms;
179
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 SyncMemStream sms3(128, 250);
180
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 sms3 = sms2;
181 2 }
182
183 class GATE_API_LOCAL MyStream : public IStreamBuilder
184 {
185 public:
186 bool readCalled;
187 bool peekCalled;
188 bool writeCalled;
189 bool flushCalled;
190
191 1 MyStream()
192 1 : readCalled(false), peekCalled(false), writeCalled(false), flushCalled(false)
193 {
194 1 }
195
196 4 ~MyStream()
197 2 {
198 4 }
199
200 protected:
201 1 gate::size_t read(char* buffer, gate::size_t bufferlen) override
202 {
203 1 this->readCalled = true;
204
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 GATEXX_TEST_CHECK(buffer != NULL);
205
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 GATEXX_TEST_CHECK(bufferlen > 5);
206 1 return gate_str_print_text(buffer, bufferlen, "Hello", 5);
207 }
208
209 1 gate::size_t peek(char* buffer, gate::size_t bufferlen) override
210 {
211 1 this->peekCalled = true;
212
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 GATEXX_TEST_CHECK(buffer != NULL);
213
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 GATEXX_TEST_CHECK(bufferlen > 5);
214 1 return gate_str_print_text(buffer, bufferlen, "Hello", 5);
215 }
216
217 1 gate::size_t write(char const* buffer, gate::size_t bufferlen) override
218 {
219 1 this->writeCalled = true;
220
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 GATEXX_TEST_CHECK(buffer != NULL);
221
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 GATEXX_TEST_CHECK(bufferlen > 0);
222
1/2
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
1 GATEXX_TEST_CHECK(gate_str_compare(buffer, bufferlen, "Hello", 5) == 0);
223 1 return bufferlen;
224 }
225
226 1 void flush() override
227 {
228 1 this->flushCalled = true;
229 1 }
230 };
231
232
2/7
✓ Branch 2 taken 3 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.
10 GATEXX_TEST_UNIT(StreamBuilder)
233 {
234
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 MyStream* ptrStream = new MyStream();
235
236
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
4 Stream strm(ptrStream->c_impl()); // pointer is now owned by stream object
237 char buffer[32];
238 gate::size_t len;
239
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(len = strm.read(buffer, sizeof(buffer)));
240
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(gate_str_compare(buffer, len, "Hello", 5) == 0);
241
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK(ptrStream->readCalled);
242
243
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(len = strm.peek(buffer, sizeof(buffer)));
244
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(gate_str_compare(buffer, len, "Hello", 5) == 0);
245
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK(ptrStream->peekCalled);
246
247
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(len = strm.write("Hello", 5));
248
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK(ptrStream->writeCalled);
249
250
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(strm.flush());
251
4/12
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
2 GATEXX_TEST_CHECK(ptrStream->flushCalled);
252 2 }
253
254
2/7
✓ Branch 2 taken 3 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.
10 GATEXX_TEST_UNIT(StreamTransfer)
255 {
256
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 MemStream m1;
257
2/2
✓ Branch 0 taken 60000 times.
✓ Branch 1 taken 1 times.
120002 for(unsigned n = 0; n < 60000; ++n)
258 {
259 240000 Result<gate::size_t> writeResult = m1.tryWriteBlock("Hello World\n", 12);
260
4/12
✓ Branch 1 taken 60000 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 60000 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 60000 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 60000 times.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
120000 GATEXX_TEST_CHECK(writeResult.hasValue());
261
4/12
✓ Branch 1 taken 60000 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 60000 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 60000 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 60000 times.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
120000 GATEXX_TEST_CHECK_EQUAL(writeResult.value(), 12);
262 }
263
264
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 MemStream orig;
265
3/6
✓ 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.
2 orig.writeBlock(m1.getData(), m1.size());
266
267
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 MemStream m2;
268
269
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
4 VoidResult transferResult = Stream::tryTransfer(m1, m2);
270
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(transferResult.hasValue());
271
272
2/4
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
2 transferResult = Stream::tryTransfer((gate_stream_t&)*m2.c_impl(), (gate_stream_t&)*m1.c_impl());
273
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(transferResult.hasValue());
274
275
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(Stream::transfer((gate_stream_t&)*m1.c_impl(), (gate_stream_t&)*m2.c_impl()));
276
277 char buffer[55]; // strange size
278
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(Stream::transferViaBuffer((gate_stream_t&)*m2.c_impl(), (gate_stream_t&)*m1.c_impl(), buffer, sizeof(buffer)));
279
280
2/4
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
2 transferResult = Stream::tryTransferViaBuffer(m1, m2, buffer, sizeof(buffer));
281
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(transferResult.hasValue());
282
283
2/4
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
2 transferResult = Stream::tryTransferViaBuffer((gate_stream_t&)*m2.c_impl(), (gate_stream_t&)*m1.c_impl(), buffer, sizeof(buffer));
284
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(transferResult.hasValue());
285
286
6/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 12 taken 1 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
2 GATEXX_TEST_REQUIRE_EQUAL(m1.size(), orig.size());
287
7/18
✓ 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 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
2 GATEXX_TEST_REQUIRE_EQUAL(Mem::compare(m1.getData(), orig.getData(), m1.size()), 0);
288 2 }
289