/** * This is a test for sprite in $package$ */ #include "si_test.h" #include "eruta.h" #include "sprite.h" TEST_FUNC(sprite) { SpriteList * list; Sprite * sprite; SpriteAction * act; SpriteFrame * frame; SpriteLayer * layer; Point offset = bevec(1.0, 2.0); sprite = sprite_new(1); list = spritelist_new(); TEST_NOTNULL(list); TEST_NOTNULL(spritelist_getornew(list, 123)); TEST_NOTNULL(sprite); TEST_NULL(sprite_action(sprite, 0)); TEST_NULL(sprite_action(sprite, 1)); TEST_NULL(sprite_frame(sprite, 1, 2)); TEST_NULL(sprite_layer(sprite, 1, 2, 3)); act = sprite_newaction(sprite, 0, SPRITE_NORTH, SPRITE_ACTIVE); TEST_NOTNULL(act); TEST_PTREQ(act, sprite_action(sprite, 0)); act = sprite_newaction(sprite, 0, SPRITE_NORTH,SPRITE_ACTIVE); TEST_NOTNULL(act); TEST_PTREQ(act, sprite_action(sprite, 0)); frame = sprite_newframe(sprite, 0, 1, SPRITE_ACTIVE, 0.25); TEST_NOTNULL(frame); TEST_PTREQ(frame, sprite_frame(sprite, 0, 1)); layer = sprite_newlayer(sprite, 0, 1, 2, NULL, offset); TEST_NOTNULL(layer); TEST_PTREQ(layer, sprite_layer(sprite, 0, 1, 2)); /* Check if out of bounds new works and doesn't leak. */ act = sprite_newaction(sprite, 100, SPRITE_NORTH, SPRITE_ACTIVE); TEST_NULL(act); layer = sprite_newlayer(sprite, 0, 1, 22, NULL, offset); TEST_NULL(layer); TEST_PTREQ(layer, sprite_layer(sprite, 0, 1, 22)); frame = sprite_newframe(sprite, 0, 111, SPRITE_ACTIVE, 0.25); TEST_NULL(frame); layer = sprite_newlayer(sprite, 0, 1, 222, NULL, offset); TEST_NULL(layer); TEST_NOTNULL(sprite_maxactions_(sprite, 77)); TEST_INTEQ(77, sprite_maxactions(sprite)); act = sprite_newaction(sprite, 60, SPRITE_NORTH, SPRITE_ACTIVE); TEST_NOTNULL(sprite_action(sprite, 60)); TEST_NOTNULL(sprite_maxactions_(sprite, 1)); TEST_NULL(sprite_action(sprite, 60)); TEST_INTEQ(1, sprite_maxactions(sprite)); TEST_NOTNULL(sprite_action(sprite, 0)); act = sprite_action(sprite, 0); if (act) { TEST_NOTNULL(spriteaction_maxframes_(act, 3)); } spritelist_free(list); sprite_free(sprite); TEST_DONE(); } int main(void) { TEST_INIT(); TEST_RUN(sprite); TEST_REPORT(); }