| Line | Branch | Decision | Exec | Source |
|---|---|---|---|---|
| 1 | #include "pch.h" | |||
| 2 | #include "rusefi_lua.h" | |||
| 3 | ||||
| 4 | ||||
| 5 | 4 | TEST(LuaHooks, TestCrc8) { | ||
| 6 | 1 | const char* realHDdata = R"( | ||
| 7 | ||||
| 8 | function testFunc() | |||
| 9 | return crc8_j1850({0x13, 0x57, 0x13, 0x45, 0x00, 0xe8, 0x5c }, 7) | |||
| 10 | end | |||
| 11 | ||||
| 12 | )"; | |||
| 13 |
3/7✓ Branch 5 taken 1 time.
✓ Branch 9 taken 1 time.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 time.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
|
1 | EXPECT_EQ(testLuaReturnsNumberOrNil(realHDdata).value_or(0), 0x86); | |
| 14 | ||||
| 15 | 1 | const char* crc8scripts = R"( | ||
| 16 | ||||
| 17 | function testFunc() | |||
| 18 | return crc8_j1850({0x31,0x32,0x32 }, 2) | |||
| 19 | end | |||
| 20 | ||||
| 21 | )"; | |||
| 22 |
3/7✓ Branch 5 taken 1 time.
✓ Branch 9 taken 1 time.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 time.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
|
1 | EXPECT_EQ(testLuaReturnsNumberOrNil(crc8scripts).value_or(0), 0x43); | |
| 23 | 1 | } | ||
| 24 | ||||
| 25 | 4 | TEST(LuaHooks, TestGetCalibration) { | ||
| 26 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 27 | 1 | const char* sourceCode = R"( | ||
| 28 | ||||
| 29 | function testFunc() | |||
| 30 | return getCalibration("cranking.rpm") | |||
| 31 | end | |||
| 32 | ||||
| 33 | )"; | |||
| 34 |
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(testLuaReturnsNumber(sourceCode), 550); | |
| 35 | 2 | } | ||
| 36 | ||||
| 37 | 4 | TEST(LuaHooks, TestSetCalibration) { | ||
| 38 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 39 | 1 | const char* sourceCode = R"( | ||
| 40 | ||||
| 41 | function testFunc() | |||
| 42 | setCalibration("cranking.rpm", 900, false) | |||
| 43 | return getCalibration("cranking.rpm") | |||
| 44 | end | |||
| 45 | ||||
| 46 | )"; | |||
| 47 |
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(testLuaReturnsNumber(sourceCode), 900); | |
| 48 | 2 | } | ||
| 49 | ||||
| 50 | ||||
| 51 | 4 | TEST(LuaHooks, TestGetSensorByIndex) { | ||
| 52 | 1 | const char* getSensorTestByIndex = R"( | ||
| 53 | ||||
| 54 | function testFunc() | |||
| 55 | return getSensorByIndex(10) | |||
| 56 | end | |||
| 57 | ||||
| 58 | )"; | |||
| 59 | ||||
| 60 | // Test failed sensor, returns nil | |||
| 61 | 1 | Sensor::resetMockValue(static_cast<SensorType>(10)); | ||
| 62 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
|
1 | EXPECT_EQ(testLuaReturnsNumberOrNil(getSensorTestByIndex), unexpected); | |
| 63 | ||||
| 64 | // Now test with a value, returns value | |||
| 65 | 1 | Sensor::setMockValue(static_cast<SensorType>(10), 33); | ||
| 66 |
3/7✓ Branch 5 taken 1 time.
✓ Branch 9 taken 1 time.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 time.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
|
1 | EXPECT_EQ(testLuaReturnsNumberOrNil(getSensorTestByIndex).value_or(0), 33); | |
| 67 | 1 | } | ||
| 68 | ||||
| 69 | ||||
| 70 | 4 | TEST(LuaHooks, TestGetSensorByName) { | ||
| 71 | 1 | const char* getSensorTestByName = R"( | ||
| 72 | ||||
| 73 | function testFunc() | |||
| 74 | return getSensor("CLT") | |||
| 75 | end | |||
| 76 | ||||
| 77 | )"; | |||
| 78 | ||||
| 79 | // Test failed sensor, returns nil | |||
| 80 | 1 | Sensor::resetMockValue(SensorType::Clt); | ||
| 81 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 6 taken 1 time.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 14 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
|
1 | EXPECT_EQ(testLuaReturnsNumberOrNil(getSensorTestByName), unexpected); | |
| 82 | ||||
| 83 | // Now test with a value, returns value | |||
| 84 | 1 | Sensor::setMockValue(SensorType::Clt, 33); | ||
| 85 |
3/7✓ Branch 5 taken 1 time.
✓ Branch 9 taken 1 time.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 time.
✗ Branch 19 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
|
1 | EXPECT_EQ(testLuaReturnsNumberOrNil(getSensorTestByName).value_or(0), 33); | |
| 86 | 1 | } | ||
| 87 | ||||
| 88 | 4 | TEST(LuaHooks, Table3d) { | ||
| 89 | 1 | const char* tableTest = R"( | ||
| 90 | function testFunc() | |||
| 91 | return table3d(2, 1000, 40) | |||
| 92 | end | |||
| 93 | )"; | |||
| 94 | ||||
| 95 |
1/1✓ Branch 2 taken 1 time.
|
1 | EngineTestHelper eth(engine_type_e::TEST_ENGINE); | |
| 96 | ||||
| 97 | 1 | setTable(config->scriptTable2, (uint8_t)33); | ||
| 98 |
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(testLuaReturnsNumber(tableTest), 33); | |
| 99 | ||||
| 100 | 1 | setTable(config->scriptTable2, (uint8_t)14); | ||
| 101 |
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(testLuaReturnsNumber(tableTest), 14); | |
| 102 | 2 | } | ||
| 103 | ||||
| 104 | 4 | TEST(LuaHooks, CanTxChannel) { | ||
| 105 | // channel 1 valid | |||
| 106 |
4/20✓ Branch 3 taken 1 time.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 41 not taken.
✗ Branch 46 not taken.
✗ Branch 49 not taken.
✗ Branch 55 not taken.
✗ Branch 59 not taken.
✗ Branch 62 not taken.
✗ Branch 67 not taken.
✗ Branch 70 not taken.
|
1 | EXPECT_NO_THROW(testLuaExecString("txCan(1, 0, 0, {0})")); | |
| 107 | ||||
| 108 | // channel 0 invalid | |||
| 109 |
4/11✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 time.
✓ Branch 6 taken 1 time.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
|
1 | EXPECT_ANY_THROW(testLuaExecString("txCan(0, 0, 0, {0})")); | |
| 110 | 1 | } | ||
| 111 | ||||
| 112 | 4 | TEST(LuaHooks, CanTxId) { | ||
| 113 | // std ID ok | |||
| 114 |
4/20✓ Branch 3 taken 1 time.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 41 not taken.
✗ Branch 46 not taken.
✗ Branch 49 not taken.
✗ Branch 55 not taken.
✗ Branch 59 not taken.
✗ Branch 62 not taken.
✗ Branch 67 not taken.
✗ Branch 70 not taken.
|
1 | EXPECT_NO_THROW(testLuaExecString("txCan(1, 2047, 0, {0})")); | |
| 115 | // std ID too high | |||
| 116 |
4/11✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 time.
✓ Branch 6 taken 1 time.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
|
1 | EXPECT_ANY_THROW(testLuaExecString("txCan(1, 2048, 0, {0})")); | |
| 117 | ||||
| 118 | // ext ID ok | |||
| 119 |
4/20✓ Branch 3 taken 1 time.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 41 not taken.
✗ Branch 46 not taken.
✗ Branch 49 not taken.
✗ Branch 55 not taken.
✗ Branch 59 not taken.
✗ Branch 62 not taken.
✗ Branch 67 not taken.
✗ Branch 70 not taken.
|
1 | EXPECT_NO_THROW(testLuaExecString("txCan(1, 536870911, 1, {0})")); | |
| 120 | // ext ID too high | |||
| 121 |
4/11✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 time.
✓ Branch 6 taken 1 time.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
|
1 | EXPECT_ANY_THROW(testLuaExecString("txCan(1, 536870912, 1, {0})")); | |
| 122 | 1 | } | ||
| 123 | ||||
| 124 | 4 | TEST(LuaHooks, CanTxDataLength) { | ||
| 125 | // valid: DLC = 0 | |||
| 126 |
4/20✓ Branch 3 taken 1 time.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 41 not taken.
✗ Branch 46 not taken.
✗ Branch 49 not taken.
✗ Branch 55 not taken.
✗ Branch 59 not taken.
✗ Branch 62 not taken.
✗ Branch 67 not taken.
✗ Branch 70 not taken.
|
1 | EXPECT_NO_THROW(testLuaExecString("txCan(1, 0, 0, {})")); | |
| 127 | // valid: DLC = 1 | |||
| 128 |
4/20✓ Branch 3 taken 1 time.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 41 not taken.
✗ Branch 46 not taken.
✗ Branch 49 not taken.
✗ Branch 55 not taken.
✗ Branch 59 not taken.
✗ Branch 62 not taken.
✗ Branch 67 not taken.
✗ Branch 70 not taken.
|
1 | EXPECT_NO_THROW(testLuaExecString("txCan(1, 0, 0, {0})")); | |
| 129 | // valid: DLC = 8 | |||
| 130 |
4/20✓ Branch 3 taken 1 time.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 time.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 16 not taken.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 41 not taken.
✗ Branch 46 not taken.
✗ Branch 49 not taken.
✗ Branch 55 not taken.
✗ Branch 59 not taken.
✗ Branch 62 not taken.
✗ Branch 67 not taken.
✗ Branch 70 not taken.
|
1 | EXPECT_NO_THROW(testLuaExecString("txCan(1, 0, 0, {1, 2, 3, 4, 5, 6, 7, 8})")); | |
| 131 | ||||
| 132 | // invalid: DLC = 9 | |||
| 133 |
4/11✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 time.
✓ Branch 6 taken 1 time.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
|
1 | EXPECT_ANY_THROW(testLuaExecString("txCan(1, 0, 0, {1, 2, 3, 4, 5, 6, 7, 8, 9})")); | |
| 134 | ||||
| 135 | // invalid: is a table, but contains a not-number | |||
| 136 |
4/11✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 time.
✓ Branch 6 taken 1 time.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
|
1 | EXPECT_ANY_THROW(testLuaExecString("txCan(1, 0, 0, {1, 2, 3, 'hello', 5, 6})")); | |
| 137 | ||||
| 138 | // invalid: not a table | |||
| 139 |
4/11✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 time.
✓ Branch 6 taken 1 time.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
|
1 | EXPECT_ANY_THROW(testLuaExecString("txCan(1, 0, 0, 26)")); | |
| 140 | 1 | } | ||
| 141 | ||||
| 142 | 4 | TEST(LuaHooks, LuaInterpolate) { | ||
| 143 |
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(testLuaReturnsNumber(R"( | |
| 144 | function testFunc() | |||
| 145 | return interpolate(1, 10, 5, 50, 3) | |||
| 146 | end | |||
| 147 | 1 | )"), 30); | ||
| 148 | 1 | } | ||
| 149 | ||||
| 150 | 4 | TEST(LuaHooks, TestLuaTimer) { | ||
| 151 |
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(testLuaReturnsNumber(R"( | |
| 152 | function testFunc() | |||
| 153 | local a = Timer.new() | |||
| 154 | a:reset() | |||
| 155 | return a:getElapsedSeconds() | |||
| 156 | end | |||
| 157 | 1 | )"), 0); | ||
| 158 | 1 | } | ||
| 159 | ||||
| 160 | static const char* sensorTest = R"( | |||
| 161 | function testFunc() | |||
| 162 | local sens = Sensor.new("CLT") | |||
| 163 | ||||
| 164 | -- Check valid sensor | |||
| 165 | sens:set(33) | |||
| 166 | if getSensor("CLT") ~= 33 then | |||
| 167 | return 1 | |||
| 168 | end | |||
| 169 | ||||
| 170 | -- Check invalidation | |||
| 171 | sens:invalidate() | |||
| 172 | if getSensor("CLT") then | |||
| 173 | return 2 | |||
| 174 | end | |||
| 175 | ||||
| 176 | return 0 | |||
| 177 | end | |||
| 178 | )"; | |||
| 179 | ||||
| 180 | 4 | TEST(LuaHooks, LuaSensor) { | ||
| 181 |
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(testLuaReturnsNumber(sensorTest), 0); | |
| 182 | ||||
| 183 | // Ensure that the sensor got unregistered on teardown of the Lua interpreter | |||
| 184 |
2/7✓ 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.
|
1 | EXPECT_FALSE(Sensor::hasSensor(SensorType::Clt)); | |
| 185 | 1 | } | ||
| 186 | ||||
| 187 | static const char* pidTest = R"( | |||
| 188 | function testFunc() | |||
| 189 | local pid = Pid.new(0.5, 0, 0, -10, 10) | |||
| 190 | ||||
| 191 | -- delta is -4, output -2 | |||
| 192 | if pid:get(3, 7) ~= -2 then | |||
| 193 | return 1 | |||
| 194 | end | |||
| 195 | ||||
| 196 | -- delta is 6, output 3 | |||
| 197 | if pid:get(4, -2) ~= 3 then | |||
| 198 | return 2 | |||
| 199 | end | |||
| 200 | ||||
| 201 | -- test clamping | |||
| 202 | if pid:get(0, 100) ~= -10 then | |||
| 203 | return 3 | |||
| 204 | end | |||
| 205 | ||||
| 206 | if pid:get(0, -100) ~= 10 then | |||
| 207 | return 4 | |||
| 208 | end | |||
| 209 | ||||
| 210 | return 0 | |||
| 211 | end | |||
| 212 | )"; | |||
| 213 | ||||
| 214 | 4 | TEST(LuaHooks, LuaPid) { | ||
| 215 |
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(testLuaReturnsNumber(pidTest), 0); | |
| 216 | 1 | } | ||
| 217 |