c-md/tests/map/test_map_core.c
2026-01-12 10:18:47 +01:00

118 lines
1.9 KiB
C

#include <criterion/criterion.h>
#include <stdio.h>
#include <string.h>
#include "map.h"
/*
** TESTS: map/core.c - Initialization
*/
Test(map_core, init)
{
t_map map;
map_init(&map);
cr_assert_null(map.ranges);
cr_assert_eq(map.count, 0);
cr_assert_eq(map.capacity, 0);
}
/*
** TESTS: map/core.c - Adding ranges
*/
Test(map_core, add_single_range)
{
t_map map;
map_init(&map);
map_add(&map, 10, 20, 5, 15);
cr_assert_not_null(map.ranges);
cr_assert_eq(map.count, 1);
cr_assert_geq(map.capacity, 1);
cr_assert_eq(map.ranges[0].src_start, 10);
cr_assert_eq(map.ranges[0].src_end, 20);
cr_assert_eq(map.ranges[0].dst_start, 5);
cr_assert_eq(map.ranges[0].dst_end, 15);
map_free(&map);
}
Test(map_core, add_multiple_ranges)
{
t_map map;
map_init(&map);
map_add(&map, 1, 5, 1, 5);
map_add(&map, 10, 15, 7, 12);
map_add(&map, 20, 25, 14, 19);
cr_assert_eq(map.count, 3);
cr_assert_geq(map.capacity, 3);
cr_assert_eq(map.ranges[0].src_start, 1);
cr_assert_eq(map.ranges[1].src_start, 10);
cr_assert_eq(map.ranges[2].src_start, 20);
map_free(&map);
}
/*
** TESTS: map/core.c - Dynamic growth
*/
Test(map_core, capacity_growth)
{
t_map map;
size_t i;
map_init(&map);
for (i = 0; i < 100; i++)
{
map_add(&map, i, i + 10, i, i + 10);
}
cr_assert_eq(map.count, 100);
cr_assert_geq(map.capacity, 100);
for (i = 0; i < 100; i++)
{
cr_assert_eq(map.ranges[i].src_start, i);
cr_assert_eq(map.ranges[i].src_end, i + 10);
}
map_free(&map);
}
/*
** TESTS: map/core.c - Memory management
*/
Test(map_core, free_after_init)
{
t_map map;
map_init(&map);
map_free(&map);
cr_assert_null(map.ranges);
cr_assert_eq(map.count, 0);
cr_assert_eq(map.capacity, 0);
}
Test(map_core, free_after_add)
{
t_map map;
map_init(&map);
map_add(&map, 1, 10, 1, 10);
map_free(&map);
cr_assert_null(map.ranges);
cr_assert_eq(map.count, 0);
cr_assert_eq(map.capacity, 0);
}