void testLifecycleSimple(void) { Entity *test1 = yeCreateArray(NULL, NULL); Entity *test2 = yeCreateInt(1, NULL, NULL); Entity *test3 = yeCreateFloat(1, NULL, NULL); Entity *test4 = yeCreateString("test", NULL, NULL); Entity *test5 = yeCreateFunction("funcName", 3, NULL, NULL, NULL); g_assert(test1); g_assert(test2); g_assert(test3); g_assert(test4); g_assert(test5); YE_DESTROY(test1); YE_DESTROY(test2); YE_DESTROY(test3); YE_DESTROY(test4); YE_DESTROY(test5); g_assert(test1 == NULL); g_assert(test2 == NULL); g_assert(test3 == NULL); g_assert(test4 == NULL); g_assert(test5 == NULL); }
void testLifecycleAkwarde(void) { Entity *mainStruct = yeCreateArray(NULL, NULL); Entity *subStruct1 = yeCreateArray(mainStruct, NULL); Entity *subStruct2 = yeCreateArray(subStruct1, NULL); Entity *test3 = yeCreateString("i am an int entity", NULL, NULL); g_assert(mainStruct); g_assert(subStruct1); g_assert(subStruct2); g_assert(test3); g_assert(mainStruct->refCount == 1); g_assert(subStruct1->refCount == 1); g_assert(subStruct2->refCount == 1); g_assert(test3->refCount == 1); g_assert(!yePushBack(mainStruct, test3, NULL)); g_assert(test3->refCount == 2); g_assert(!yePushBack(subStruct1, test3, NULL)); g_assert(test3->refCount == 3); g_assert(!yePushBack(subStruct2, test3, NULL)); g_assert(test3->refCount == 4); YE_DESTROY(mainStruct); g_assert(test3->refCount == 1); g_assert(mainStruct == NULL); YE_DESTROY(test3); }
/* this tests is actually usefull only with valgrind */ void testLifecycleFlow(void) { Entity *mainStruct = yeCreateArray(NULL, NULL); Entity *subStruct1 = yeCreateArray(mainStruct, NULL); Entity *subStruct2 = yeCreateArray(NULL, NULL); Entity *test2 = yeCreateInt(1, subStruct2, NULL); Entity *test3 = yeCreateFloat(1, subStruct2, NULL); g_assert(test2); g_assert(test3); g_assert(mainStruct); g_assert(subStruct1); g_assert(subStruct2); g_assert(yeLen(mainStruct) == 1); g_assert(yeLen(subStruct2) == 2); g_assert(!yePushBack(mainStruct, subStruct2, NULL)); g_assert(yeLen(mainStruct) == 2); g_assert(mainStruct->refCount == 1); g_assert(subStruct1->refCount == 1); g_assert(test3->refCount == 1); g_assert(test2->refCount == 1); g_assert(subStruct2->refCount == 2); YE_DESTROY(subStruct2); g_assert(subStruct2); g_assert(subStruct2->refCount == 1); YE_DESTROY(mainStruct); g_assert(mainStruct == NULL); }
void *load_map(int nb, void **args) { const char *file_name = yeGetString(args[0]); int fd = open(file_name, O_RDONLY); int width = 0; Entity *mod_description = nb > 1 ? args[1] : NULL; char *name = nb > 3 ? args[3] : NULL; Entity *father = nb > 2 ? args[2] : yeCreateArray(NULL, name); Entity *map = yeCreateArray(father, "map"); if (fd < 0) { DPRINT_ERR("error when opening '%s'\n", file_name); goto error; } if (!read_map(fd, map, mod_description, file_name, &width, NULL, NULL)) { yeReCreateInt(width, father, "width"); return father; } error: if (nb > 2) YE_DESTROY(father); YE_DESTROY(map); return NULL; }
void testVerticalContenerSdl(void) { GameConfig cfg; Entity *ret; YWidgetState *wid; int t = ydJsonInit(); void *jsonManager; /* Init libs */ g_assert(!ygInitGameConfig(&cfg, NULL, SDL2)); g_assert(!ygInit(&cfg)); /* Parsing json */ jsonManager = ydNewManager(t); ret = ydFromFile(jsonManager, TESTS_PATH"/widget.json"); ret = yeGet(ret, "ContenerTest"); g_assert(ret); ywinAddCallback(ywinCreateNativeCallback("menuTest", testMenuEnter)); wid = ywidNewWidget(ret, NULL); g_assert(wid); do { g_assert(ywidRend(wid) != -1); } while(ywidDoTurn(wid) != ACTION); YE_DESTROY(ret); ygEnd(); }
int main(void) { yeInitMem(); GameConfig cfg; char buff[1024]; Entity *modDesc = yeCreateArray(NULL, NULL); Entity *tmp; Entity *map; Entity *path; yuiDebugInit(); //Can not be init twice :) TRY_OR_DIE(ygInitGameConfig(&cfg, gamePath, NONE), -1); TRY_OR_DIE(ygInit(&cfg), die(-1, &cfg)); /* put current path inside buff */ getcwd(buff, 1024); yuistrcpy(buff + yuistrlen(buff), "/test.sm"); path = yeCreateString(buff, NULL, NULL); tmp = yeCreateArray(modDesc, NULL); yeCreateString(".", tmp, "map-char"); tmp = yeCreateArray(modDesc, NULL); yeCreateString("#",tmp, "map-char"); tmp = yeCreateArray(modDesc, NULL); yeCreateString("_", tmp, "map-char"); ygLoadMod("../../../modules/sm-reader/"); map = yesCall(yeGet(ygGetMod("sm-reader"), "load-map"), path, modDesc); char *tmpStr = yeToCStr(map, 4, 0); printf("map: %s\n", tmpStr); g_free(tmpStr); tmpStr = yeToCStr(modDesc, 3, 0); printf("m-d: %s\n", tmpStr); g_free(tmpStr); YE_DESTROY(path); YE_DESTROY(map); YE_DESTROY(modDesc); return die(0, &cfg); }
void testPanelMenuSdl2(void) { yeInitMem(); int t = ydJsonInit(); void *jsonManager; Entity *oret, *ret; YWidgetState *wid; ysRegistreFunc(ysNativeManager(), "menuTest", testMenuEnter); /* load files */ g_assert(t != -1); g_assert(ydJsonGetType() == t); jsonManager = ydNewManager(t); g_assert(jsonManager != NULL); oret = ydFromFile(jsonManager, TESTS_PATH"/widget.json", NULL); ret = yeGet(oret, "MenuTest"); g_assert(ret); g_assert(!ydJsonEnd()); g_assert(!ydDestroyManager(jsonManager)); t = ywMenuInit(); g_assert(t == 0); g_assert(ysdl2Init() != -1); g_assert(ysdl2Type() == 0); yeCreateString("panel", ret, "mn-type"); g_assert(ysdl2RegistreMenu() == 0); wid = ywidNewWidget(ret, NULL); g_assert(wid); do { g_assert(ywidRend(wid) != -1); } while(ywidDoTurn(wid) != ACTION); g_assert(!ywMenuEnd()); YWidDestroy(wid); ysdl2Destroy(); /* end libs */ YE_DESTROY(oret); yeEnd(); }
void testLifecycleComplex(void) { Entity *mainStruct = yeCreateArray(NULL, NULL); Entity *subStruct1 = yeCreateArray(mainStruct, NULL); Entity *subStruct2 = yeCreateArray(mainStruct, NULL); Entity *test3 = yeCreateFloat(1, subStruct2, NULL); g_assert(mainStruct); g_assert(subStruct1); g_assert(subStruct2); g_assert(!yePushBack(subStruct1, subStruct2, NULL)); yeExpandArray(subStruct2, 5); yeAttach(subStruct2, test3, 2, NULL); g_assert(mainStruct->refCount == 1); g_assert(subStruct1->refCount == 1); g_assert(subStruct2->refCount == 2); YE_DESTROY(mainStruct); g_assert(mainStruct == NULL); }
void testLifeDeathRebirdAndAgain(void) { Entity *mainEnt = yeCreateArray(NULL, NULL); Entity *map; Entity *tmp; yeCreateInt(100, mainEnt, "width"); map = yeCreateArray(mainEnt, "map"); g_assert(map); for (int i = 0; i < 2000; ++i) { tmp = yeCreateArray(map, NULL); g_assert(tmp); g_assert(yeCreateInt(0, tmp, NULL)); } tmp = yeGet(map, 500); g_assert(tmp); yeCreateInt(1, tmp, "hr"); int good = 0;; for (int j = 500; j < 1000; ++j) { tmp = yeGet(map, j); for (unsigned int i = 0; i < yeLen(tmp); ++i) { Entity *curHero = yeGet(tmp, i); if (yeGetInt(curHero) == 1) { good = 1; /* You can get it Noww !!!! */ g_assert(yeLen(tmp) == 2); yeRemoveChild(tmp, curHero); g_assert(yeLen(tmp) == 1); break; } } } g_assert(good); YE_DESTROY(mainEnt); }
static int mapDestroy(YWidgetState *opac) { YE_DESTROY(((YMapState *)opac)->pos); g_free(opac); return 0; }