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/6MockBufferedWriter<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 |