diff options
Diffstat (limited to 'tests/test_filter_flags.c')
-rw-r--r-- | tests/test_filter_flags.c | 42 |
1 files changed, 25 insertions, 17 deletions
diff --git a/tests/test_filter_flags.c b/tests/test_filter_flags.c index 6d9f0b9..9dfc16e 100644 --- a/tests/test_filter_flags.c +++ b/tests/test_filter_flags.c @@ -1,3 +1,5 @@ +// SPDX-License-Identifier: 0BSD + /////////////////////////////////////////////////////////////////////////////// // /// \file test_filter_flags.c @@ -6,9 +8,6 @@ // Authors: Jia Tan // Lasse Collin // -// This file has been put into the public domain. -// You can do whatever you want with this file. -// /////////////////////////////////////////////////////////////////////////////// #include "tests.h" @@ -48,6 +47,10 @@ static lzma_filter bcj_filters_encoders[] = { #ifdef HAVE_ENCODER_SPARC { LZMA_FILTER_SPARC, NULL }, #endif +#ifdef HAVE_ENCODER_RISCV + { LZMA_FILTER_RISCV, NULL }, +#endif + { LZMA_VLI_UNKNOWN, NULL } }; // HAVE_ENCODERS ifdef not terminated here because decoders are @@ -77,6 +80,10 @@ static lzma_filter bcj_filters_decoders[] = { #ifdef HAVE_DECODER_SPARC { LZMA_FILTER_SPARC, NULL }, #endif +#ifdef HAVE_DECODER_RISCV + { LZMA_FILTER_RISCV, NULL }, +#endif + { LZMA_VLI_UNKNOWN, NULL } }; #endif #endif @@ -94,6 +101,7 @@ test_lzma_filter_flags_size(void) // block header. uint32_t size = 0; if (lzma_filter_encoder_is_supported(LZMA_FILTER_LZMA1)) { + // LZMA1 isn't supported in .xz so we get LZMA_PROG_ERROR. assert_lzma_ret(lzma_filter_flags_size(&size, &lzma1_filter), LZMA_PROG_ERROR); } @@ -104,12 +112,8 @@ test_lzma_filter_flags_size(void) assert_true(size != 0 && size < LZMA_BLOCK_HEADER_SIZE_MAX); } - // Do not use macro ARRAY_SIZE() in the for loop condition directly. - // If the BCJ filters are not configured and built, then ARRAY_SIZE() - // will return 0 and cause a warning because the for loop will never - // execute since any unsigned number cannot be < 0 (-Werror=type-limits). - const uint32_t bcj_array_size = ARRAY_SIZE(bcj_filters_encoders); - for (uint32_t i = 0; i < bcj_array_size; i++) { + for (size_t i = 0; bcj_filters_encoders[i].id != LZMA_VLI_UNKNOWN; + ++i) { assert_lzma_ret(lzma_filter_flags_size(&size, &bcj_filters_encoders[i]), LZMA_OK); assert_true(size != 0 && size < LZMA_BLOCK_HEADER_SIZE_MAX); @@ -153,7 +157,7 @@ verify_filter_flags_encode(lzma_filter *filter, bool should_encode) // First calculate the size of Filter Flags to know how much // memory to allocate to hold the encoded Filter Flags assert_lzma_ret(lzma_filter_flags_size(&size, filter), LZMA_OK); - uint8_t *encoded_out = tuktest_malloc(size * sizeof(uint8_t)); + uint8_t *encoded_out = tuktest_malloc(size); size_t out_pos = 0; if (!should_encode) { assert_false(lzma_filter_flags_encode(filter, encoded_out, @@ -220,8 +224,8 @@ test_lzma_filter_flags_encode(void) .start_offset = 257 }; - const uint32_t bcj_array_size = ARRAY_SIZE(bcj_filters_encoders); - for (uint32_t i = 0; i < bcj_array_size; i++) { + for (size_t i = 0; bcj_filters_encoders[i].id != LZMA_VLI_UNKNOWN; + ++i) { // NULL options should pass for bcj filters verify_filter_flags_encode(&bcj_filters_encoders[i], true); lzma_filter bcj_with_options = { @@ -263,7 +267,6 @@ test_lzma_filter_flags_encode(void) size_t out_size = LZMA_BLOCK_HEADER_SIZE_MAX; uint8_t out[LZMA_BLOCK_HEADER_SIZE_MAX]; - // Filter ID outside of valid range assert_lzma_ret(lzma_filter_flags_encode(&bad_filter, out, &out_pos, out_size), LZMA_PROG_ERROR); @@ -328,7 +331,8 @@ test_lzma_filter_flags_encode(void) // because it is agnostic to the type of options used in the call #if defined(HAVE_ENCODERS) && defined(HAVE_DECODERS) static void -verify_filter_flags_decode(lzma_filter *filter_in, lzma_filter *filter_out) +verify_filter_flags_decode(const lzma_filter *filter_in, + lzma_filter *filter_out) { uint32_t total_size = 0; @@ -383,8 +387,8 @@ test_lzma_filter_flags_decode(void) free(decoded); } - const uint32_t bcj_array_size = ARRAY_SIZE(bcj_filters_decoders); - for (uint32_t i = 0; i < bcj_array_size; i++) { + for (size_t i = 0; bcj_filters_decoders[i].id != LZMA_VLI_UNKNOWN; + ++i) { if (lzma_filter_encoder_is_supported( bcj_filters_decoders[i].id)) { lzma_filter bcj_decoded = { @@ -398,7 +402,11 @@ test_lzma_filter_flags_decode(void) &bcj_decoded); assert_true(bcj_decoded.options == NULL); - // Next test with offset + // Next test with start_offset. + // + // NOTE: The encoder and decoder don't verify if + // the start_offset is valid for the filter. Only + // the encoder or decoder initialization does. lzma_options_bcj options = { .start_offset = 257 }; |