t/unit-tests: convert mem-pool test to use clar test framework
Adapt the mem-pool test script to use clar framework by using clar assertions where necessary.Test functions are created as a standalone to test different test cases. Mentored-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Seyi Kuforiji <kuforiji98@gmail.com> Acked-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
aae2b431b0
commit
c143dfa7ed
2
Makefile
2
Makefile
@ -1338,6 +1338,7 @@ THIRD_PARTY_SOURCES += $(UNIT_TEST_DIR)/clar/%
|
|||||||
THIRD_PARTY_SOURCES += $(UNIT_TEST_DIR)/clar/clar/%
|
THIRD_PARTY_SOURCES += $(UNIT_TEST_DIR)/clar/clar/%
|
||||||
|
|
||||||
CLAR_TEST_SUITES += u-ctype
|
CLAR_TEST_SUITES += u-ctype
|
||||||
|
CLAR_TEST_SUITES += u-mem-pool
|
||||||
CLAR_TEST_SUITES += u-strvec
|
CLAR_TEST_SUITES += u-strvec
|
||||||
CLAR_TEST_PROG = $(UNIT_TEST_BIN)/unit-tests$(X)
|
CLAR_TEST_PROG = $(UNIT_TEST_BIN)/unit-tests$(X)
|
||||||
CLAR_TEST_OBJS = $(patsubst %,$(UNIT_TEST_DIR)/%.o,$(CLAR_TEST_SUITES))
|
CLAR_TEST_OBJS = $(patsubst %,$(UNIT_TEST_DIR)/%.o,$(CLAR_TEST_SUITES))
|
||||||
@ -1347,7 +1348,6 @@ CLAR_TEST_OBJS += $(UNIT_TEST_DIR)/unit-test.o
|
|||||||
UNIT_TEST_PROGRAMS += t-example-decorate
|
UNIT_TEST_PROGRAMS += t-example-decorate
|
||||||
UNIT_TEST_PROGRAMS += t-hash
|
UNIT_TEST_PROGRAMS += t-hash
|
||||||
UNIT_TEST_PROGRAMS += t-hashmap
|
UNIT_TEST_PROGRAMS += t-hashmap
|
||||||
UNIT_TEST_PROGRAMS += t-mem-pool
|
|
||||||
UNIT_TEST_PROGRAMS += t-oid-array
|
UNIT_TEST_PROGRAMS += t-oid-array
|
||||||
UNIT_TEST_PROGRAMS += t-oidmap
|
UNIT_TEST_PROGRAMS += t-oidmap
|
||||||
UNIT_TEST_PROGRAMS += t-oidtree
|
UNIT_TEST_PROGRAMS += t-oidtree
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
clar_test_suites = [
|
clar_test_suites = [
|
||||||
'unit-tests/u-ctype.c',
|
'unit-tests/u-ctype.c',
|
||||||
|
'unit-tests/u-mem-pool.c',
|
||||||
'unit-tests/u-strvec.c',
|
'unit-tests/u-strvec.c',
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -43,7 +44,6 @@ unit_test_programs = [
|
|||||||
'unit-tests/t-example-decorate.c',
|
'unit-tests/t-example-decorate.c',
|
||||||
'unit-tests/t-hash.c',
|
'unit-tests/t-hash.c',
|
||||||
'unit-tests/t-hashmap.c',
|
'unit-tests/t-hashmap.c',
|
||||||
'unit-tests/t-mem-pool.c',
|
|
||||||
'unit-tests/t-oid-array.c',
|
'unit-tests/t-oid-array.c',
|
||||||
'unit-tests/t-oidmap.c',
|
'unit-tests/t-oidmap.c',
|
||||||
'unit-tests/t-oidtree.c',
|
'unit-tests/t-oidtree.c',
|
||||||
|
@ -1,31 +0,0 @@
|
|||||||
#include "test-lib.h"
|
|
||||||
#include "mem-pool.h"
|
|
||||||
|
|
||||||
static void setup_static(void (*f)(struct mem_pool *), size_t block_alloc)
|
|
||||||
{
|
|
||||||
struct mem_pool pool = { .block_alloc = block_alloc };
|
|
||||||
f(&pool);
|
|
||||||
mem_pool_discard(&pool, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void t_calloc_100(struct mem_pool *pool)
|
|
||||||
{
|
|
||||||
size_t size = 100;
|
|
||||||
char *buffer = mem_pool_calloc(pool, 1, size);
|
|
||||||
for (size_t i = 0; i < size; i++)
|
|
||||||
check_int(buffer[i], ==, 0);
|
|
||||||
if (!check(pool->mp_block != NULL))
|
|
||||||
return;
|
|
||||||
check(pool->mp_block->next_free != NULL);
|
|
||||||
check(pool->mp_block->end != NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
int cmd_main(int argc UNUSED, const char **argv UNUSED)
|
|
||||||
{
|
|
||||||
TEST(setup_static(t_calloc_100, 1024 * 1024),
|
|
||||||
"mem_pool_calloc returns 100 zeroed bytes with big block");
|
|
||||||
TEST(setup_static(t_calloc_100, 1),
|
|
||||||
"mem_pool_calloc returns 100 zeroed bytes with tiny block");
|
|
||||||
|
|
||||||
return test_done();
|
|
||||||
}
|
|
25
t/unit-tests/u-mem-pool.c
Normal file
25
t/unit-tests/u-mem-pool.c
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
#include "unit-test.h"
|
||||||
|
#include "mem-pool.h"
|
||||||
|
|
||||||
|
static void test_many_pool_allocations(size_t block_alloc)
|
||||||
|
{
|
||||||
|
struct mem_pool pool = { .block_alloc = block_alloc };
|
||||||
|
size_t size = 100;
|
||||||
|
char *buffer = mem_pool_calloc(&pool, 1, size);
|
||||||
|
for (size_t i = 0; i < size; i++)
|
||||||
|
cl_assert_equal_i(0, buffer[i]);
|
||||||
|
cl_assert(pool.mp_block != NULL);
|
||||||
|
cl_assert(pool.mp_block->next_free != NULL);
|
||||||
|
cl_assert(pool.mp_block->end != NULL);
|
||||||
|
mem_pool_discard(&pool, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_mem_pool__big_block(void)
|
||||||
|
{
|
||||||
|
test_many_pool_allocations(1024 * 1024);
|
||||||
|
}
|
||||||
|
|
||||||
|
void test_mem_pool__tiny_block(void)
|
||||||
|
{
|
||||||
|
test_many_pool_allocations(1);
|
||||||
|
}
|
Reference in New Issue
Block a user