char* test_arena() { sp_arena* arena = alloc_arena(); sp_block_template tmpl; sp_block* bl1 = NULL; sp_block* bl2 = NULL; sp_placement* pl = NULL; sp_arena_state* st = NULL; tmpl.visual = 7; tmpl.w = 3; tmpl.h = 4; mu_assert(arena, "arena is allocated"); mu_assert(bl1 = new_block(&tmpl), "block 1"); mu_assert(bl2 = new_block(&tmpl), "block 2"); block_add_quality(bl1, B_QUALITY_RECEIVES(SP_EVT_DUMMY, 1)); pl = arena_place(arena, bl1, 5, 6); mu_assert(pl, "placement"); mu_assert(arena_place(arena, bl1, 5, 6) == NULL, "double placement fails"); mu_assert(arena_place(arena, bl2, 5, 6), "other placement"); arena_consume_event(arena, new_sp_event(SP_EVT_DUMMY, 1)); mu_assert(block_has_quality(bl1, B_QUALITY_RECEIVES(SP_EVT_DUMMY, 2)), "events are dispatched"); st = arena_export_state(arena); mu_assert(st->n_blocks == 2, "two blocks in state"); mu_assert(st->blocks[0].w == 3, "w size is correct"); mu_assert(st->blocks[0].h == 4, "h size is correct"); mu_assert(st->blocks[0].x == 5, "x location is correct"); mu_assert(st->blocks[0].y == 6, "y location is correct"); mu_assert(st->blocks[0].visual == 7, "visual is correct"); mu_assert(arena_remove(arena, pl) == bl1, "removal works"); mu_assert(arena_remove_block(arena, bl1) == NULL, "double removal fails"); mu_assert(arena_remove_block(arena, bl2) == bl2, "removal by block successful"); SPFREE(arena); SPFREE(bl1); SPFREE(bl2); SPFREE(st); return NULL; }
static int doSSreport (struct assocblk *acb, struct SSAPreport *sp, struct RoSAPindication *roi) { ropktlose (acb, roi, ROS_PROTOCOL, NULLCP, "unexpected exception report indication (0x%x)", sp -> sp_peer); SPFREE (sp); freeacblk (acb); return NOTOK; }
char* test_imprint_blocks() { sp_block *bl = NULL; sp_block *bl2 = NULL; sp_block_template tmpl; sp_block_template tmpl2; tmpl.flags.prohibits = PR_WALK | PR_FLY; tmpl.flags.type = BT_BLOCK; tmpl.flags.orient = OR_EAST; bl = new_block(&tmpl); printmem("tmpl", &tmpl, sp_block_template); printmem("block", bl, sp_block); mu_assert(bl, "block was allocated"); mu_assert(bl->flags.prohibits == (PR_WALK | PR_FLY), "block had flags set"); mu_assert(bl->qualities[0] == 0, "qualities nulled out"); bl->qualities[0] = B_QUALITY(Q_UNLOCKS, 1); bl->qualities[1] = B_QUALITY(56, 23); tmpl2.flags.prohibits = PR_ALL; tmpl2.flags.type = BT_PROP; tmpl2.flags.orient = OR_NONE; bl2 = new_block_init(&tmpl2, *bl); mu_assert(bl2, "block was allocated again"); mu_assert(bl2->flags.prohibits == PR_ALL, "block gets flags from new template"); mu_assert(bl2->qualities[1] == B_QUALITY(56, 23), "block gets qualities from proto"); SPFREE(bl); SPFREE(bl2); return NULL; }