@@ -18,13 +18,16 @@ static const uint8_t output_expected[] = {
1818#include "arm_thumb.inc"
1919};
2020
21+ #define PLUS_MINUS_OUTPUT_SIZE 2
22+
2123ZTEST (nrf_compress_decompression , test_valid_implementation )
2224{
2325 int rc ;
2426 uint32_t pos = 0 ;
2527 uint32_t offset ;
2628 uint8_t * output ;
2729 uint32_t output_size ;
30+ uint32_t total_output_size = 0 ;
2831 struct nrf_compress_implementation * implementation = NULL ;
2932
3033 implementation = nrf_compress_implementation_find (NRF_COMPRESS_TYPE_ARM_THUMB );
@@ -36,26 +39,36 @@ ZTEST(nrf_compress_decompression, test_valid_implementation)
3639
3740 while (pos < sizeof (input_compressed )) {
3841 uint32_t input_data_size ;
42+ bool last = false;
3943
4044 input_data_size = implementation -> decompress_bytes_needed (NULL );
4145 zassert_equal (input_data_size , CONFIG_NRF_COMPRESS_CHUNK_SIZE ,
4246 "Expected to need chunk size bytes for LZMA data" );
4347
4448 if ((pos + input_data_size ) >= sizeof (input_compressed )) {
4549 input_data_size = sizeof (input_compressed ) - pos ;
50+ last = true;
4651 }
4752
4853 rc = implementation -> decompress (NULL , & input_compressed [pos ], input_data_size ,
49- false , & offset , & output , & output_size );
54+ last , & offset , & output , & output_size );
5055
5156 zassert_ok (rc , "Expected data decompress to be successful" );
52- zassert_equal (output_size , input_data_size ,
53- "Expected data decompress to be successful" );
5457 zassert_mem_equal (output , & output_expected [pos ], output_size );
5558
59+ if (!(output_size == input_data_size || output_size ==
60+ (input_data_size + PLUS_MINUS_OUTPUT_SIZE ) || output_size ==
61+ (input_data_size - PLUS_MINUS_OUTPUT_SIZE ))) {
62+ zassert_ok (1 , "Expected data output size is not valid" );
63+ }
64+
5665 pos += offset ;
66+ total_output_size += output_size ;
5767 }
5868
69+ zassert_equal (total_output_size , sizeof (output_expected ),
70+ "Expected data decompress output size to match data input size" );
71+
5972 rc = implementation -> deinit (NULL );
6073 zassert_ok (rc , "Expected deinit to be successful" );
6174}
0 commit comments