📄 dbtest.c
字号:
db_setvalue(obj, "name", NULL, "test21"); db_setvalue(obj, "rankid", NULL, "3"); db_setvalue(obj, "countryid", NULL, "1"); db_setvalue(obj, "active", NULL, "f"); if (obj->num == 1) pass++; db_loadall(obj); db_movelast(obj); db_getvalue(obj, "id", NULL, &retstr); test_result(retstr, "21", &pass); db_getvalue(obj, "name", NULL, &retstr); test_result(retstr, "test21", &pass); db_getobjectbyfield(obj, "id", "21"); db_deleteobject(obj); db_freeobject(obj); test_total(pass, 3); break; } case 22: { Object *obj2; obj = db_createobject("soldier"); db_setvalue(obj, "id", NULL, "32"); db_setvalue(obj, "name", NULL, "number32"); db_setvalue(obj, "rankid", NULL, "3"); db_setvalue(obj, "countryid", NULL, "1"); db_setvalue(obj, "active", NULL, "f"); obj2 = db_createobject("soldier"); db_loadall(obj2); db_movelast(obj2); db_getvalue(obj2, "id", NULL, &retstr); test_result(retstr, "32", &pass); db_getvalue(obj2, "name", NULL, &retstr); test_result(retstr, "number32", &pass); db_getobjectbyfield(obj, "id", "32"); db_deleteobject(obj); db_freeobject(obj); test_total(pass, 2); break; } /* No i'm really going to test dependences of dropdown boxes now ... */ /* Testing for idefault upon you poor soul. Master version */ case 23: { hidedebuginfo(); debugmsg("Testing debugging messaging system"); showdebuginfo(); debugmsg("Back to normal debugging message"); debugmsg("TEST PASSED"); break; } case 24: { /* check that adding to an object works */ debugmsg("Testing adding to objects"); obj = db_createobject("person"); db_getobjectbyfield(obj, "lastname", "hill"); /* db_obj_debug(obj); */ db_add(obj); db_setvalue(obj, "id", NULL, "24"); db_setvalue(obj, "lastname", NULL, "hill"); db_setvalue(obj, "firstname", NULL, "emperor"); db_setvalue(obj, "email", NULL, "emperor@treshna.com"); db_moveto(obj, 0); debugmsg("Checking the number of objects loaded. 1st time. %d", obj->num); if (db_numrecord(obj) == 5) pass++; else errormsg("Failed to add record, %d num", obj->num); db_getvalue(obj, "id", NULL, &retstr); debugmsg("Checking id is equal to 5, it is %s", retstr); if (strcmp(retstr, "2") == 0) pass++; else errormsg("Failed to query appended object, %s returned instead of 5", retstr); debugmsg("Checking the number of objects loaded. 2nd time. %d", obj->num); if (obj->num == 5) pass++; else errormsg("Failed to add record, %d num", obj->num); db_freeobject(obj); obj = db_createobject("person"); db_getobjectbyfield(obj, "firstname", "emperor"); db_getvalue(obj, "email", NULL, &retstr); debugmsg("Email address is is %s", retstr); if (retstr != NULL && strcmp(retstr, "emperor@treshna.com") == 0) pass++; else errormsg("Failed to load record"); db_deleteobject(obj); db_freeobject(obj); if (pass == 4) debugmsg("TEST PASSED"); else errormsg("TEST FAILED, passed %d out of 4", pass); break; } case 25: { debugmsg("Testing if default values shouldn't be written"); obj = db_createobject("persontype"); db_obj_addwrite(obj, "name", NULL, "bob", FALSE); db_freeobject(obj); obj = db_createobject("persontype"); db_loadall(obj); if (obj->num != 4) errormsg("TEST FAILED"); else debugmsg("TEST PASSED"); db_freeobject(obj); break; } case 26: { obj = db_createobject("soldier"); db_getobjectbyfield(obj, "id", "3"); db_getvalue(obj, "name", "country", &retstr); test_result(retstr, "'New Zealand'", &pass); db_getvalue(obj, "name", "soldier", &retstr); test_result(retstr, "Avis", &pass); test_total(pass, 2); db_freeobject(obj); break; } case 27: { walk = NULL; obj = db_createobject("soldier"); db_loadall(obj); /*db_moveto(obj,3); */ 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_getvalue(obj, "name", NULL, &retstr); test_result(retstr, "Liam", &pass); retstr = mem_strdup_printf("%d", db_numrecord(obj)); test_result(retstr, "3", &pass); mem_free(retstr); test_total(pass, 2); db_freeobject(obj); break; } case 28: { 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_filter_clear(obj); db_getvalue(obj, "name", NULL, &retstr); test_result(retstr, "Liam", &pass); db_filter_filterbyvalue(obj, "countryid", "soldier", "3"); db_moveto(obj,0); db_getvalue(obj, "name", NULL, &retstr); test_result(retstr, "Baz", &pass); retstr = mem_strdup_printf("%d", db_numrecord(obj)); test_result(retstr, "1", &pass); mem_free(retstr); db_freeobject(obj); test_total(pass, 3); break; } case 29: { GList *filterlist = NULL; Object *obj2; obj2 = db_createobject("country"); obj = db_createobject("soldier"); db_getobjectbyfield(obj2, "id", "3"); db_loadobjectbyobject(obj2, obj, "soldier"); db_getvalue(obj, "name", NULL, &retstr); test_result(retstr, "Baz", &pass); filterlist = db_filter_addrequestlist(filterlist, "name","soldier"); db_filter_load(obj, filterlist); db_getvalue(obj, "name", NULL, &retstr); test_result(retstr, "Baz", &pass); test_total(pass, 2); db_freeobject(obj); db_freeobject(obj2); break; } /* testing db_id_verifysql_other, also tests db_sqlparse_getselectfields kinda */ case 30: { DbUniqueId *uid; gchar *sql, *retstr; uid = (DbUniqueId *) mem_alloc(sizeof(DbUniqueId)); uid->num = 3; uid->pg_oid = -1; uid->field = (DbField **) mem_alloc(sizeof(DbField *) * 3); uid->field[0] = (DbField *) mem_alloc(sizeof(DbField *)); uid->field[0]->field = mem_strdup("field1"); uid->field[1] = (DbField *) mem_alloc(sizeof(DbField *)); uid->field[1]->field = mem_strdup("field2"); uid->field[2] = (DbField *) mem_alloc(sizeof(DbField *)); uid->field[2]->field = mem_strdup("field3"); sql = mem_strdup("select * from whatever"); retstr = db_id_verifysql(sql); if (strcmp(retstr, "select *,oid from whatever") == 0) { debugmsg("TEST PASSED"); } else { errormsg("FAILED"); } debugmsg("For the record the sql string returned was ..."); debugmsg("...%s", retstr); for (i = 0; i < 3; i++) { mem_free(uid->field[i]->field); mem_free(uid->field[i]); } mem_free(uid->field); mem_free(uid); mem_free(retstr); mem_free(sql); break; } case 31: { /* check that adding to an object works, an extension from test 24 */ debugmsg("Testing adding to objects"); obj = db_createobject("person"); db_getobjectbyfield(obj, "lastname", "hill"); db_add(obj); db_setvalue(obj, "id", NULL, "31"); db_setvalue(obj, "lastname", NULL, "hill"); db_setvalue(obj, "firstname", NULL, "emperor"); db_setvalue(obj, "email", NULL, "dru@treshna.com"); db_moveto(obj, 0); debugmsg("Checking the number of objects loaded. 1st time. %d", obj->num); if (obj->num == 5) pass++; else errormsg("Failed to add record, %d num", obj->num); /* db_debugobject(obj); */ db_getvalue(obj, "id", NULL, &retstr); debugmsg("Checking id is equal to 2 it is %s", retstr); test_result(retstr, "2", &pass); debugmsg("Checking the number of objects loaded. 2nd time. %d", obj->num); if (obj->num == 5) pass++; else errormsg("Failed to add record, %d num", obj->num); db_moveto(obj, 4); db_getvalue(obj, "id", NULL, &retstr); test_result(retstr, "31", &pass); db_freeobject(obj); obj = db_createobject("person"); db_getobjectbyfield(obj, "firstname", "emperor"); db_getvalue(obj, "email", NULL, &retstr); debugmsg("Email address is is %s", retstr); test_result(retstr, "dru@treshna.com", &pass); db_deleteobject(obj); db_freeobject(obj); test_total(pass, 5); break; } /* Testing db_birth_createsql */ case 32: { gchar *sql; gint i; DbBirth *testomatic; /* setting up a decent DbBirth to test */ testomatic = (DbBirth *) mem_alloc(sizeof(DbBirth)); testomatic->num = 3; testomatic->value = (gchar **) mem_alloc(sizeof(gchar *) * 3); testomatic->value[0] = mem_strdup("generic1"); testomatic->value[1] = mem_strdup("generic2"); testomatic->value[2] = mem_strdup("generic3"); testomatic->field = (DbField **) mem_alloc(sizeof(DbField *) * 3); testomatic->field[0] = (DbField *) mem_alloc(sizeof(DbField)); testomatic->field[0]->field = mem_strdup("field1"); testomatic->field[0]->table = mem_strdup("table1"); testomatic->field[1] = (DbField *) mem_alloc(sizeof(DbField)); testomatic->field[1]->field = mem_strdup("field2"); testomatic->field[1]->table = mem_strdup("table1"); testomatic->field[2] = (DbField *) mem_alloc(sizeof(DbField)); testomatic->field[2]->field = mem_strdup("field1"); testomatic->field[2]->table = mem_strdup("table2"); debugmsg("Testing db_birth_createsql ...now"); /* now for the test */ sql = db_birth_createsql(testomatic); if (strcmp(sql, "SELECT * FROM table1,table2 WHERE " "table1.field1='generic1' AND table1.field2='generic2' " "AND table2.field1='generic3'") == 0) { debugmsg("TEST PASSED"); } else { debugmsg("Failed with compare of \n%s\n%s",sql, "SELECT * FROM table1,table2 WHERE " "table1.field1='generic1' AND table1.field2='generic2' " "AND table2.field1='generic3'"); errormsg("FAILED"); } /* good job memory you can go now */ for (i = 0; i < 3; i++) { mem_free(testomatic->field[i]->field); mem_free(testomatic->field[i]->table); mem_free(testomatic->field[i]); mem_free(testomatic->value[i]); } mem_free(testomatic->field); mem_free(testomatic->value); mem_free(testomatic); mem_free(sql); break; } case 33: { sql_statement *s; char *rebuild; s = sql_parse ("select *, wibble, pig.blah, spoon from foo, membership where blah=smu and (name like '%joe' or foo is waa) order by member.oid group by wibble"); if (!s) break; rebuild = sql_stringify (s); debugmsg ("rebuilt string: %s", rebuild); free (rebuild); sql_display(s); sql_destroy(s); break; } case 34: { gchar *inputfield, *fieldname, *tablename; gint retval; inputfield = mem_strdup("*"); debugmsg("Running test"); retval = db_suggest_wildcard(inputfield, &fieldname, &tablename); if (fieldname == NULL && tablename == NULL && retval == 1) debugmsg("TEST 1 PASSED"); else debugmsg("TEST 1 FAILED"); mem_free(inputfield); mem_free(fieldname); mem_free(tablename); inputfield = mem_strdup("tablename.*"); retval = db_suggest_wildcard(inputfield, &fieldname, &tablename); if (fieldname == NULL && (strcmp(tablename, "tablename") == 0) && retval == 1) debugmsg("TEST 2 PASSED"); else { errormsg("TEST 2 FAILED"); debugmsg("Tablename = %s, fieldname = %s, retval=%d", tablename, fieldname, retval); } mem_free(inputfield); mem_free(fieldname); mem_free(tablename); inputfield = mem_strdup("tablename.fieldname"); retval = db_suggest_wildcard(inputfield, &fieldname, &tablename); if ((strcmp(fieldname, "fieldname") == 0) && (strcmp(tablename, "tablename") == 0) && retval == 0) debugmsg("TEST 3 PASSED"); else { errormsg("TEST 3 FAILED"); debugmsg("Tablename = %s, fieldname = %s, retval=%d", tablename, fieldname, retval); } mem_free(inputfield); mem_free(fieldname); mem_free(tablename); break; } case 35: { break; } /* testing db_loadall */ case 36: { Object *test; int result; debugmsg("Testing loadall"); test = db_createobject("rank"); result = db_loadall(test); db_freeobject(test); break; } case 37: { Object *destobj; obj = db_createobject("soldier"); destobj = db_createobject(NULL); db_getobjectbyfield(obj, "id", "3"); db_loadobjectbyobject(obj, destobj, "weapon"); if (destobj->numfield == 4) pass++; else errormsg("wrong number of fields, %d",destobj->numfield); if (destobj->num == 0) pass++; else errormsg("wrong number of rows, %d", destobj->num); db_add(destobj); if (destobj->num == 1) pass++; else errormsg("wrong number of rows, %d", destobj->num); db_getvalue(destobj,"soldierid",NULL,&retstr); test_result(retstr, "3", &pass); test_total(pass, 4); db_freeobject(destobj); db_freeobject(obj); break; } case 38: { /* record additions and saving data back */ debugmsg("testing db write to for a new record"); obj = db_createobject("person"); db_setvalue(obj, "id", NULL, "24"); db_setvalue(obj, "lastname", NULL, "hill"); db_setvalue(obj, "firstname", NULL, "dru"); db_setvalue(obj, "email", NULL, "dru@treshna.com"); db_add(obj); db_setvalue(obj, "id", NULL, "25"); db_setvalue(obj, "lastname", NULL, "hill2"); db_setvalue(obj, "firstname", NULL, "dru2"); db_setvalue(obj, "email", NULL, "dru@treshna.com2"); db_add(obj); db_freeobject(obj); obj = db_createobject("person"); db_getobjectbyfield(obj, "id", "24"); db_getvalue(obj, "email", NULL, &retstr); test_result(retstr,"dru@treshna.com",&pass); db_deleteobject(obj); db_getobjectbyfield(obj, "id", "25"); db_getvalue(obj, "email", NULL, &retstr); test_result(retstr,"dru@treshna.com2",&pass); db_deleteobject(obj); db_freeobject(obj);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -