GCC Code Coverage Report


Directory: ./
File: unit_tests/tests/util/test_buffered_writer.cpp
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 100.0% 56 0 56
Functions: 100.0% 22 0 22
Branches: 65.1% 114 0 175
Decisions: -% 0 - 0

Line Branch Decision Exec Source
1 #include "pch.h"
2
3 #include "buffered_writer.h"
4
5 using ::testing::_;
6 using ::testing::Return;
7 using ::testing::StrictMock;
8
9 template <int TBufferSize>
10 struct MockBufferedWriter : public BufferedWriter<TBufferSize>
11 {
12
6/6
MockBufferedWriter<50>::gmock_writeInternal(testing::Matcher<char const*> const&, testing::Matcher<unsigned long> const&):
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
MockBufferedWriter<10>::gmock_writeInternal(testing::Matcher<char const*> const&, testing::Matcher<unsigned long> const&):
✓ Branch 3 taken 6 times.
✓ Branch 7 taken 6 times.
✓ Branch 10 taken 6 times.
14 MOCK_METHOD(size_t, writeInternal, (const char*, size_t), (override));
13 };
14
15 static const char* testBuffer = "abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
16
17 4 TEST(BufferedWriter, WriteSmall) {
18 // No calls to dut expected
19
1/1
✓ Branch 2 taken 1 time.
1 StrictMock<MockBufferedWriter<10>> dut;
20
21
3/7
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_EQ(0u, dut.write(testBuffer, 5));
22 2 }
23
24 4 TEST(BufferedWriter, WriteSmallFlush) {
25
1/1
✓ Branch 2 taken 1 time.
1 StrictMock<MockBufferedWriter<10>> dut;
26
8/8
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
✓ Branch 18 taken 1 time.
✓ Branch 23 taken 1 time.
✓ Branch 26 taken 1 time.
✓ Branch 29 taken 1 time.
1 EXPECT_CALL(dut, writeInternal(_, 5)).WillOnce(Return(5));
27
28
4/9
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
1 ASSERT_EQ(0u, dut.write(testBuffer, 5));
29
30
3/7
✓ Branch 4 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_EQ(dut.flush(), 5u);
31 1 }
32
33 4 TEST(BufferedWriter, WriteMultipleSmall) {
34
1/1
✓ Branch 2 taken 1 time.
1 StrictMock<MockBufferedWriter<10>> dut;
35 {
36
8/8
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
✓ Branch 18 taken 1 time.
✓ Branch 23 taken 1 time.
✓ Branch 26 taken 1 time.
✓ Branch 29 taken 1 time.
1 EXPECT_CALL(dut, writeInternal(_, 10)).WillOnce(Return(10));
37
8/8
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
✓ Branch 18 taken 1 time.
✓ Branch 23 taken 1 time.
✓ Branch 26 taken 1 time.
✓ Branch 29 taken 1 time.
1 EXPECT_CALL(dut, writeInternal(_, 2)).WillOnce(Return(2));
38 }
39
40
3/7
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_EQ(0u, dut.write(testBuffer, 3));
41
3/7
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_EQ(0u, dut.write(testBuffer, 3));
42
3/7
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_EQ(0u, dut.write(testBuffer, 3));
43
3/7
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_EQ(10u, dut.write(testBuffer, 3)); // <- this one should trigger a flush
44
45 // Flush the remainder
46
3/7
✓ Branch 4 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_EQ(dut.flush(), 2u);
47 2 }
48
49 4 TEST(BufferedWriter, WriteSingleFullBufferSize) {
50
1/1
✓ Branch 2 taken 1 time.
1 StrictMock<MockBufferedWriter<50>> dut;
51
52
8/8
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
✓ Branch 18 taken 1 time.
✓ Branch 23 taken 1 time.
✓ Branch 26 taken 1 time.
✓ Branch 29 taken 1 time.
1 EXPECT_CALL(dut, writeInternal(_, 50)).WillOnce(Return(50));
53
54
3/7
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_EQ(50u, dut.write(testBuffer, 50));
55
56 // Nothing left to flush!
57
3/7
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_EQ(0u, dut.flush());
58 2 }
59
60 4 TEST(BufferedWriter, WriteLarge) {
61
1/1
✓ Branch 2 taken 1 time.
1 StrictMock<MockBufferedWriter<10>> dut;
62
63 {
64
8/8
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
✓ Branch 18 taken 1 time.
✓ Branch 23 taken 1 time.
✓ Branch 26 taken 1 time.
✓ Branch 29 taken 1 time.
1 EXPECT_CALL(dut, writeInternal(_, 45)).WillOnce(Return(45));
65 }
66
67
3/7
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_EQ(45u, dut.write(testBuffer, 45));
68
69
3/7
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_EQ(0u, dut.flush());
70 2 }
71
72 4 TEST(BufferedWriter, WriteLargeAfterSmall) {
73
1/1
✓ Branch 2 taken 1 time.
1 StrictMock<MockBufferedWriter<10>> dut;
74
75 {
76
8/8
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
✓ Branch 18 taken 1 time.
✓ Branch 23 taken 1 time.
✓ Branch 26 taken 1 time.
✓ Branch 29 taken 1 time.
1 EXPECT_CALL(dut, writeInternal(_, 10)).WillOnce(Return(10));
77
8/8
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
✓ Branch 14 taken 1 time.
✓ Branch 18 taken 1 time.
✓ Branch 23 taken 1 time.
✓ Branch 26 taken 1 time.
✓ Branch 29 taken 1 time.
1 EXPECT_CALL(dut, writeInternal(_, 36)).WillOnce(Return(36));
78 }
79
80
3/7
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_EQ(0u, dut.write(testBuffer, 1));
81
82
3/7
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_EQ(46u, dut.write(testBuffer, 45));
83
84
3/7
✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
1 EXPECT_EQ(0u, dut.flush());
85 2 }
86