static void test_write_flag(CuTest *tc) { curse_fixture fix; storage store; char buf[1024]; stream out = { 0 }; size_t len; mstream_init(&out); binstore_init(&store, &out); store.handle.data = &out; setup_curse(&fix, "gbdream"); fix.c->flags = 42 | CURSE_ISNEW; curse_write(fix.r->attribs, fix.r, &store); out.api->rewind(out.handle); len = out.api->read(out.handle, buf, sizeof(buf)); buf[len] = '\0'; out.api->rewind(out.handle); curse_read(fix.r->attribs, fix.r, &store); CuAssertIntEquals(tc, 42 | CURSE_ISNEW, ((curse *) fix.r->attribs->data.v)->flags); global.data_version = RELEASE_VERSION; CuAssertIntEquals(tc, RELEASE_VERSION, global.data_version); mstream_done(&out); binstore_done(&store); test_cleanup(); }
static int cw_read_depr(variant *var, void *target, gamedata *data) { storage *store = data->store; curse_init(var); curse_read(var, store, target); curse_done(var); READ_INT(store, NULL); return AT_READ_DEPR; }
static int cw_read(attrib * a, void *target, storage * store) { bresolve *br = calloc(sizeof(bresolve), 1); curse *c = (curse *) a->data.v; wallcurse *wc = (wallcurse *) c->data.v; variant var; curse_read(a, store, target); br->self = c; READ_INT(store, &br->id); var.i = br->id; ur_add(var, &wc->wall, resolve_borderid); var.v = br; ur_add(var, &wc->buddy, resolve_buddy); return AT_READ_OK; }