Make sure pointer checks in unit tests use cmocka assertion macros
dedicated for use with pointers instead of those dedicated for use with
integers or booleans.
(cherry picked from commit f440600126)
117 lines
2.0 KiB
C
117 lines
2.0 KiB
C
/*
|
|
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
|
*
|
|
* See the COPYRIGHT file distributed with this work for additional
|
|
* information regarding copyright ownership.
|
|
*/
|
|
|
|
/* ! \file */
|
|
|
|
#if HAVE_CMOCKA
|
|
|
|
#include <sched.h> /* IWYU pragma: keep */
|
|
#include <setjmp.h>
|
|
#include <stdarg.h>
|
|
#include <stddef.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
#define UNIT_TESTING
|
|
#include <cmocka.h>
|
|
|
|
#include <isc/heap.h>
|
|
#include <isc/mem.h>
|
|
#include <isc/util.h>
|
|
|
|
#include "isctest.h"
|
|
|
|
static int
|
|
_setup(void **state) {
|
|
isc_result_t result;
|
|
|
|
UNUSED(state);
|
|
|
|
result = isc_test_begin(NULL, true, 0);
|
|
assert_int_equal(result, ISC_R_SUCCESS);
|
|
|
|
return (0);
|
|
}
|
|
|
|
static int
|
|
_teardown(void **state) {
|
|
UNUSED(state);
|
|
|
|
isc_test_end();
|
|
|
|
return (0);
|
|
}
|
|
|
|
struct e {
|
|
unsigned int value;
|
|
unsigned int index;
|
|
};
|
|
|
|
static bool
|
|
compare(void *p1, void *p2) {
|
|
struct e *e1 = p1;
|
|
struct e *e2 = p2;
|
|
|
|
return (e1->value < e2->value);
|
|
}
|
|
|
|
static void
|
|
idx(void *p, unsigned int i) {
|
|
struct e *e = p;
|
|
|
|
e->index = i;
|
|
}
|
|
|
|
/* test isc_heap_delete() */
|
|
static void
|
|
isc_heap_delete_test(void **state) {
|
|
isc_heap_t *heap = NULL;
|
|
isc_result_t result;
|
|
struct e e1 = { 100, 0 };
|
|
|
|
UNUSED(state);
|
|
|
|
result = isc_heap_create(test_mctx, compare, idx, 0, &heap);
|
|
assert_int_equal(result, ISC_R_SUCCESS);
|
|
assert_non_null(heap);
|
|
|
|
isc_heap_insert(heap, &e1);
|
|
assert_int_equal(result, ISC_R_SUCCESS);
|
|
assert_int_equal(e1.index, 1);
|
|
|
|
isc_heap_delete(heap, e1.index);
|
|
assert_int_equal(e1.index, 0);
|
|
|
|
isc_heap_destroy(&heap);
|
|
assert_null(heap);
|
|
}
|
|
|
|
int
|
|
main(void) {
|
|
const struct CMUnitTest tests[] = {
|
|
cmocka_unit_test(isc_heap_delete_test),
|
|
};
|
|
|
|
return (cmocka_run_group_tests(tests, _setup, _teardown));
|
|
}
|
|
|
|
#else /* HAVE_CMOCKA */
|
|
|
|
#include <stdio.h>
|
|
|
|
int
|
|
main(void) {
|
|
printf("1..0 # Skipped: cmocka not available\n");
|
|
return (0);
|
|
}
|
|
|
|
#endif /* if HAVE_CMOCKA */
|