Line | Branch | Decision | Exec | Source |
---|---|---|---|---|
1 | #include "pch.h" | |||
2 | #include "tunerstudio.h" | |||
3 | #include "tunerstudio_io.h" | |||
4 | ||||
5 | static uint8_t st5TestBuffer[16000]; | |||
6 | ||||
7 | class BufferTsChannel : public TsChannelBase { | |||
8 | public: | |||
9 | 1 | BufferTsChannel() : TsChannelBase("Test") { } | ||
10 | ||||
11 | 3 | void write(const uint8_t* buffer, size_t size, bool /*isLastWriteInTransaction*/) override { | ||
12 | 3 | memcpy(&st5TestBuffer[writeIdx], buffer, size); | ||
13 | 3 | writeIdx += size; | ||
14 | 3 | } | ||
15 | ||||
16 | ✗ | size_t readTimeout(uint8_t* buffer, size_t size, int timeout) override { | ||
17 | // nothing to do here | |||
18 | ✗ | return size; | ||
19 | } | |||
20 | ||||
21 | 3 | void reset() { | ||
22 | 3 | writeIdx = 0; | ||
23 | 3 | } | ||
24 | ||||
25 | size_t writeIdx = 0; | |||
26 | }; | |||
27 | ||||
28 | #define CODE 2 | |||
29 | #define PAYLOAD "123" | |||
30 | #define SIZE strlen(PAYLOAD) | |||
31 | ||||
32 | 3 | static void assertCrcPacket(BufferTsChannel& dut) { | ||
33 |
3/8✓ Branch 3 taken 3 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 3 times.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 26 taken 3 times.
✗ Branch 27 not taken.
|
3 | ASSERT_EQ(dut.writeIdx, SIZE + 7); | |
34 | ||||
35 | // todo: proper uint16 comparison | |||
36 |
3/8✓ Branch 3 taken 3 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 3 times.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 26 taken 3 times.
✗ Branch 27 not taken.
|
3 | ASSERT_EQ(st5TestBuffer[0], 0); | |
37 |
3/8✓ Branch 3 taken 3 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 3 times.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 26 taken 3 times.
✗ Branch 27 not taken.
|
3 | ASSERT_EQ(st5TestBuffer[1], SIZE + 1); | |
38 | ||||
39 |
3/8✓ Branch 3 taken 3 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 3 times.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 26 taken 3 times.
✗ Branch 27 not taken.
|
3 | ASSERT_EQ(st5TestBuffer[2], CODE); | |
40 | ||||
41 |
3/8✓ Branch 4 taken 3 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 13 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✓ Branch 28 taken 3 times.
✗ Branch 29 not taken.
|
3 | ASSERT_EQ(memcmp(&st5TestBuffer[3], PAYLOAD, SIZE), 0); | |
42 | ||||
43 | ||||
44 | // todo: proper uint32 comparison | |||
45 |
3/8✓ Branch 3 taken 3 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 3 times.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 26 taken 3 times.
✗ Branch 27 not taken.
|
3 | ASSERT_EQ(st5TestBuffer[6], 252); | |
46 |
3/8✓ Branch 3 taken 3 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 3 times.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 26 taken 3 times.
✗ Branch 27 not taken.
|
3 | ASSERT_EQ(st5TestBuffer[7], 68); | |
47 |
3/8✓ Branch 3 taken 3 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 3 times.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 26 taken 3 times.
✗ Branch 27 not taken.
|
3 | ASSERT_EQ(st5TestBuffer[8], 173); | |
48 |
3/8✓ Branch 3 taken 3 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 3 times.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 26 taken 3 times.
✗ Branch 27 not taken.
|
3 | ASSERT_EQ(st5TestBuffer[9], 87); | |
49 | } | |||
50 | ||||
51 | 4 | TEST(binary, testIsTouching) { | ||
52 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
53 |
3/9✓ Branch 3 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 33 taken 1 time.
✗ Branch 34 not taken.
|
1 | ASSERT_FALSE(isTouchingArea(0, 0, offsetof(persistent_config_s, veTable), sizeof(config->veTable))); | |
54 |
3/9✓ Branch 3 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 21 not taken.
✗ Branch 24 not taken.
✓ Branch 33 taken 1 time.
✗ Branch 34 not taken.
|
1 | ASSERT_TRUE(isTouchingArea(offsetof(persistent_config_s, veTable), 5, offsetof(persistent_config_s, veTable), sizeof(config->veTable))); | |
55 | 1 | } | ||
56 | ||||
57 | 4 | TEST(binary, testWriteCrc) { | ||
58 |
1/1✓ Branch 2 taken 1 time.
|
1 | BufferTsChannel test; | |
59 | ||||
60 | // Let it pick which impl (small vs large) to use | |||
61 | 1 | test.reset(); | ||
62 |
1/1✓ Branch 1 taken 1 time.
|
1 | test.writeCrcPacket(CODE, (const uint8_t*)PAYLOAD, SIZE); | |
63 |
1/1✓ Branch 1 taken 1 time.
|
1 | assertCrcPacket(test); | |
64 | ||||
65 | // Force the large impl | |||
66 | 1 | test.reset(); | ||
67 |
1/1✓ Branch 1 taken 1 time.
|
1 | test.writeCrcPacket(CODE, (const uint8_t*)PAYLOAD, SIZE); | |
68 |
1/1✓ Branch 1 taken 1 time.
|
1 | assertCrcPacket(test); | |
69 | ||||
70 | // Force the small impl | |||
71 | 1 | test.reset(); | ||
72 |
1/1✓ Branch 1 taken 1 time.
|
1 | test.writeCrcPacket(CODE, (const uint8_t*)PAYLOAD, SIZE); | |
73 |
1/1✓ Branch 1 taken 1 time.
|
1 | assertCrcPacket(test); | |
74 | 1 | } | ||
75 | ||||
76 | 4 | TEST(TunerstudioCommands, writeChunkEngineConfig) { | ||
77 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
78 |
1/1✓ Branch 2 taken 1 time.
|
1 | ::testing::NiceMock<MockTsChannel> channel; | |
79 | ||||
80 | 1 | uint8_t* configBytes = reinterpret_cast<uint8_t*>(config); | ||
81 | ||||
82 | // Contains zero before the write | |||
83 | 1 | configBytes[100] = 0; | ||
84 |
2/6✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
|
1 | EXPECT_EQ(configBytes[100], 0); | |
85 | ||||
86 | // two step - writes to the engineConfiguration section require a burn | |||
87 | 1 | uint8_t val = 50; | ||
88 | 1 | TunerStudio instance; | ||
89 |
1/1✓ Branch 1 taken 1 time.
|
1 | instance.handleWriteChunkCommand(&channel, 0, 100, 1, &val); | |
90 | ||||
91 |
2/6✓ Branch 3 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
|
1 | EXPECT_EQ(configBytes[100], 50); | |
92 | 2 | } | ||
93 |