aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLasse Collin <lasse.collin@tukaani.org>2023-01-12 04:14:18 +0200
committerJia Tan <jiat0218@gmail.com>2023-02-03 21:10:06 +0800
commitc47ecd6d3909d0d3ff48dfd6e2ee41e7c7130b94 (patch)
tree165c864ba678de187aa931a57874a4f1284f68d0
parentTests: Silence warnings from -Wsign-conversion. (diff)
downloadxz-c47ecd6d3909d0d3ff48dfd6e2ee41e7c7130b94.tar.xz
Tests: Fix warnings from clang --Wassign-enum.
Explicitly casting the integer to lzma_check silences the warning. Since such an invalid value is needed in multiple tests, a constant INVALID_LZMA_CHECK_ID was added to tests.h. The use of 0x1000 for lzma_block.check wasn't optimal as if the underlying type is a char then 0x1000 will be truncated to 0. However, in these test cases the value is ignored, thus even with such truncation the test would have passed.
-rw-r--r--tests/test_block_header.c6
-rw-r--r--tests/test_check.c2
-rw-r--r--tests/test_stream_flags.c8
-rw-r--r--tests/tests.h9
4 files changed, 17 insertions, 8 deletions
diff --git a/tests/test_block_header.c b/tests/test_block_header.c
index 747925b3..43c7df43 100644
--- a/tests/test_block_header.c
+++ b/tests/test_block_header.c
@@ -189,7 +189,7 @@ test_lzma_block_header_size(void)
// Use an invalid block option. The check type isn't stored in
// the Block Header and so _header_size ignores it.
- block.check = 0x1000;
+ block.check = INVALID_LZMA_CHECK_ID;
block.ignore_check = false;
assert_lzma_ret(lzma_block_header_size(&block), LZMA_OK);
@@ -270,7 +270,7 @@ test_lzma_block_header_encode(void)
block.uncompressed_size = LZMA_VLI_UNKNOWN;
// Test invalid block check
- block.check = 0x1000;
+ block.check = INVALID_LZMA_CHECK_ID;
block.ignore_check = false;
assert_lzma_ret(lzma_block_header_encode(&block, out),
LZMA_PROG_ERROR);
@@ -466,7 +466,7 @@ test_lzma_block_header_decode(void)
assert_uint_eq(decoded_block.version, 1);
// Test bad check type
- decoded_block.check = LZMA_CHECK_ID_MAX + 1;
+ decoded_block.check = INVALID_LZMA_CHECK_ID;
assert_lzma_ret(lzma_block_header_decode(&decoded_block, NULL, out),
LZMA_PROG_ERROR);
decoded_block.check = LZMA_CHECK_CRC32;
diff --git a/tests/test_check.c b/tests/test_check.c
index 1d5b3a10..cb1ad251 100644
--- a/tests/test_check.c
+++ b/tests/test_check.c
@@ -176,7 +176,7 @@ test_lzma_check_size(void)
for (lzma_check i = 0; i < ARRAY_SIZE(expected_check_sizes); i++)
assert_uint_eq(expected_check_sizes[i], lzma_check_size(i));
- assert_uint_eq(lzma_check_size(LZMA_CHECK_ID_MAX + 1), UINT32_MAX);
+ assert_uint_eq(lzma_check_size(INVALID_LZMA_CHECK_ID), UINT32_MAX);
}
diff --git a/tests/test_stream_flags.c b/tests/test_stream_flags.c
index 26b4c613..2248e67a 100644
--- a/tests/test_stream_flags.c
+++ b/tests/test_stream_flags.c
@@ -87,7 +87,7 @@ test_lzma_stream_header_encode(void)
flags.version = 0;
// Should fail if Check ID is invalid
- flags.check = LZMA_CHECK_ID_MAX + 1;
+ flags.check = INVALID_LZMA_CHECK_ID;
assert_lzma_ret(lzma_stream_header_encode(&flags, header),
LZMA_PROG_ERROR);
flags.check = LZMA_CHECK_CRC32;
@@ -170,7 +170,7 @@ test_lzma_stream_footer_encode(void)
flags.version = 0;
// Should fail if Check ID is invalid
- flags.check = LZMA_CHECK_ID_MAX + 1;
+ flags.check = INVALID_LZMA_CHECK_ID;
assert_lzma_ret(lzma_stream_footer_encode(&flags, footer),
LZMA_PROG_ERROR);
@@ -410,10 +410,10 @@ test_lzma_stream_flags_compare(void)
second.version = 0;
// Check types must be under the maximum
- first.check = LZMA_CHECK_ID_MAX + 1;
+ first.check = INVALID_LZMA_CHECK_ID;
assert_lzma_ret(lzma_stream_flags_compare(&first, &second),
LZMA_PROG_ERROR);
- second.check = LZMA_CHECK_ID_MAX + 1;
+ second.check = INVALID_LZMA_CHECK_ID;
assert_lzma_ret(lzma_stream_flags_compare(&first, &second),
LZMA_PROG_ERROR);
first.check = LZMA_CHECK_CRC32;
diff --git a/tests/tests.h b/tests/tests.h
index 4d6169b0..8d53e9de 100644
--- a/tests/tests.h
+++ b/tests/tests.h
@@ -19,6 +19,15 @@
#include "tuktest.h"
+// Invalid value for the lzma_check enumeration. This must be positive
+// but small enough to fit into signed char since the underlying type might
+// one some platform be a signed char.
+//
+// Don't put LZMA_ at the beginning of the name so that it is obvious that
+// this constant doesn't come from the API headers.
+#define INVALID_LZMA_CHECK_ID ((lzma_check)(LZMA_CHECK_ID_MAX + 1))
+
+
#define memcrap(buf, size) memset(buf, 0xFD, size)