IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Feb 16, 2005, 5:50:04 PM (21 years ago)
Author:
jhoblitt
Message:

test cleanups and additions

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/archive/psdb/test.c

    r3234 r3251  
    66#include "psleak.h"
    77
     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
    816#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    }
    1125
    1226int main (int argv, char **argc)
    1327{
     28    TEST_SETUP;
     29
    1430    psMemAllocateCallbackSet(stacMemPrint);
    1531    //psMemAllocateCallbackSetID(224);
    1632    psMemFreeCallbackSet(stacMemPrint);
    1733    psMemProblemCallbackSet(stacMemoryProblem);
     34    atexit(stacCheckMemory);
    1835
    1936    psDB            *dbh;
     
    2138    // open db
    2239    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
    2551    OK(psDBCreate(dbh, "foobar"), "psDBCreate()");
    2652    OK(psDBChange(dbh, "foobar"), "psDBChange()");
     
    3763        psMetadataAdd(md, 3, "boing", PS_TYPE_PTR, PS_META_STR, NULL, "60");
    3864
    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
    46101    // setup horse table for later tests
    47102    {
     
    49104
    50105        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 tests
    59     {
    60         psMetadata      *md;
    61 
    62         md = psMetadataAlloc();
    63106        psMetadataAdd(md, 0, "color", PS_TYPE_PTR, PS_META_STR, NULL, "100");
    64107
     
    68111    }
    69112
    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 
    136113    // psDBInsertOneRow()
    137114    {
     
    139116
    140117        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");
    144132
    145133        psFree(md);
     
    172160        // psFree(row);
    173161
    174         OK(psDBInsertRows(dbh, "horse", rowSet), "psDBInsertRows()");
     162        OK(psDBInsertRows(dbh, "horse", rowSet), "psDBInsertRows() - multi-row insert");
    175163
    176164        psFree(rowSet);
    177165    }
    178166
     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
    179234    // psDBDumpRows()
    180235    {
     
    182237
    183238        resultSet = psDBDumpRows(dbh, "horse");
    184         OK(resultSet, "psDBDumpRows()");
     239        OK(resultSet, "psDBDumpRows() - dump");
     240        OK(resultSet->n == 3, "psDBDumpRows() - number of rows");
    185241        psFree(resultSet);
    186242    }
     
    193249
    194250        columns = psDBDumpCols(dbh, "horse");
    195         OK(columns, "psDBDumpCols()");
     251        OK(columns, "psDBDumpCols() - dump");
     252        OK(columns->list->size == 1, "psDBDumpCols() - number of columns");
    196253
    197254        cursor = psListIteratorAlloc(columns->list, 0);
    198255
    199256        while ((item = psListGetNext(cursor))) {
    200             printf("column name is: %s\n", item->name);
     257            printf("\tcolumn name is: %s\n", item->name);
    201258        }
    202259
     
    210267        psMetadata      *value;
    211268        psU64           rowsAffected;
     269        psArray         *resultSet;
     270        int             i;
     271        psListIterator  *cursor;
     272        psMetadata      *md;
     273        psMetadataItem  *item;
    212274
    213275        where = psMetadataAlloc();
     
    221283        psFree(value);
    222284
    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);
    224305    }
    225306
     
    228309   
    229310    // cleanup other tests
    230     // psDBDropTable(dbh, "horse");
     311    psDBDropTable(dbh, "horse");
    231312    psDBDropTable(dbh, "yak");
    232313
     
    234315    psDBCleanup(dbh);
    235316
    236     atexit(stacCheckMemory);
     317    TEST_SUMMARY;
     318
     319    //psErrorStackPrint(stderr, "### Error stack dump ###\n");
    237320
    238321    exit(0);
Note: See TracChangeset for help on using the changeset viewer.