@@ -243,18 +243,21 @@ struct infinite_eeprom_t
243243 char readValue;
244244 uint16_t _length;
245245 uint16_t _blockSize;
246+ bool wasRead;
247+ bool wasWritten;
246248};
247249
248250static infinite_eeprom_t infiniteBuffer;
249251
250252static byte infiniteRead (uint16_t )
251253{
254+ infiniteBuffer.wasRead = true ;
252255 return infiniteBuffer.readValue ;
253256}
254257
255258void infniteWrite (uint16_t , byte)
256259{
257- // Do nothing
260+ infiniteBuffer. wasWritten = true ;
258261}
259262
260263uint16_t infniteLength (void )
@@ -272,6 +275,8 @@ static void setupInfniteStorageApi(uint16_t length, uint16_t blockSize, char rea
272275 infiniteBuffer.readValue = readValue;
273276 infiniteBuffer._length = length;
274277 infiniteBuffer._blockSize = blockSize;
278+ infiniteBuffer.wasRead = false ;
279+ infiniteBuffer.wasWritten = false ;
275280 storage_api_t storage = { .read = infiniteRead, .write = infniteWrite, .length = infniteLength, .getMaxWriteBlockSize = infiniteGetMaxWriteBlockSize };
276281 setStorageAPI (storage);
277282}
@@ -338,6 +343,36 @@ static void test_loadAllCalibrationTables(void)
338343 assert_2dtable (cltCalibrationTable, U16_MARKER, U16_MARKER);
339344}
340345
346+ template <typename axis_t , typename value_t , uint8_t sizeT>
347+ static void load_2dtable (table2D<axis_t , value_t , sizeT> &table, axis_t axis, value_t value)
348+ {
349+ for (uint16_t index=0 ; index<sizeT; ++index)
350+ {
351+ table.axis [index] = axis;
352+ table.values [index] = value;
353+ }
354+ }
355+
356+ static void test_saveAllCalibrationTables (void )
357+ {
358+ uint16_t U16_MARKER = word (WRITE_MARKER, WRITE_MARKER);
359+ constexpr uint8_t U8_MARKER = WRITE_MARKER;
360+
361+ load_2dtable (o2CalibrationTable, U16_MARKER, U8_MARKER);
362+ load_2dtable (iatCalibrationTable, U16_MARKER, U16_MARKER);
363+ load_2dtable (cltCalibrationTable, U16_MARKER, U16_MARKER);
364+
365+ setupInfniteStorageApi (8192 , 8192 , BUFFER_MARKER);
366+ saveAllCalibrationTables ();
367+ TEST_ASSERT_TRUE (infiniteBuffer.wasRead );
368+ TEST_ASSERT_TRUE (infiniteBuffer.wasWritten );
369+
370+ setupInfniteStorageApi (8192 , 8192 , BUFFER_MARKER);
371+ saveCalibrationTable ((SensorCalibrationTable)-1 );
372+ TEST_ASSERT_FALSE (infiniteBuffer.wasRead );
373+ TEST_ASSERT_FALSE (infiniteBuffer.wasWritten );
374+ }
375+
341376void test_storage (void ) {
342377 SET_UNITY_FILENAME () {
343378 RUN_TEST_P (test_writeEntity_raw);
@@ -351,5 +386,6 @@ void test_storage(void) {
351386 RUN_TEST_P (test_saveAllPages);
352387 RUN_TEST_P (test_loadAllPages);
353388 RUN_TEST_P (test_loadAllCalibrationTables);
389+ RUN_TEST_P (test_saveAllCalibrationTables);
354390 }
355391}
0 commit comments