test.c 1.65 KB
#include "mem.h"
#include <stdbool.h>
#include <stdio.h>


bool test_basic_allocation() {
    void* small_block = _malloc(64);
    if (!small_block) return false;
    _free(small_block);
    return true;
}

bool test_free_single_block() {
    void* small_block = _malloc(128);
    void* medium_block = _malloc(256);
    if (!small_block || !medium_block) return false;

    _free(small_block);
    void* new_small_block = _malloc(128);
    if (!new_small_block) return false;

    _free(medium_block);
    _free(new_small_block);
    return true;
}

bool test_free_multiple_blocks() {
    void* small_block = _malloc(128);
    void* medium_block = _malloc(256);
    void* large_block = _malloc(512);
    if (!small_block || !medium_block || !large_block) return false;

    _free(small_block);
    _free(medium_block);
    void* new_small_block = _malloc(128);
    if (!new_small_block) return false;

    _free(large_block);
    _free(new_small_block);
    return true;
}

bool test_heap_extension() {
    void* small_block = _malloc(1024);
    void* medium_block = _malloc(2048);
    void* large_block = _malloc(4096);
    if (!small_block || !medium_block || !large_block) return false;

    void* huge_block = _malloc(8192);
    if (!huge_block) return false;

    _free(small_block);
    _free(medium_block);
    _free(large_block);
    _free(huge_block);
    return true;
}

bool test_block_splitting() {
    void* small_block = _malloc(1024);
    void* medium_block = _malloc(2048);
    void* large_block = _malloc(8192);
    if (!small_block || !medium_block || !large_block) return false;

    _free(small_block);
    _free(medium_block);
    _free(large_block);
    return true;
}