Пример #1
0
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;
}
Пример #2
0
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;
}
Пример #3
0
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;
}