Index: trunk/psLib/test/dataIO/tst_psDB.c
===================================================================
--- trunk/psLib/test/dataIO/tst_psDB.c	(revision 3545)
+++ trunk/psLib/test/dataIO/tst_psDB.c	(revision 3561)
@@ -9,6 +9,6 @@
  *  @author Aaron Culliney, MHPCC
  *
- *  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2005-03-29 22:14:48 $
+ *  @version $Revision: 1.3 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2005-03-30 07:03:48 $
  *
  *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -24,8 +24,18 @@
 #include <limits.h>
 #include <stdlib.h>
+#include <string.h>
 
 #include "psDB.h"
 #include "psTest.h"
 #include "pslib.h"
+
+#define STR_1 "hello world!"
+#define STR_2 "foobar"
+#define S32_1 1974
+#define S32_2 -18
+#define F32_1 3.14159
+#define F32_2 3.33
+#define F64_1 2.7182818
+#define F64_2 1.23456789
 
 static psDB *_init_psDB( void );
@@ -40,4 +50,5 @@
 static psMetadata *_get_where( void );
 static psMetadata *_get_update_values(const char *val0, psS32 val1, psF32 val2, psF64 val3);
+static void _print_row( psMetadata *row );
 
 //static psS32 TPDBCreate( void );
@@ -157,17 +168,32 @@
 {
     return _get_RowMetadata(
-               "key_string", "comment-string", "hello world!",
-               "key_s32",    "comment-s32",     1974,
-               "key_f32",    "comment-f32",     3.14159,
-               "key_f64",    "comment-f64",     2.71828);
+               "key_string", "comment-string", STR_1,
+               "key_s32",    "comment-s32",    S32_1,
+               "key_f32",    "comment-f32",    F32_1,
+               "key_f64",    "comment-f64",    F64_1);
 }
 
 psMetadata *_get_where( void )
 {
-    return _get_RowMetadata(
-               NULL, NULL, NULL,
-               "key_s32",    "comment-s32",     1974,
-               "key_f32",    "comment-f32",     3.14159,
-               "key_f64",    "comment-f64",     2.71828);
+    psMetadata *md = NULL;
+    psMetadataItem *s32=NULL;
+
+    md = psMetadataAlloc();
+    if (md == NULL) {
+        psError(PS_ERR_UNKNOWN, true, "could not create psMetadata in %s!", __func__ );
+        return NULL;
+    }
+    s32 = psMetadataItemAllocS32("key_s32", "", S32_1);
+    if (s32 == NULL) {
+        psError(PS_ERR_UNKNOWN, true, "could not create psMetadataItem in %s!", __func__ );
+        return NULL;
+    }
+    if (!psMetadataAddItem(md, s32, 0, 0)) {
+        psError(PS_ERR_UNKNOWN, true, "could not add psMetadataItem(s) to psMetadata in %s!", __func__ );
+        return NULL;
+    }
+
+    psFree(s32);
+    return md;
 }
 
@@ -175,4 +201,25 @@
 {
     return _get_RowMetadataValues(val0, val1, val2, val3);
+}
+
+void _print_row( psMetadata *row )
+{
+    psMetadataIterator *iter=NULL;
+    psMetadataItem *item=NULL;
+
+    iter = psMetadataIteratorAlloc(row, 0, NULL);
+    while ((item = psMetadataGetAndIncrement(iter)) != NULL) {
+        if (item->type == PS_META_STR) {
+            psLogMsg( __func__, PS_LOG_INFO, "[%s]=[%s]\n", item->name, item->data.V );
+        } else if (item->type == PS_META_S32) {
+            psLogMsg( __func__, PS_LOG_INFO, "[%s]=[%d]\n", item->name, item->data.S32 );
+        } else if (item->type == PS_META_F32) {
+            psLogMsg( __func__, PS_LOG_INFO, "[%s]=[%g]\n", item->name, item->data.F32 );
+        } else if (item->type == PS_META_F64) {
+            psLogMsg( __func__, PS_LOG_INFO, "[%s]=[%g]\n", item->name, item->data.F64 );
+        }
+    }
+
+    psFree(iter);
 }
 
@@ -213,5 +260,5 @@
     }
 
-    psLogMsg( __func__, PS_LOG_INFO, "psDBChange shall change to a new new test database.\n" );
+    psLogMsg( __func__, PS_LOG_INFO, "psDBChange shall change to a new test database.\n" );
 
     failed = ! psDBChange(dbh, dbname);
@@ -254,5 +301,5 @@
     psDB *dbh = NULL;
     const char* table = "table2";
-    psMetadata *md = _get_CreateTableMetadata();
+    psMetadata *row=NULL, *md = _get_CreateTableMetadata();
 
     dbh = _init_psDB();
