diff options
Diffstat (limited to 'src/tests/utests/malloc/test.c')
-rw-r--r-- | src/tests/utests/malloc/test.c | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/tests/utests/malloc/test.c b/src/tests/utests/malloc/test.c new file mode 100644 index 0000000..bc11d9d --- /dev/null +++ b/src/tests/utests/malloc/test.c @@ -0,0 +1,40 @@ +#include <string.h> + +#include <malloc.h> + +#include <syscall.h> +#include <debug.h> +#include <user_region.h> + +int main(int argc, char **argv) { + dbg_print("(BEGIN-USER-TEST malloc-test)\n"); + + dbg_print_region_info(); + + for (int iter = 0; iter < 4; iter++) { + dbg_printf("Doing malloc test #%d...\n", iter + 1); + const int m = 200; + uint16_t** ptr = malloc(m * sizeof(uint32_t)); + for (int i = 0; i < m; i++) { + size_t s = 1 << ((i * 7) % 11 + 2); + ptr[i] = (uint16_t*)malloc(s); + ASSERT((size_t)ptr[i] >= 0x40000000 && (size_t)ptr[i] < 0xB0000000); + *ptr[i] = ((i * 211) % 1024); + } + dbg_printf("Fully allocated.\n"); + dbg_print_region_info(); + for (int i = 0; i < m; i++) { + for (int j = i; j < m; j++) { + ASSERT(*ptr[j] == (j * 211) % 1024); + } + free(ptr[i]); + } + free(ptr); + dbg_printf("malloc test OK.\n"); + dbg_print_region_info(); + } + + dbg_printf("(TEST-OK)\n"); + + return 0; +} |