Line | Branch | Decision | Exec | Source |
---|---|---|---|---|
1 | #include "pch.h" | |||
2 | #include "rusefi_lua.h" | |||
3 | #include "lua_lib.h" | |||
4 | ||||
5 | 4 | TEST(LuaVag, Checksum) { | ||
6 | 1 | const char* realdata = VAG_CHECKSUM R"( | ||
7 | ||||
8 | function testFunc() | |||
9 | data = { 0xE0, 0x20, 0x20, 0x7E, 0xFE, 0xFF, 0xFF, 0x60 } | |||
10 | return xorChecksum(data, 8) | |||
11 | end | |||
12 | )"; | |||
13 | ||||
14 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(realdata).value_or(0), 0x60); | |
15 | 1 | } | ||
16 | ||||
17 | // LSB (Least Significant Byte comes first) "Intel" | |||
18 | 4 | TEST(LuaVag, packMotor1) { | ||
19 | 1 | const char* realdata = PRINT_ARRAY ARRAY_EQUALS SET_TWO_BYTES_LSB R"( | ||
20 | ||||
21 | function testFunc() | |||
22 | engineTorque = 15.21 | |||
23 | rpm = 1207.1 | |||
24 | innerTorqWithoutExt = 21.6 | |||
25 | tps = 31.6 | |||
26 | torqueLoss = 9.75 | |||
27 | requestedTorque = 21.84 | |||
28 | ||||
29 | canMotor1 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } | |||
30 | ||||
31 | canMotor1[2] = engineTorque / 0.39 | |||
32 | setTwoBytesLsb(canMotor1, 2, rpm / 0.25) | |||
33 | canMotor1[5] = innerTorqWithoutExt / 0.4 | |||
34 | canMotor1[6] = tps / 0.4 | |||
35 | canMotor1[7] = torqueLoss / 0.39 | |||
36 | canMotor1[8] = requestedTorque / 0.39 | |||
37 | ||||
38 | print(arrayToString(canMotor1)) | |||
39 | ||||
40 | expected = { 0x00, 0x27, 0xDC, 0x12, 0x36, 0x4F, 0x19, 0x38 } | |||
41 | return equals(canMotor1, expected) | |||
42 | end | |||
43 | )"; | |||
44 | ||||
45 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(realdata).value_or(0), 0); | |
46 | 1 | } | ||
47 | ||||
48 | #define realMotor1Packet "\ndata = { 0x00, 0x27, 0x8A, 0x1A, 0x36, 0x4F, 0x19, 0x38}\n " | |||
49 | ||||
50 | 4 | TEST(LuaVag, unpackMotor1_engine_torq) { | ||
51 | 1 | const char* script = GET_BIT_RANGE_LSB realMotor1Packet R"( | ||
52 | function testFunc() | |||
53 | engineTorque = getBitRange(data, 8, 8) * 0.39 | |||
54 | return engineTorque | |||
55 | end | |||
56 | )"; | |||
57 | ||||
58 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(script).value_or(0), 15.21); | |
59 | 1 | } | ||
60 | ||||
61 | 4 | TEST(LuaVag, unpackMotor1_rpm) { | ||
62 | 1 | const char* realdata = GET_BIT_RANGE_LSB realMotor1Packet R"( | ||
63 | function testFunc() | |||
64 | rpm = getBitRange(data, 16, 16) * 0.25 | |||
65 | return rpm | |||
66 | end | |||
67 | )"; | |||
68 | ||||
69 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(realdata).value_or(0), 1698.5); | |
70 | 1 | } | ||
71 | ||||
72 | 4 | TEST(LuaVag, unpackMotor1_inner_torq) { | ||
73 | 1 | const char* realdata = GET_BIT_RANGE_LSB realMotor1Packet R"( | ||
74 | function testFunc() | |||
75 | innerTorqWithoutExt = getBitRange(data, 32, 8) * 0.4 | |||
76 | return innerTorqWithoutExt | |||
77 | end | |||
78 | )"; | |||
79 | ||||
80 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(realdata).value_or(0), 21.6); | |
81 | 1 | } | ||
82 | ||||
83 | 4 | TEST(LuaVag, unpackMotor1_tps) { | ||
84 | 1 | const char* realdata = GET_BIT_RANGE_LSB realMotor1Packet R"( | ||
85 | function testFunc() | |||
86 | tps = getBitRange(data, 40, 8) * 0.4 | |||
87 | return tps | |||
88 | end | |||
89 | )"; | |||
90 | ||||
91 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(realdata).value_or(0), 31.6); | |
92 | 1 | } | ||
93 | ||||
94 | 4 | TEST(LuaVag, unpackMotor1_torq_loss) { | ||
95 | 1 | const char* realdata = GET_BIT_RANGE_LSB realMotor1Packet R"( | ||
96 | function testFunc() | |||
97 | torqueLoss = getBitRange(data, 48, 8) * 0.39 | |||
98 | return torqueLoss | |||
99 | end | |||
100 | )"; | |||
101 | ||||
102 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(realdata).value_or(0), 9.75); | |
103 | 1 | } | ||
104 | ||||
105 | ||||
106 | 4 | TEST(LuaVag, unpackMotor1_torq_req) { | ||
107 | 1 | const char* realdata = GET_BIT_RANGE_LSB realMotor1Packet R"( | ||
108 | function testFunc() | |||
109 | requestedTorque = getBitRange(data, 56, 8) * 0.39 | |||
110 | return requestedTorque | |||
111 | end | |||
112 | )"; | |||
113 | ||||
114 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(realdata).value_or(0), 21.84); | |
115 | 1 | } | ||
116 | ||||
117 | #define realMotor3Packet "\ndata = { 0x00, 0x62, 0xFA, 0xDA, 0x22, 0x00, 0x00, 0xFA}\n " | |||
118 | ||||
119 | 4 | TEST(LuaVag, packMotor3) { | ||
120 | 1 | const char* script = SET_BIT_RANGE_LSB PRINT_ARRAY ARRAY_EQUALS SET_TWO_BYTES_LSB R"( | ||
121 | ||||
122 | function testFunc() | |||
123 | tps = 100 | |||
124 | iat = 25.5 | |||
125 | desired_wheel_torque = 284.7 | |||
126 | ||||
127 | canMotor3 = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } | |||
128 | ||||
129 | canMotor3[2] = (iat + 48) / 0.75 | |||
130 | canMotor3[3] = tps / 0.4 | |||
131 | canMotor3[5] = 0x20 | |||
132 | setBitRange(canMotor3, 24, 12, math.floor(desired_wheel_torque / 0.39)) | |||
133 | canMotor3[8] = tps / 0.4 | |||
134 | ||||
135 | print(arrayToString(canMotor3)) | |||
136 | ||||
137 | expected = { 0x00, 0x62, 0xFA, 0xDA, 0x22, 0x00, 0x00, 0xFA } | |||
138 | return equals(canMotor3, expected) | |||
139 | end | |||
140 | )"; | |||
141 | ||||
142 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(script).value_or(0), 0); | |
143 | 1 | } | ||
144 | ||||
145 | ||||
146 | 4 | TEST(LuaVag, unpackMotor3_tps) { | ||
147 | 1 | const char* script = GET_BIT_RANGE_LSB realMotor3Packet R"( | ||
148 | function testFunc() | |||
149 | tps = getBitRange(data, 56, 8) * 0.40 | |||
150 | return tps | |||
151 | end | |||
152 | )"; | |||
153 | ||||
154 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(script).value_or(0), 100); | |
155 | 1 | } | ||
156 | ||||
157 | 4 | TEST(LuaVag, unpackMotor3_pps) { | ||
158 | 1 | const char* script = GET_BIT_RANGE_LSB realMotor3Packet R"( | ||
159 | function testFunc() | |||
160 | pps = getBitRange(data, 16, 8) * 0.40 | |||
161 | return pps | |||
162 | end | |||
163 | )"; | |||
164 | ||||
165 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(script).value_or(0), 100); | |
166 | 1 | } | ||
167 | ||||
168 | 4 | TEST(LuaVag, setBitRange) { | ||
169 | { | |||
170 | 1 | const char* script = PRINT_ARRAY ARRAY_EQUALS SET_BIT_RANGE_LSB R"( | ||
171 | ||||
172 | function testFunc() | |||
173 | data = { 0x34, 0x56, 0x00 } | |||
174 | setBitRange(data, 4, 8, 0xAB) | |||
175 | ||||
176 | print(arrayToString(data)) | |||
177 | ||||
178 | expected = { 0xB4, 0x5A, 0x00 } | |||
179 | return equals(data, expected) | |||
180 | end | |||
181 | )"; | |||
182 | ||||
183 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(script).value_or(0), 0); | |
184 | } | |||
185 | ||||
186 | { | |||
187 | 1 | const char* script = PRINT_ARRAY ARRAY_EQUALS SET_BIT_RANGE_LSB R"( | ||
188 | ||||
189 | function testFunc() | |||
190 | data = { 0x00, 0x00, 0x00 } | |||
191 | setBitRange(data, 5, 9, 0x1FF) | |||
192 | ||||
193 | print(arrayToString(data)) | |||
194 | ||||
195 | expected = { 0xE0, 0x3F, 0x00 } | |||
196 | return equals(data, expected) | |||
197 | end | |||
198 | )"; | |||
199 | ||||
200 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(script).value_or(0), 0); | |
201 | } | |||
202 | ||||
203 | ||||
204 | { | |||
205 | 1 | const char* script = PRINT_ARRAY ARRAY_EQUALS SET_BIT_RANGE_LSB R"( | ||
206 | ||||
207 | function testFunc() | |||
208 | data = { 0xFF, 0xFF, 0x00 } | |||
209 | setBitRange(data, 5, 9, 0x0) | |||
210 | ||||
211 | print(arrayToString(data)) | |||
212 | ||||
213 | expected = { 0x1F, 0xC0, 0x00 } | |||
214 | return equals(data, expected) | |||
215 | end | |||
216 | )"; | |||
217 | ||||
218 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(script).value_or(0), 0); | |
219 | } | |||
220 | ||||
221 | 1 | } | ||
222 | ||||
223 | 4 | TEST(LuaVag, unpackMotor3_iat) { | ||
224 | 1 | const char* script = GET_BIT_RANGE_LSB realMotor3Packet R"( | ||
225 | function testFunc() | |||
226 | iat = getBitRange(data, 8, 8) * 0.75 - 48 | |||
227 | return iat | |||
228 | end | |||
229 | )"; | |||
230 | ||||
231 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(script).value_or(0), 25.5); | |
232 | 1 | } | ||
233 | ||||
234 | 4 | TEST(Vag, unpackMotor3_desired_wheel_torque) { | ||
235 | 1 | uint8_t data[] = { 0x00, 0x62, 0xFA, 0xDA, 0x22, 0x00, 0x00, 0xFA}; | ||
236 | ||||
237 |
3/7✓ Branch 2 taken 1 time.
✓ Branch 5 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 12 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
|
1 | EXPECT_NEAR_M3(getBitRangeLsb(data, 24, 12) * 0.39, 284.7); | |
238 | 1 | } | ||
239 | ||||
240 | 4 | TEST(LuaVag, unpackMotor3_desired_wheel_torque) { | ||
241 | 1 | const char* script = GET_BIT_RANGE_LSB realMotor3Packet R"( | ||
242 | function testFunc() | |||
243 | desired_wheel_torque = getBitRange(data, 24, 12) * 0.39 | |||
244 | return desired_wheel_torque | |||
245 | end | |||
246 | )"; | |||
247 | ||||
248 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(script).value_or(0), 284.7); | |
249 | 1 | } | ||
250 | ||||
251 | #define realMotor6Packet "\ndata = { 0x3D, 0x54, 0x69, 0x7E, 0xFE, 0xFF, 0xFF, 0x80}\n " | |||
252 | ||||
253 | 4 | TEST(LuaVag, unpackMotor6_actual_torq) { | ||
254 | 1 | const char* script = GET_BIT_RANGE_LSB realMotor6Packet R"( | ||
255 | function testFunc() | |||
256 | actualTorque = getBitRange(data, 16, 8) * 0.39 | |||
257 | return actualTorque | |||
258 | end | |||
259 | )"; | |||
260 | ||||
261 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(script).value_or(0), 40.95); | |
262 | 1 | } | ||
263 | ||||
264 | 4 | TEST(LuaVag, unpackMotor6_target_torq) { | ||
265 | 1 | const char* script = GET_BIT_RANGE_LSB realMotor6Packet R"( | ||
266 | function testFunc() | |||
267 | targetTorque = getBitRange(data, 8, 8) * 0.39 | |||
268 | return targetTorque | |||
269 | end | |||
270 | )"; | |||
271 | ||||
272 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(script).value_or(0), 32.76); | |
273 | 1 | } | ||
274 | ||||
275 | 4 | TEST(LuaVag, unpackMotor6_feedback) { | ||
276 | 1 | const char* script = GET_BIT_RANGE_LSB realMotor6Packet R"( | ||
277 | function testFunc() | |||
278 | feedbackGearbox = getBitRange(data, 40, 8) * 0.39 | |||
279 | return feedbackGearbox | |||
280 | end | |||
281 | )"; | |||
282 | ||||
283 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(script).value_or(0), 99.45); | |
284 | 1 | } | ||
285 | ||||
286 | 4 | TEST(LuaVag, packMotor6) { | ||
287 | 1 | const char* script = PRINT_ARRAY ARRAY_EQUALS VAG_CHECKSUM R"( | ||
288 | ||||
289 | function testFunc() | |||
290 | actualTorque = 40.95 | |||
291 | targetTorque = 32.76 | |||
292 | feedbackGearbox = 99.45 | |||
293 | ||||
294 | motor6Data = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 } | |||
295 | ||||
296 | motor6Data[2] = math.floor(targetTorque / 0.39) | |||
297 | motor6Data[3] = math.floor(actualTorque / 0.39) | |||
298 | motor6Data[6] = math.floor(feedbackGearbox / 0.39) | |||
299 | ||||
300 | xorChecksum(motor6Data, 1) | |||
301 | print(arrayToString(motor6Data)) | |||
302 | ||||
303 | expected = { 0xC2, 0x54, 0x69, 0x00, 0x00, 0xFF, 0x00, 0x00 } | |||
304 | return equals(motor6Data, expected) | |||
305 | end | |||
306 | )"; | |||
307 | ||||
308 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(script).value_or(0), 0); | |
309 | 1 | } | ||
310 | ||||
311 | 4 | TEST(LuaVag, ChecksumMotor6) { | ||
312 | 1 | const char* realdata = VAG_CHECKSUM realMotor6Packet R"( | ||
313 | ||||
314 | function testFunc() | |||
315 | return xorChecksum(data, 1) | |||
316 | end | |||
317 | )"; | |||
318 | ||||
319 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(realdata).value_or(0), 0x3D); | |
320 | 1 | } | ||
321 | ||||
322 | #define realMotor5Packet "\ndata = { 0x1C, 0x08, 0xF3, 0x55, 0x19, 0x00, 0x06, 0xAD}\n " | |||
323 | ||||
324 | 4 | TEST(LuaVag, ChecksumMotor5) { | ||
325 | 1 | const char* realdata = VAG_CHECKSUM realMotor5Packet R"( | ||
326 | ||||
327 | function testFunc() | |||
328 | return xorChecksum(data, 8) | |||
329 | end | |||
330 | )"; | |||
331 | ||||
332 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(realdata).value_or(0), 0xAD); | |
333 | 1 | } | ||
334 | ||||
335 | 4 | TEST(LuaVag, unpackMotor5_fuel) { | ||
336 | 1 | const char* script = GET_BIT_RANGE_LSB realMotor5Packet R"( | ||
337 | function testFunc() | |||
338 | fuelConsumption = getBitRange(data, 16, 15) | |||
339 | return fuelConsumption | |||
340 | end | |||
341 | )"; | |||
342 | ||||
343 |
3/7✓ Branch 3 taken 1 time.
✓ Branch 7 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 12 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_NEAR_M3(testLuaReturnsNumberOrNil(script).value_or(0), 22003); | |
344 | 1 | } | ||
345 |