Changeset 3251 for trunk/archive/psdb/test.c
- Timestamp:
- Feb 16, 2005, 5:50:04 PM (21 years ago)
- File:
-
- 1 edited
-
trunk/archive/psdb/test.c (modified) (13 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/archive/psdb/test.c
r3234 r3251 6 6 #include "psleak.h" 7 7 8 #define TEST_SETUP\ 9 int testsRun = 0;\ 10 int testsPassed = 0; 11 12 #define TEST_SUMMARY\ 13 printf("\n\n### TEST SUMMARY ###\n\n %d of %d tests succeeded\n\n", \ 14 testsPassed, testsRun); 15 8 16 #define OK(test, name) \ 9 printf("%s... ", name); \ 10 test ? printf("OK\n") : printf("FAILED\n"); 17 testsRun++; \ 18 printf("Test #%d: %s... ", testsRun, name); \ 19 if (test) { \ 20 testsPassed++; \ 21 printf("OK\n"); \ 22 } else { \ 23 printf("FAILED\n"); \ 24 } 11 25 12 26 int main (int argv, char **argc) 13 27 { 28 TEST_SETUP; 29 14 30 psMemAllocateCallbackSet(stacMemPrint); 15 31 //psMemAllocateCallbackSetID(224); 16 32 psMemFreeCallbackSet(stacMemPrint); 17 33 psMemProblemCallbackSet(stacMemoryProblem); 34 atexit(stacCheckMemory); 18 35 19 36 psDB *dbh; … … 21 38 // open db 22 39 dbh = psDBInit("localhost", "test", NULL, "test"); 23 OK(dbh, "psDBInit()"); 24 40 OK(dbh, "psDBInit() - connect"); 41 42 { 43 psDB *foo; 44 45 foo = psDBInit("tsohlacol", "tset", NULL, "tset"); 46 OK(!foo, "psDBInit(), bad DSN"); 47 } 48 49 // the next 3 tests will fail as the MySQL test account has insufficent 50 // permissions 25 51 OK(psDBCreate(dbh, "foobar"), "psDBCreate()"); 26 52 OK(psDBChange(dbh, "foobar"), "psDBChange()"); … … 37 63 psMetadataAdd(md, 3, "boing", PS_TYPE_PTR, PS_META_STR, NULL, "60"); 38 64 39 OK(psDBCreateTable(dbh, "bar", md), "psDBCreateTable()"); 40 41 psFree(md); 42 43 OK(psDBDropTable(dbh, "bar"), "psDBDropTable()"); 44 } 45 65 OK(psDBCreateTable(dbh, "bar", md), "psDBCreateTable() - create table"); 66 67 psFree(md); 68 } 69 70 OK(psDBDropTable(dbh, "bar"), "psDBDropTable() - drop table"); 71 72 { 73 psMetadata *md; 74 75 md = psMetadataAlloc(); 76 psMetadataAdd(md, 0, "foo", PS_TYPE_S32, PS_META_PRIMITIVE, "Primary Key"); 77 78 psDBCreateTable(dbh, "bar", md); 79 80 OK(!psDBCreateTable(dbh, "bar", md), "psDBCreateTable() - table already exists"); 81 82 psFree(md); 83 84 psDBDropTable(dbh, "bar"); 85 } 86 87 OK(!psDBDropTable(dbh, "fubar"), "psDBDropTable() - non-existant table"); 88 89 // setup yak table for later tests 90 { 91 psMetadata *md; 92 93 md = psMetadataAlloc(); 94 psMetadataAdd(md, 0, "hair", PS_TYPE_F32, PS_META_PRIMITIVE, NULL); 95 96 psDBCreateTable(dbh, "yak", md); 97 98 psFree(md); 99 } 100 46 101 // setup horse table for later tests 47 102 { … … 49 104 50 105 md = psMetadataAlloc(); 51 psMetadataAdd(md, 0, "hair", PS_TYPE_F32, PS_META_PRIMITIVE, NULL);52 53 psDBCreateTable(dbh, "yak", md);54 55 psFree(md);56 }57 58 // setup yak table for later tests59 {60 psMetadata *md;61 62 md = psMetadataAlloc();63 106 psMetadataAdd(md, 0, "color", PS_TYPE_PTR, PS_META_STR, NULL, "100"); 64 107 … … 68 111 } 69 112 70 // psDBSelectColumn()71 {72 psArray *column;73 int i;74 75 column = psDBSelectColumn(dbh, "horse", "color", 42);76 OK(column, "psDBSelectColumn()");77 78 for (i = 0; i < column->n; i++) {79 printf("horse color is: %s\n", (char *)column->data[i]);80 printf("length is: %d\n", (int)strlen(column->data[i]));81 }82 83 psFree(column);84 }85 86 // psDBSelectColumnNum()87 {88 psVector *column;89 int i;90 91 column = psDBSelectColumnNum(dbh, "yak", "hair", PS_TYPE_F32, 42);92 OK(column, "psDBSelectColumnNum()");93 94 for (i = 0; i < column->n; i++) {95 printf("yak count is: %f\n", column->data.F32[i]);96 if (isnan(column->data.F32[i])){97 printf("and it's a nan\n");98 }99 }100 101 psFree(column);102 }103 104 // psDBSelectRows()105 {106 psMetadata *md;107 psMetadataItem *item;108 psArray *resultSet;109 psListIterator *cursor;110 int i;111 112 md = psMetadataAlloc();113 psMetadataAdd(md, 0, "color", PS_TYPE_PTR, PS_META_STR, NULL, "red");114 115 resultSet = psDBSelectRows(dbh, "horse", md, 0);116 OK(resultSet, "psDBSelectRows()");117 118 psFree(md);119 printf("row count is: %d\n", resultSet->n);120 for (i = 0; i < resultSet->n; i++) {121 md = (psMetadata *)resultSet->data[0];122 123 cursor = psListIteratorAlloc(md->list, 0);124 125 while ((item = psListGetNext(cursor))) {126 printf("colum name is: %s\n", item->name);127 printf("data is: %s\n", (char *)item->data.V);128 }129 130 psFree(cursor);131 }132 psFree(resultSet);133 134 }135 136 113 // psDBInsertOneRow() 137 114 { … … 139 116 140 117 md = psMetadataAlloc(); 141 psMetadataAdd(md, 0, "color", PS_TYPE_PTR, PS_META_STR, NULL, "brown"); 142 143 OK(psDBInsertOneRow(dbh, "horse", md),"psDBInsertOneRow()"); 118 psMetadataAdd(md, 0, "hair", PS_TYPE_F32, PS_META_PRIMITIVE, NULL, 10e3); 119 120 OK(psDBInsertOneRow(dbh, "yak", md),"psDBInsertOneRow() - number"); 121 122 psFree(md); 123 } 124 125 { 126 psMetadata *md; 127 128 md = psMetadataAlloc(); 129 psMetadataAdd(md, 0, "hair", PS_TYPE_F32, PS_META_PRIMITIVE, NULL, NAN); 130 131 OK(psDBInsertOneRow(dbh, "yak", md),"psDBInsertOneRow() - nan"); 144 132 145 133 psFree(md); … … 172 160 // psFree(row); 173 161 174 OK(psDBInsertRows(dbh, "horse", rowSet), "psDBInsertRows() ");162 OK(psDBInsertRows(dbh, "horse", rowSet), "psDBInsertRows() - multi-row insert"); 175 163 176 164 psFree(rowSet); 177 165 } 178 166 167 // psDBSelectColumn() 168 { 169 psArray *column; 170 int i; 171 172 column = psDBSelectColumn(dbh, "horse", "color", 42); 173 OK(column, "psDBSelectColumn() - select"); 174 OK(column->n == 3, "psDBSelectColumn() - number of elements"); 175 176 for (i = 0; i < column->n; i++) { 177 printf("\thorse color is: %s\n", (char *)column->data[i]); 178 } 179 180 psFree(column); 181 } 182 183 // psDBSelectColumnNum() 184 { 185 psVector *column; 186 int i; 187 188 column = psDBSelectColumnNum(dbh, "yak", "hair", PS_TYPE_F32, 42); 189 OK(column, "psDBSelectColumnNum() - select"); 190 OK(column->n == 2, "psDBSelectColumnNum() - number of elements"); 191 192 for (i = 0; i < column->n; i++) { 193 printf("\tyak hair count is: %f\n", column->data.F32[i]); 194 if (isnan(column->data.F32[i])){ 195 printf("\t\tNO yak hair!!! (it's a nan)\n"); 196 } 197 } 198 199 psFree(column); 200 } 201 202 // psDBSelectRows() 203 { 204 psMetadata *md; 205 psMetadataItem *item; 206 psArray *resultSet; 207 psListIterator *cursor; 208 int i; 209 210 md = psMetadataAlloc(); 211 psMetadataAdd(md, 0, "color", PS_TYPE_PTR, PS_META_STR, NULL, "brown"); 212 213 resultSet = psDBSelectRows(dbh, "horse", md, 0); 214 OK(resultSet, "psDBSelectRows() - select"); 215 OK(resultSet->n == 1, "psDBSelectRows() - number of rows"); 216 217 psFree(md); 218 for (i = 0; i < resultSet->n; i++) { 219 md = (psMetadata *)resultSet->data[0]; 220 221 cursor = psListIteratorAlloc(md->list, 0); 222 223 while ((item = psListGetNext(cursor))) { 224 printf("\tcolum name is: %s, value is: %s\n", item->name, (char *)item->data.V); 225 } 226 227 psFree(cursor); 228 } 229 psFree(resultSet); 230 231 } 232 233 179 234 // psDBDumpRows() 180 235 { … … 182 237 183 238 resultSet = psDBDumpRows(dbh, "horse"); 184 OK(resultSet, "psDBDumpRows()"); 239 OK(resultSet, "psDBDumpRows() - dump"); 240 OK(resultSet->n == 3, "psDBDumpRows() - number of rows"); 185 241 psFree(resultSet); 186 242 } … … 193 249 194 250 columns = psDBDumpCols(dbh, "horse"); 195 OK(columns, "psDBDumpCols()"); 251 OK(columns, "psDBDumpCols() - dump"); 252 OK(columns->list->size == 1, "psDBDumpCols() - number of columns"); 196 253 197 254 cursor = psListIteratorAlloc(columns->list, 0); 198 255 199 256 while ((item = psListGetNext(cursor))) { 200 printf(" column name is: %s\n", item->name);257 printf("\tcolumn name is: %s\n", item->name); 201 258 } 202 259 … … 210 267 psMetadata *value; 211 268 psU64 rowsAffected; 269 psArray *resultSet; 270 int i; 271 psListIterator *cursor; 272 psMetadata *md; 273 psMetadataItem *item; 212 274 213 275 where = psMetadataAlloc(); … … 221 283 psFree(value); 222 284 223 OK(rowsAffected, "psDBUpdateRows()"); 285 OK(rowsAffected, "psDBUpdateRows() - pink -> HOT pink"); 286 287 resultSet = psDBSelectRows(dbh, "horse", value, 0); 288 289 for (i = 0; i < resultSet->n; i++) { 290 md = (psMetadata *)resultSet->data[0]; 291 292 cursor = psListIteratorAlloc(md->list, 0); 293 294 while ((item = psListGetNext(cursor))) { 295 if (strcmp((char *)item->data.V, "HOT pink") == 0) { 296 OK(1, "psDBUpdateRows() - psDBSelectRows() found HOT pink"); 297 printf("\thorse color is: %s\n", (char *)item->data.V); 298 } 299 } 300 301 psFree(cursor); 302 } 303 304 psFree(resultSet); 224 305 } 225 306 … … 228 309 229 310 // cleanup other tests 230 //psDBDropTable(dbh, "horse");311 psDBDropTable(dbh, "horse"); 231 312 psDBDropTable(dbh, "yak"); 232 313 … … 234 315 psDBCleanup(dbh); 235 316 236 atexit(stacCheckMemory); 317 TEST_SUMMARY; 318 319 //psErrorStackPrint(stderr, "### Error stack dump ###\n"); 237 320 238 321 exit(0);
Note:
See TracChangeset
for help on using the changeset viewer.
