📄 dbtest.c
字号:
test_total(pass, 2); break; } case 39: { /* test loadobjectbyobject in a more complect way. */ Object *obj2; debugmsg("Testing object by object loadings"); obj = db_createobject("soldier"); db_add(obj); debugmsg("Beginning ----- "); db_setvalue(obj, "id", NULL, "24"); db_setvalue(obj, "rankid", NULL, "3"); db_setvalue(obj, "countryid", NULL, "1"); db_setvalue(obj, "name", NULL, "norty dru"); db_setvalue(obj, "active", NULL, "t"); db_setvalue(obj, "location", NULL, "Bathroom"); debugmsg("Created soldier ----- "); obj2 = db_createobject("weapon"); retval = db_loadobjectbyobject(obj, obj2, "weapon"); debugmsg("Starting write weapon ----- "); db_add(obj2); db_setvalue(obj2, "id", NULL, "24"); db_setvalue(obj2, "name", NULL, "AK48"); db_setvalue(obj2, "damage", NULL, "102"); debugmsg("Testing results ----- "); db_getvalue(obj2, "name", NULL, &retstr); test_result(retstr,"AK48",&pass); db_freeobject(obj2); db_freeobject(obj); obj = db_createobject("soldier"); db_getobjectbyfield(obj, "id", "24"); db_deleteobject(obj); db_freeobject(obj); test_total(pass, 1); break; } case 40: { /* test loadobjectbyobject in a more complect way. *//* obj = db_createobject("soldier"); db_getvalue(obj, "description", "rank", &retstr); db_freeobject(obj); */ /*debugmsg("STEP TWO"); obj = db_createobject("soldier"); db_obj_handle_empty_recordset(obj); db_getvalue(obj, "description", "rank", &retstr); db_freeobject(obj); debugmsg("STEP THREE"); obj = db_createobject("soldier"); db_obj_handle_empty_recordset(obj); db_getvalue(obj, "description", "rank", &retstr); db_add(obj); db_getvalue(obj, "description", "rank", &retstr); db_freeobject(obj);*/ break; } case 41: { walk = NULL; obj = db_createobject("soldier"); db_loadall(obj); walk = db_filter_addrequestlist(walk, "name", NULL); walk = db_filter_addrequestlist(walk, "countryid", NULL); db_filter_load(obj, walk); db_filter_filterbyvalue(obj, "countryid", "soldier", "1"); db_add(obj); /* db_moveto(obj,0); */ db_getvalue(obj, "description", "rank", &retstr); test_result(retstr, "Corporal", &pass); mem_free(retstr); db_freeobject(obj); test_total(pass, 1); break; } case 42: { DbMethodDef *md; DbParseResult res; md = NULL; res = db_method_parse(&md, "calcTotal(soldier.rankid, 'hello home', '12')"); if (res.ok) { puts(db_method_to_string(md)); db_method_cleanup(md); } else { printf("Error: %s\n", res.errormsg); } md = NULL; res = db_method_parse(&md, "any: calcTotal(soldier.rankid, 'hello\\'s home', '12' )"); if (res.ok) { puts(db_method_to_string(md)); db_method_cleanup(md); } else { printf("Error: %s\n", res.errormsg); } md = NULL; res = db_method_parse(&md, "calcTotal(hello.rank, 'hello\\'s \\\"1\\\" home', '12' )"); if (res.ok) { puts(db_method_to_string(md)); db_method_cleanup(md); } else { printf("Error: %s\n", res.errormsg); } md = NULL; res = db_method_parse(&md, "calcTotal(soldier.rank, 56, 'hat')"); if (res.ok) { puts(db_method_to_string(md)); db_method_cleanup(md); } else { printf("Error: %s\n", res.errormsg); } md = NULL; res = db_method_parse(&md, "calcTotal(soldier.rank, q'hello', '12')"); if (res.ok) { puts(db_method_to_string(md)); db_method_cleanup(md); } else { printf("Error: %s\n", res.errormsg); } md = NULL; res = db_method_parse(&md, "calcTotal soldier.rank, q'hello', '12'"); if (res.ok) { puts(db_method_to_string(md)); db_method_cleanup(md); } else { printf("Error: %s\n", res.errormsg); } } break; case 43: { int i, j; GList *wk; for (i = 0; i < db->numtable; i++) { for (j = 0; j < db->table[i]->num; j++) { for (wk = g_list_first(db->table[i]->field[j]->comment); wk; wk = g_list_next(wk)) { printf("comments: %s\n", (gchar*)wk->data); } } } } break;#ifdef __PORTED case 30: { gchar *pay; debugmsg("iDefault. Proceed"); obj = db_createobject("rank"); db_getobjectbyfield(obj, "id", "4"); idefault_masteredit_updatedb(obj, obj->name, "pay", "5"); db_freeobject(obj); obj = db_createobject("rank"); db_getobjectbyfield(obj, "id", "4"); db_getvalue(obj, "description", NULL, &retstr); db_getvalue(obj, "pay", NULL, &pay); debugmsg("%s has pay of %s", retstr, pay); test_result(retstr, "", &pass); test_result(pay, "", &pass); db_freeobject(obj); obj = db_createobject("soldier"); db_getobjectbyfield(obj, "id", "1"); db_getvalue(obj, "name", NULL, &retstr); db_getvalue(obj, "kills", NULL, &pay); debugmsg("%s has kills of %s", retstr, pay); test_result(retstr, "", &pass); test_result(pay, "", &pass); db_freeobject(obj); obj = db_createobject("rank"); db_getobjectbyfield(obj, "id", "4"); idefault_masteredit_updatedb(obj, obj->name, "pay", "2"); db_freeobject(obj); test_total(pass, 2); break; } /* test debugging */ case 22: { OOPath *path; path = db_oo_generatepath("country.name", "soldier"); db_oo_pathdebug(path); if (g_list_length(path->tablepath) == 1) pass++; db_oo_freepath(path); path = db_oo_generatepath("countrys.namedd", "soldier"); db_oo_pathdebug(path); if (g_list_length(path->tablepath) == 1) pass++; if (strcmp(db_oo_getpathtable(path->tablepath->data), "country") == 0) pass++; db_oo_freepath(path); path = db_oo_generatepath("ranks.insurances.countrye.namedd", "soldier"); db_oo_pathdebug(path); if (g_list_length(path->tablepath) == 3) pass++; if (strcmp(db_oo_getpathtable(path->tablepath->data), "rank") == 0) pass++; db_oo_freepath(path); if (pass == 5) debugmsg("TEST PASSED"); else debugmsg("TEST FAILED"); break; } case 24: { debugmsg("Testing adding to objects. part 2"); obj = db_createobject("soldier"); db_getobjectbyfield(obj, "countryid", "1"); db_insertobject(obj); db_setvalue(obj, "id", "26"); db_setvalue(obj, "name", "Sammy"); db_setvalue(obj, "location", "City"); db_getobjectbyfield(obj, "name", "Sammy"); if (obj->num == 4) pass++; else errormsg("Failed to add record, %d num", obj->num); db_deleteobject(obj); db_freeobject(obj); if (pass == 1) debugmsg("TEST PASSED"); else errormsg("TEST FAILED, passed %d out of 4", pass); break; } case 25: { debugmsg("Testing modifying an object then re-read"); debugmsg("Note: this test expects records to be in certain orders"); obj = db_createobject("soldier"); db_getobjectbyfield(obj, "countryid", "1"); db_moveto(obj, 2); db_setvalue(obj, "location", "auckland"); db_debugobject(obj); db_getvalue(obj, "location", &retstr); debugmsg("%s returned", retstr); if (strcmp(retstr, "auckland") == 0) pass++; else errormsg("Failed %s != auckland", retstr); db_moveto(obj, 0); db_getvalue(obj, "location", &retstr); debugmsg("%s returned", retstr); if (strcmp(retstr, "City") == 0) pass++; else errormsg("Failed %s != City", retstr); db_debugobject(obj); db_moveto(obj, 2); db_getvalue(obj, "location", &retstr); debugmsg("%s returned", retstr); if (strcmp(retstr, "auckland") == 0) pass++; else errormsg("Failed %s != auckland", retstr); db_moveto(obj, 2); db_setvalue(obj, "location", "'Christchurch'"); db_freeobject(obj); if (pass == 3) debugmsg("TEST PASSED"); else errormsg("TEST FAILED, passed %d out of 3", pass); break; } case 26: { DbDeleteList *dellist = NULL; walk = NULL; debugmsg("Testing object recusive deletion"); obj = db_createobject("soldier"); db_getobjectbyfield(obj, "name", "Andru"); db_del_objectrec(obj, &dellist); db_freeobject(obj); /* should list 2 weapons */ db_del_cleanup(dellist); dellist = NULL; debugmsg("\n\n\nRecusive delete tested in detail"); obj = db_createobject("country"); db_getobjectbyfield(obj, "id", "1"); /* New Zealand */ db_del_objectrec(obj, &dellist); /* this should delete more stuff */ db_freeobject(obj); walk = g_list_first(dellist->objlist); while (walk != NULL) { obj = (Object *) walk->data; debugmsg("Deleting object record %d from %s, %d items", obj->pg_oid, obj->table->name, obj->num); walk = walk->next; } db_del_cleanup(dellist); break; } case 27: { Object *obj2; debugmsg("Testing modifying an object then re-read"); debugmsg("Note: this test expects records to be in certain orders"); obj = db_createobject("soldier"); db_getobjectbyfield(obj, "countryid", "1"); db_moveto(obj, 2); db_setvalue(obj, "location", "auckland"); db_debugobject(obj); db_getvalue(obj, "location", &retstr); debugmsg("%s returned", retstr); if (strcmp(retstr, "auckland") == 0) pass++; else errormsg("Failed %s != auckland", retstr); obj2 = db_createobject("soldier"); db_getobjectbyfield(obj2, "id", "2"); db_setvalue(obj2, "dob", "1823-02-23"); db_getobjectbyfield(obj2, "id", "2"); db_setvalue(obj2, "dob", "1981-09-09"); db_moveto(obj, 0); db_getvalue(obj, "location", &retstr); debugmsg("%s returned", retstr); if (strcmp(retstr, "City") == 0) pass++; else errormsg("Failed %s != City", retstr); db_debugobject(obj); db_moveto(obj, 2); db_getvalue(obj, "location", &retstr); debugmsg("%s returned", retstr); if (strcmp(retstr, "auckland") == 0) pass++; else errormsg("Failed %s != auckland", retstr); db_moveto(obj, 2); db_setvalue(obj, "location", "'Christchurch'"); db_freeobject(obj); db_freeobject(obj2); if (pass == 3) debugmsg("TEST PASSED"); else errormsg("TEST FAILED, passed %d out of 3", pass); break; } case 28: { Sql *s; s = sql_build("select * from people"); sql_destroy(s); break; } /* testing db_id_verifysql_pg */ case 29: { DbUniqueId *uid; gchar *sql, *retstr; uid = (DbUniqueId *) mem_alloc(sizeof(DbUniqueId)); uid->pg_oid = 314445; sql = mem_strdup("select * from whatever"); retstr = db_id_verifysql(sql); if (strcmp(retstr, "select *,oid from whatever") == 0) { debugmsg("TEST PASSED, YIPEE!"); } else { debugmsg("FAILED"); } debugmsg("For the record the sql string returned was ..."); debugmsg("...%s", retstr); mem_free(sql); sql = mem_strdup("select attrib1, attrib2 from whatever where test2=yo"); retstr = db_id_verifysql(sql); if (strcmp(retstr, "select attrib1, attrib2,oid from whatever where test2=yo") == 0) { debugmsg("TEST PASSED, YIPEE!"); } else { debugmsg("FAILED"); } debugmsg("For the record the sql string returned was ..."); debugmsg("...%s", retstr); mem_free(retstr); mem_free(sql); mem_free(uid); break; }#endif default: { debugmsg("Test hasn't been written yet"); } } db_cleanup(); /* g_mem_profile(); */ mem_display(); return 0; }ginttest_result(gchar * retstr, gchar * shouldbe, gint * pass) { if (retstr == NULL) return -1; if (shouldbe == NULL) return -1; if (strcmp(retstr, shouldbe) == 0) { (*pass)++; return 0; } warningmsg("Test result compare of %s and %s failed", retstr, shouldbe); return -1; }ginttest_total(gint pass, gint total) { if (pass != total) { errormsg("TEST FAILED, with %d out of %d", pass, total); return -1; } debugmsg("TEST PASSED"); return 0; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -