malloc/t/malloc_tests.c

67 lines
1.3 KiB
C
Raw Normal View History

2019-04-24 20:59:37 +03:00
#include "t.h"
2019-05-04 20:23:32 +03:00
#include "ft_malloc.h"
#include "ft_malloc_internal.h"
2019-04-24 20:59:37 +03:00
2019-05-04 20:23:32 +03:00
int inital_base_next_point_to_itself(void)
2019-04-24 20:59:37 +03:00
{
2019-05-04 20:23:32 +03:00
_IS(g_base.next == &g_base);
_END("inital_base_next_point_to_itself");
}
int returns_not_null_pointer(void)
{
2019-05-05 19:30:06 +03:00
t_chunk *ptr;
2019-05-04 20:23:32 +03:00
2019-05-05 19:30:06 +03:00
g_base.next = &g_base;
2019-05-04 20:23:32 +03:00
ptr = malloc(10);
_IS(ptr != NULL);
2019-05-05 19:30:06 +03:00
ptr = ptr - 1;
_IS(ptr->is_free == 0);
_IS(ptr->size == 10 + sizeof(t_chunk));
_IS(ptr->magic == MAGIC);
_IS(ptr->next == NULL);
_IS(ptr->prev != NULL);
_IS(ptr->prev->size > TINY * NALLOC && ptr->prev->size < SMALL * NALLOC);
2019-05-04 20:23:32 +03:00
_END("returns_not_null_pointer");
2019-04-24 20:59:37 +03:00
}
2019-05-05 19:30:06 +03:00
int free_concatenates_andjustent_blocks(void)
{
t_chunk *ptr;
t_chunk *next_malloc;
t_chunk *heap;
g_base.next = &g_base;
ptr = malloc(10);
next_malloc = malloc(10);
ptr -= 1;
next_malloc -= 1;
free(ptr + 1);
_IS(ptr->is_free == 1);
_IS(ptr->prev == next_malloc);
_IS(next_malloc->is_free == 0);
_IS(next_malloc->next == ptr);
_IS(next_malloc->prev->prev == NULL);
heap = next_malloc->prev;
free(next_malloc + 1);
_IS(heap->is_free == 1);
_IS(heap->prev == NULL);
_IS(heap->next == NULL);
_END("free_concatenates_andjustent_blocks");
}
2019-05-03 00:18:45 +03:00
int main(void)
2019-04-24 20:59:37 +03:00
{
2019-05-04 20:23:32 +03:00
_SHOULD(inital_base_next_point_to_itself);
_SHOULD(returns_not_null_pointer);
2019-05-05 19:30:06 +03:00
_SHOULD(free_concatenates_andjustent_blocks);
2019-04-24 20:59:37 +03:00
return 0;
}