44#define CHECK(cond, msg) \
47 fprintf(stderr, "FAIL: %s (line %d): %s\n", msg, __LINE__, \
48 aleph_ca_error_message_v1()); \
66 CHECK((ver >> 16) == 1u,
"major version is 1");
70 CHECK(e != NULL,
"engine created");
85 "vertical blinker after 1 step");
87 "horizontal arms cleared after 1 step");
92 "horizontal blinker after 2 steps");
98 for (
int i = 0; i < 25; ++i)
99 live += (buf[i] != 0);
100 CHECK(live == 3,
"three live cells in frame");
104 "small buffer rejected");
109 "out-of-range set rejected");
114 printf(
"c_abi_smoke: OK\n");
static int cell(const aleph_ca_engine_t *e, size_t r, size_t c)
aleph_ca_engine_t * aleph_ca_create_gol_engine_v1(size_t rows, size_t cols)
int aleph_ca_copy_frame_v1(const aleph_ca_engine_t *engine, int32_t *out, size_t out_len)
void aleph_ca_destroy_engine_v1(aleph_ca_engine_t *engine)
int aleph_ca_extents_v1(const aleph_ca_engine_t *engine, size_t *rows, size_t *cols)
int aleph_ca_step_v1(aleph_ca_engine_t *engine)
int aleph_ca_set_cell_v1(aleph_ca_engine_t *engine, size_t row, size_t col, int32_t value)
int aleph_ca_last_error_v1(void)
int aleph_ca_get_cell_v1(const aleph_ca_engine_t *engine, size_t row, size_t col, int32_t *out)
size_t aleph_ca_steps_run_v1(const aleph_ca_engine_t *engine)
uint32_t aleph_ca_api_version_v1(void)