test-tables: allow sparse tables and check mapping for -1
Jan: test-tables fails on my system. The one it's failing on is: syscall: 222 → (null) → -1 ... and indeed, our own tables should not have holes, but syscall tables certainly might.
This commit is contained in:
parent
21c72713ae
commit
daabe5491e
|
@ -26,10 +26,11 @@ typedef int (*reverse_t)(const char*);
|
|||
static inline void _test_table(const char *name,
|
||||
lookup_t lookup,
|
||||
reverse_t reverse,
|
||||
int size) {
|
||||
int size,
|
||||
bool sparse) {
|
||||
int i;
|
||||
|
||||
for (i = 0; i < size + 1; i++) {
|
||||
for (i = -1; i < size + 1; i++) {
|
||||
const char* val = lookup(i);
|
||||
int rev;
|
||||
|
||||
|
@ -39,10 +40,12 @@ static inline void _test_table(const char *name,
|
|||
rev = reverse("--no-such--value----");
|
||||
|
||||
printf("%s: %d → %s → %d\n", name, i, val, rev);
|
||||
if (i < size ? val == NULL || rev != i : val != NULL || rev != -1)
|
||||
if (i >= 0 && i < size ?
|
||||
sparse ? rev != i && rev != -1 : val == NULL || rev != i :
|
||||
val != NULL || rev != -1)
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
|
||||
#define test_table(lower, upper) \
|
||||
_test_table(STRINGIFY(lower), lower##_to_string, lower##_from_string, _##upper##_MAX)
|
||||
_test_table(STRINGIFY(lower), lower##_to_string, lower##_from_string, _##upper##_MAX, false)
|
||||
|
|
|
@ -99,7 +99,7 @@ int main(int argc, char **argv) {
|
|||
test_table(unit_load_state, UNIT_LOAD_STATE);
|
||||
test_table(unit_type, UNIT_TYPE);
|
||||
|
||||
_test_table("syscall", syscall_to_name, syscall_from_name, syscall_max());
|
||||
_test_table("syscall", syscall_to_name, syscall_from_name, syscall_max(), true);
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue