1
0
Fork 0
mirror of https://github.com/git/git.git synced 2024-05-12 15:16:09 +02:00

Merge branch 'rs/t-prio-queue-fixes'

Test clean-up.

* rs/t-prio-queue-fixes:
  t-prio-queue: check result array bounds
  t-prio-queue: shorten array index message
This commit is contained in:
Junio C Hamano 2024-03-28 14:13:51 -07:00
commit 8e2422320c

View File

@ -19,11 +19,13 @@ static int show(int *v)
return v ? *v : MISSING; return v ? *v : MISSING;
} }
static void test_prio_queue(int *input, int *result, size_t input_size) static void test_prio_queue(int *input, size_t input_size,
int *result, size_t result_size)
{ {
struct prio_queue pq = { intcmp }; struct prio_queue pq = { intcmp };
int j = 0;
for (int i = 0, j = 0; i < input_size; i++) { for (int i = 0; i < input_size; i++) {
void *peek, *get; void *peek, *get;
switch(input[i]) { switch(input[i]) {
case GET: case GET:
@ -31,16 +33,22 @@ static void test_prio_queue(int *input, int *result, size_t input_size)
get = prio_queue_get(&pq); get = prio_queue_get(&pq);
if (!check(peek == get)) if (!check(peek == get))
return; return;
if(!check_int(result[j++], ==, show(get))) if (!check_uint(j, <, result_size))
test_msg("failed at result[] index %d", j-1); break;
if (!check_int(result[j], ==, show(get)))
test_msg(" j: %d", j);
j++;
break; break;
case DUMP: case DUMP:
while ((peek = prio_queue_peek(&pq))) { while ((peek = prio_queue_peek(&pq))) {
get = prio_queue_get(&pq); get = prio_queue_get(&pq);
if (!check(peek == get)) if (!check(peek == get))
return; return;
if(!check_int(result[j++], ==, show(get))) if (!check_uint(j, <, result_size))
test_msg("failed at result[] index %d", j-1); break;
if (!check_int(result[j], ==, show(get)))
test_msg(" j: %d", j);
j++;
} }
break; break;
case STACK: case STACK:
@ -54,6 +62,7 @@ static void test_prio_queue(int *input, int *result, size_t input_size)
break; break;
} }
} }
check_uint(j, ==, result_size);
clear_prio_queue(&pq); clear_prio_queue(&pq);
} }
@ -77,7 +86,8 @@ static void test_prio_queue(int *input, int *result, size_t input_size)
{ \ { \
int input[] = {INPUT}; \ int input[] = {INPUT}; \
int result[] = {RESULT}; \ int result[] = {RESULT}; \
test_prio_queue(input, result, ARRAY_SIZE(input)); \ test_prio_queue(input, ARRAY_SIZE(input), \
result, ARRAY_SIZE(result)); \
} }
TEST_INPUT(BASIC_INPUT, BASIC_RESULT, basic) TEST_INPUT(BASIC_INPUT, BASIC_RESULT, basic)