@@ -266,4 +313,13 @@
     if (!failed) {
         failed = ! psDBDropTable(dbh, table);
+
+        // insert should fail ...
+        psLogMsg( __func__, PS_LOG_INFO, "psDBDropTable: insert should fail here...\n" );
+        row = _get_row();
+        if (psDBInsertOneRow(dbh, table, row)) {
+            psLogMsg( __func__, PS_LOG_INFO, "oops, insert unexpectedly succeeded!\n" );
+            failed = 1;
+        }
+        psFree(row);
     }
 
@@ -281,5 +337,6 @@
     const char* table = "table3";
     psArray *ary = NULL;
-    psMetadata *md = _get_CreateTableMetadata();
+    psMetadata *row=NULL, *md = _get_CreateTableMetadata();
+    char *ptr=NULL;
 
     dbh = _init_psDB();
@@ -292,8 +349,37 @@
     failed = ! psDBCreateTable(dbh, table, md);
     if (!failed) {
-        ary = psDBSelectColumn(dbh, table, "key_string", 1);
+
+        row = _get_row();
+        psDBInsertOneRow(dbh, table, row);
+        psFree(row);
+
+        row = _get_row();
+        psDBInsertOneRow(dbh, table, row);
+        psFree(row);
+
+        row = _get_row();
+        psDBInsertOneRow(dbh, table, row);
+        psFree(row);
+
+        ary = psDBSelectColumn(dbh, table, "key_string", 0);
         if (ary == NULL) {
             failed = 1;
         } else {
+            ptr = psArrayGet(ary, 0);
+            psLogMsg( __func__, PS_LOG_INFO, "psDBSelectColumn: [%s]\n", ptr );
+
+            ptr = psArrayGet(ary, 1);
+            psLogMsg( __func__, PS_LOG_INFO, "psDBSelectColumn: [%s]\n", ptr );
+
+            ptr = psArrayGet(ary, 2);
+            psLogMsg( __func__, PS_LOG_INFO, "psDBSelectColumn: [%s]\n", ptr );
+
+            if (strcmp(ptr, STR_1)) {
+                psLogMsg( __func__, PS_LOG_INFO, "oops, did not find expected string output!\n" );
+                failed = 1;
+            } else {
+                psLogMsg( __func__, PS_LOG_INFO, "found expected string output.\n" );
+            }
+
             psFree(ary);
         }
@@ -314,5 +400,5 @@
     const char* table = "table4";
     psVector *vec = NULL;
-    psMetadata *md = _get_CreateTableMetadata();
+    psMetadata *row=NULL, *md = _get_CreateTableMetadata();
 
     dbh = _init_psDB();
@@ -325,8 +411,30 @@
     failed = ! psDBCreateTable(dbh, table, md);
     if (!failed) {
-        vec = psDBSelectColumnNum(dbh, table, "key_string", PS_TYPE_PTR, 1);
+
+        row = _get_row();
+        psDBInsertOneRow(dbh, table, row);
+        psFree(row);
+
+        row = _get_row();
+        psDBInsertOneRow(dbh, table, row);
+        psFree(row);
+
+        row = _get_row();
+        psDBInsertOneRow(dbh, table, row);
+        psFree(row);
+
+        vec = psDBSelectColumnNum(dbh, table, "key_s32", PS_TYPE_S32, 0);
         if (vec == NULL) {
             failed = 1;
         } else {
+            psLogMsg( __func__, PS_LOG_INFO, "str=[%d]\n", (vec->data.S32)[0] );
+            psLogMsg( __func__, PS_LOG_INFO, "str=[%d]\n", (vec->data.S32)[1] );
+            psLogMsg( __func__, PS_LOG_INFO, "str=[%d]\n", (vec->data.S32)[2] );
+            if ((vec->data.S32)[2] != S32_1) {
+                psLogMsg( __func__, PS_LOG_INFO, "oops, did not find expected S32 output!\n" );
+                failed = 1;
+            } else {
+                psLogMsg( __func__, PS_LOG_INFO, "found expected S32 output.\n" );
+            }
             psFree(vec);
         }
@@ -348,4 +456,5 @@
     psArray *ary = NULL;
     psMetadata *where=NULL, *row=NULL, *md = _get_CreateTableMetadata();
+    psMetadataItem *item = NULL;
 
     dbh = _init_psDB();
@@ -378,4 +487,17 @@
                 failed = 1;
             } else {
+                _print_row((psMetadata*)psArrayGet(ary, 0));
+                _print_row((psMetadata*)psArrayGet(ary, 1));
+                row = (psMetadata*)psArrayGet(ary, 2);
+                _print_row(row);
+
+                item = psMetadataLookup(row, "key_s32");
+                if ((item == NULL) || (item->data.S32 != S32_1)) {
+                    psLogMsg( __func__, PS_LOG_INFO, "oops, did not find expected output!\n" );
+                    failed = 1;
+                } else {
+                    psLogMsg( __func__, PS_LOG_INFO, "found expected output.\n" );
+                }
+
                 psFree(ary);
             }
@@ -427,4 +549,5 @@
     psArray *rowSet = NULL;
     psMetadata *row=NULL, *md = _get_CreateTableMetadata();
+    psMetadataItem *item=NULL;
 
     dbh = _init_psDB();
@@ -454,4 +577,25 @@
         failed = ! psDBInsertRows(dbh, table, rowSet);
         psFree(rowSet);
+
+        // extra checks ...
+        rowSet = psDBDumpRows(dbh, table);
+        if (rowSet == NULL) {
+            failed = 1;
+        } else {
+            _print_row((psMetadata*)psArrayGet(rowSet, 0));
+            _print_row((psMetadata*)psArrayGet(rowSet, 1));
+            row = (psMetadata*)psArrayGet(rowSet, 2);
+            _print_row(row);
+
+            item = psMetadataLookup(row, "key_s32");
+            if ((item == NULL) || (item->data.S32 != S32_1)) {
+                psLogMsg( __func__, PS_LOG_INFO, "oops, did not find expected output!\n" );
+                failed = 1;
+            } else {
+                psLogMsg( __func__, PS_LOG_INFO, "found expected output.\n" );
+            }
+
+            psFree(rowSet);
+        }
 
         psDBDropTable(dbh, table);
@@ -472,4 +616,5 @@
     psArray *ary = NULL;
     psMetadata *row=NULL, *md = _get_CreateTableMetadata();
+    psMetadataItem *item=NULL;
 
     dbh = _init_psDB();
@@ -500,4 +645,18 @@
                 failed = 1;
             } else {
+
+                _print_row((psMetadata*)psArrayGet(ary, 0));
+                _print_row((psMetadata*)psArrayGet(ary, 1));
+                row = (psMetadata*)psArrayGet(ary, 2);
+                _print_row(row);
+
+                item = psMetadataLookup(row, "key_s32");
+                if ((item == NULL) || (item->data.S32 != S32_1)) {
+                    psLogMsg( __func__, PS_LOG_INFO, "oops, did not find expected output!\n" );
+                    failed = 1;
+                } else {
+                    psLogMsg( __func__, PS_LOG_INFO, "found expected output.\n" );
+                }
+
                 psFree(ary);
             }
