2026-11-08 14:46:04 +01:00
|
|
|
#include <assert.h>
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
|
|
|
|
|
#include "grid.h"
|
|
|
|
|
|
|
|
|
|
int main(void) {
|
|
|
|
|
grid_t g;
|
|
|
|
|
grid_init(&g, 4, 4);
|
|
|
|
|
assert(grid_get(&g, 0, 0) == 0);
|
|
|
|
|
grid_set(&g, 1, 2, 1);
|
|
|
|
|
assert(grid_get(&g, 1, 2) == 1);
|
|
|
|
|
assert(grid_get(&g, -1, 0) == 0);
|
|
|
|
|
assert(grid_get(&g, 4, 4) == 0);
|
|
|
|
|
|
|
|
|
|
grid_set(&g, 0, 0, 1);
|
|
|
|
|
grid_resize(&g, 6, 2);
|
|
|
|
|
assert(grid_get(&g, 0, 0) == 1);
|
|
|
|
|
assert(grid_get(&g, 1, 2) == 0);
|
|
|
|
|
grid_clear(&g);
|
|
|
|
|
assert(grid_get(&g, 0, 0) == 0);
|
|
|
|
|
|
2026-11-08 20:11:55 +01:00
|
|
|
/* grid_copy: same-size round trip */
|
|
|
|
|
grid_t snap;
|
|
|
|
|
grid_init(&snap, 1, 1);
|
|
|
|
|
grid_set(&g, 2, 1, 1);
|
|
|
|
|
grid_copy(&snap, &g);
|
|
|
|
|
assert(snap.cols == 4 && snap.rows == 4);
|
|
|
|
|
assert(grid_get(&snap, 2, 1) == 1);
|
|
|
|
|
assert(grid_get(&snap, 0, 0) == 0);
|
|
|
|
|
|
|
|
|
|
/* grid_copy: grow preserves cells, new area is dead */
|
|
|
|
|
grid_set(&g, 3, 3, 1);
|
|
|
|
|
grid_resize(&g, 6, 6);
|
|
|
|
|
grid_copy(&snap, &g);
|
|
|
|
|
assert(snap.cols == 6 && snap.rows == 6);
|
|
|
|
|
assert(grid_get(&snap, 2, 1) == 1);
|
|
|
|
|
assert(grid_get(&snap, 3, 3) == 1);
|
|
|
|
|
assert(grid_get(&snap, 5, 5) == 0);
|
|
|
|
|
|
|
|
|
|
/* grid_copy: shrink truncates out-of-bounds cells */
|
|
|
|
|
grid_resize(&g, 2, 2);
|
|
|
|
|
grid_copy(&snap, &g);
|
|
|
|
|
assert(snap.cols == 2 && snap.rows == 2);
|
|
|
|
|
assert(grid_get(&snap, 2, 1) == 0);
|
|
|
|
|
assert(grid_get(&snap, 1, 1) == 0);
|
|
|
|
|
|
|
|
|
|
grid_free(&snap);
|
2026-11-08 14:46:04 +01:00
|
|
|
grid_free(&g);
|
|
|
|
|
printf("grid tests passed\n");
|
|
|
|
|
return 0;
|
|
|
|
|
}
|