Skip to content

Commit bb5b06c

Browse files
committed
tests: nrf_compress: decompression: arm_thumb: Fix for chunks
Updates the test to support the new cross-chunk ARM thumb filter functionality, and verfies that the output size is the expected size Signed-off-by: Jamie McCrae <[email protected]>
1 parent a2dad5d commit bb5b06c

File tree

1 file changed

+16
-3
lines changed
  • tests/subsys/nrf_compress/decompression/arm_thumb/src

1 file changed

+16
-3
lines changed

tests/subsys/nrf_compress/decompression/arm_thumb/src/main.c

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
2123
ZTEST(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

Comments
 (0)