#include #include #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); /* 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); grid_free(&g); printf("grid tests passed\n"); return 0; }