@@ -534,4 +693,5 @@
             failed = 1;
         } else {
+            _print_row(meta);
             psFree(meta);
         }
@@ -551,6 +711,7 @@
     psDB *dbh = NULL;
     const char* table = "table10";
-    psArray *rowSet = NULL;
+    psArray *ary=NULL, *rowSet=NULL;
     psMetadata *row=NULL, *where=NULL, *updates=NULL, *md = _get_CreateTableMetadata();
+    psMetadataItem *item=NULL;
 
     dbh = _init_psDB();
@@ -581,6 +742,28 @@
         if (!failed) {
             where = _get_where();
-            updates = _get_update_values("foobar", -1, 3.3333, 1234.5);
+            updates = _get_update_values(STR_2, S32_2, F32_2, F64_2);
             failed = (psDBUpdateRows(dbh, table, where, updates) < 0);
+
+            ary = psDBDumpRows(dbh, table);
+            if (ary == NULL) {
+                failed = 1;
+            } else {
+
+                _print_row((psMetadata*)psArrayGet(ary, 0));
+                _print_row((psMetadata*)psArrayGet(ary, 1));
+                row = (psMetadata*)psArrayGet(ary, 2);
+                _print_row(row);
+
+                item = psMetadataLookup(row, "key_s32");
+                if ((item == NULL) || (item->data.S32 != S32_2)) {
+                    psLogMsg( __func__, PS_LOG_INFO, "oops, did not find expected output!\n" );
+                    failed = 1;
+                } else {
+                    psLogMsg( __func__, PS_LOG_INFO, "found expected output.\n" );
+                }
+
+                psFree(ary);
+            }
+
             psFree(updates);
             psFree(where);
@@ -602,5 +785,5 @@
     psDB *dbh = NULL;
     const char* table = "table10";
-    psArray *rowSet = NULL;
+    psArray *ary=NULL, *rowSet=NULL;
     psMetadata *where=NULL, *row=NULL, *md = _get_CreateTableMetadata();
 
@@ -633,4 +816,19 @@
             where = _get_where();
             failed = (psDBDeleteRows(dbh, table, where) < 0);
+
+            ary = psDBDumpRows(dbh, table);
+            if (ary == NULL) {
+                failed = 1;
+            } else {
+                if (ary->n > 0) {
+                    psLogMsg( __func__, PS_LOG_INFO, "oops, did not delete stuff!\n" );
+                    failed = 1;
+                } else {
+                    psLogMsg( __func__, PS_LOG_INFO, "found expected empty table.\n" );
+                }
+
+                psFree(ary);
+            }
+
             psFree(where);
         }
