| Line | Branch | Decision | Exec | Source |
|---|---|---|---|---|
| 1 | #include "mlg_field.h" | |||
| 2 | #include "buffered_writer.h" | |||
| 3 | ||||
| 4 | #include <gmock/gmock.h> | |||
| 5 | ||||
| 6 | using namespace MLG; | |||
| 7 | using namespace MLG::Entries; | |||
| 8 | ||||
| 9 | using ::testing::_; | |||
| 10 | using ::testing::ElementsAre; | |||
| 11 | using ::testing::StrictMock; | |||
| 12 | ||||
| 13 | class MockWriter : public Writer { | |||
| 14 | public: | |||
| 15 |
3/3✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✓ Branch 10 taken 1 time.
|
2 | MOCK_METHOD(size_t, write, (const char* buffer, size_t count), (override)); | |
| 16 | ✗ | MOCK_METHOD(size_t, flush, (), (override)); | ||
| 17 | }; | |||
| 18 | ||||
| 19 | 4 | TEST(BinaryLogField, FieldHeader) { | ||
| 20 | 1 | scaled_channel<int8_t, 10> channel; | ||
| 21 |
1/1✓ Branch 2 taken 1 time.
|
1 | Field field(channel, "name", "units", 2, "category"); | |
| 22 | ||||
| 23 | 1 | char buffer[89]; | ||
| 24 |
1/1✓ Branch 2 taken 1 time.
|
1 | StrictMock<MockWriter> bufWriter; | |
| 25 |
5/5✓ Branch 2 taken 1 time.
✓ Branch 6 taken 1 time.
✓ Branch 9 taken 1 time.
✓ Branch 12 taken 1 time.
✓ Branch 16 taken 1 time.
|
3 | EXPECT_CALL(bufWriter, write(_, 89)) | |
| 26 |
2/2✓ Branch 5 taken 1 time.
✓ Branch 8 taken 1 time.
|
3 | .WillOnce([&] (const char* buf, size_t count) { | |
| 27 | memcpy(buffer, buf, count); | |||
| 28 | return 0; | |||
| 29 | }); | |||
| 30 | ||||
| 31 | // Should write 89 bytes | |||
| 32 |
1/1✓ Branch 1 taken 1 time.
|
1 | field.writeHeader(bufWriter); | |
| 33 | ||||
| 34 | // Expect correctly written header | |||
| 35 |
4/8✓ Branch 93 taken 1 time.
✓ Branch 96 taken 1 time.
✓ Branch 99 taken 1 time.
✗ Branch 193 not taken.
✓ Branch 194 taken 1 time.
✗ Branch 197 not taken.
✗ Branch 202 not taken.
✗ Branch 205 not taken.
|
1 | EXPECT_THAT(buffer, ElementsAre( | |
| 36 | 1, // type: int8_t | |||
| 37 | // name - 34 bytes, 0 padded | |||
| 38 | 'n', 'a', 'm', 'e', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |||
| 39 | // units - 10 bytes, 0 padded | |||
| 40 | 'u', 'n', 'i', 't', 's', 0, 0, 0, 0, 0, | |||
| 41 | // display style: float | |||
| 42 | 0, | |||
| 43 | // Scale = 0.1 (float) | |||
| 44 | 0x3d, 0xcc, 0xcc, 0xcd, | |||
| 45 | // Transform - we always use 0 | |||
| 46 | 0, 0, 0, 0, | |||
| 47 | // Digits - 2, as configured | |||
| 48 | 2, | |||
| 49 | 'c', 'a', 't', 'e', 'g', 'o', 'r', 'y', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 | |||
| 50 | 1 | )); | ||
| 51 | 2 | } | ||
| 52 | ||||
| 53 | 4 | TEST(BinaryLogField, Value) { | ||
| 54 | 1 | scaled_channel<uint32_t, 1> testValue = 12345678; | ||
| 55 |
1/1✓ Branch 2 taken 1 time.
|
1 | Field lf(testValue, "test", "unit", 0); | |
| 56 | ||||
| 57 | 1 | char buffer[6]; | ||
| 58 | 1 | memset(buffer, 0xAA, sizeof(buffer)); | ||
| 59 | ||||
| 60 | // Should write 4 bytes | |||
| 61 |
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(4u, lf.writeData(buffer, nullptr)); | |
| 62 | ||||
| 63 | // Check that big endian data was written, and bytes after weren't touched | |||
| 64 |
4/8✓ Branch 10 taken 1 time.
✓ Branch 13 taken 1 time.
✓ Branch 16 taken 1 time.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 time.
✗ Branch 31 not taken.
✗ Branch 36 not taken.
✗ Branch 39 not taken.
|
1 | EXPECT_THAT(buffer, ElementsAre(0x00, 0xbc, 0x61, 0x4e, 0xAA, 0xAA)); | |
| 65 | 1 | } | ||
| 66 |