Index: trunk/psLib/test/collections/tst_psMetadata_04.c
===================================================================
--- trunk/psLib/test/collections/tst_psMetadata_04.c	(revision 2636)
+++ trunk/psLib/test/collections/tst_psMetadata_04.c	(revision 2657)
@@ -11,14 +11,18 @@
 *     Test E - Attempt to lookup non-existant metadata item
 *     Test F - Lookup metadata item by index
-*     Test G - Attempt to use null metadata
-*     Test H - Attempt to get non-existant metadata item
-*     Test I - Attempt to look up with an invalid metadata object
-*     Test J - Attempt get item  with an invalid metadata object
-*     Test K - Free psMetadata
+*     Test G - Lookup metadata item and return psS32 value
+*     Test H - Lookup metadata item and return psF64 value
+*     Test I - Lookup metadata item and return psVector pointer
+*     Test J - Attempt to use null metadata
+*     Test K - Attempt to get non-existant metadata item
+*     Test L - Attempt to look up with an invalid metadata object
+*     Test M - Attempt get item  with an invalid metadata object
+*     Test N - Attempt get value of non-existant metadata item
+*     Test O - Free psMetadata
 *
 *  @author  Ross Harman, MHPCC
 *
-*  @version $Revision: 1.9 $  $Name: not supported by cvs2svn $
-*  @date  $Date: 2004-12-03 23:19:07 $
+*  @version $Revision: 1.10 $  $Name: not supported by cvs2svn $
+*  @date  $Date: 2004-12-07 22:59:11 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -70,8 +74,11 @@
 psS32 main( psS32 argc, char* argv[] )
 {
+    psU32 status = 0;
     psMetadataItem *item1 = NULL;
     psMetadataItem *item2 = NULL;
     psMetadataItem *item3 = NULL;
     psMetadataItem *item4 = NULL;
+    psMetadataItem *item5 = NULL;
+    psMetadataItem *item6 = NULL;
     psMetadataItem *item = NULL;
     psMetadata *metadata = NULL;
@@ -82,4 +89,5 @@
     // Test A - Allocate metadata and items
     printPositiveTestHeader(stdout, "psMetadata", "Test A - Allocate metadata items");
+    psVector *vec = psVectorAlloc(5, PS_TYPE_S32);
     metadata = psMetadataAlloc();
     item1 = psMetadataItemAlloc("myItem1", PS_TYPE_BOOL, PS_META_PRIMITIVE, "I am a boolean", true);
@@ -87,12 +95,17 @@
     item3 = psMetadataItemAlloc("myItem3", PS_TYPE_BOOL, PS_META_PRIMITIVE, "I am a boolean", false);
     item4 = psMetadataItemAlloc("myItem4", PS_TYPE_S32, PS_META_PRIMITIVE, "I am a integer", 66);
+    item5 = psMetadataItemAlloc("myItem5", PS_TYPE_F64, PS_META_PRIMITIVE, "I am a double", 3.14);
+    item6 = psMetadataItemAlloc("myItem6", PS_TYPE_PTR, PS_META_VEC, "I am a vector", vec);
     printMetadataItem(item1);
     printMetadataItem(item2);
     printMetadataItem(item3);
     printMetadataItem(item4);
+    printMetadataItem(item5);
     psMetadataAddItem(metadata, item1, PS_LIST_HEAD);
     psMetadataAddItem(metadata, item2, PS_LIST_HEAD);
     psMetadataAddItem(metadata, item3, PS_LIST_HEAD);
     psMetadataAddItem(metadata, item4, PS_LIST_HEAD);
+    psMetadataAddItem(metadata, item5, PS_LIST_HEAD);
+    psMetadataAddItem(metadata, item6, PS_LIST_HEAD);
     printFooter(stdout, "psMetadata", "Test A - Allocate metadata items", true);
 
@@ -149,51 +162,123 @@
     printFooter(stdout, "psMetadata", "Test F - Lookup metadata item by index", true);
 
-
-    // Test G - Attempt to use null metadata
-    printNegativeTestHeader(stdout,"psMetadata", "Test G - Attempt to use null metadata",
+    // Test G - Lookup metadata item and return psS32 value
+    printPositiveTestHeader(stdout, "psMetadata", "Test G - Lookup metadata item and return psS32 value");
+    psS32 valueS32 = 0;
+    status = 0;
+    valueS32 = psMetadataLookupS32(metadata, "myItem2", &status);
+    if(valueS32 != 55) {
+        printf("ERROR: Bad value, %d, Expected 55\n", valueS32);
+        return 15;
+    } else if(status != 0) {
+        printf("ERROR: Bad status, %d\n", status);
+        return 15;
+    }
+    printFooter(stdout, "psMetadata", "Test G - Lookup metadata item and return psS32 value", true);
+
+    // Test H - Lookup metadata item and return psF64 value
+    printPositiveTestHeader(stdout, "psMetadata", "Test H - Lookup metadata item and return psF64 value");
+    psF64 valueF64 = 0.0;
+    status = 0;
+    valueF64 = psMetadataLookupF64(metadata, "myItem5", &status);
+    if(fabs(valueF64-3.14) > FLT_EPSILON) {
+        printf("ERROR: Bad value, %g, Expected 3.14\n", valueF64);
+        return 16;
+    } else if(status != 0) {
+        printf("ERROR: Bad status, %d\n", status);
+        return 16;
+    }
+    printFooter(stdout, "psMetadata", "Test H - Lookup metadata item and return psF64 value", true);
+
+    // Test I - Lookup metadata item and return psVector pointer
+    printPositiveTestHeader(stdout, "psMetadata", "Test I - Lookup metadata item and return psVector pointer");
+    psVector *valueVec = NULL;
+    status = 0;
+    valueVec = psMetadataLookupPtr(metadata, "myItem6", &status);
+    if(valueVec != vec) {
+        printf("ERROR: Bad vector pointer\n");
+        return 17;
+    } else if(status != 0) {
+        printf("ERROR: Bad status, %d\n", status);
+        return 17;
+    }
+    printFooter(stdout, "psMetadata", "Test I - Lookup metadata item and return psVector pointer", true);
+
+
+    // Test J - Attempt to use null metadata
+    printNegativeTestHeader(stdout,"psMetadata", "Test J - Attempt to use null metadata",
                             "Null metadata collection not allowed", 0);
     item = psMetadataGet(NULL, 0);
     if ( item != NULL ) {
-        psError(PS_ERR_UNKNOWN, true,"psMetadataGet did not return NULL with null metadata structure.");
-        return 15;
-    }
-    printFooter(stdout, "psMetadata", "Test G - Attempt to use null metadata", true);
-
-
-    // Test H - Attempt to get non-existant metadata item
-    printNegativeTestHeader(stdout,"psMetadata", "Test H - Attempt to get non-existant metadata item",
+        psError(PS_ERR_UNKNOWN, true,"psMetadataGet did not return NULL with null metadata structure");
+        return 18;
+    }
+    printFooter(stdout, "psMetadata", "Test J - Attempt to use null metadata", true);
+
+
+    // Test K - Attempt to get non-existant metadata item
+    printNegativeTestHeader(stdout,"psMetadata", "Test K - Attempt to get non-existant metadata item",
                             "Couldn't find metadata item with given index. Index: 22", 0);
     if ( psMetadataGet(metadata, 22) != NULL ) {
-        psError(PS_ERR_UNKNOWN, true,"psMetadataGet did not return NULL with non-existant metadata item.");
-        return 16;
-    }
-    printFooter(stdout, "psMetadata", "Test H - Attempt to get non-existant metadata item", true);
-
-    // Test I - Attempt to look up with an invalid metadata object
-    printNegativeTestHeader(stdout,"psMetadata","Test I - Attemp to look up with an invalid metadata",
+        psError(PS_ERR_UNKNOWN, true,"psMetadataGet did not return NULL with non-existant metadata item");
+        return 19;
+    }
+    printFooter(stdout, "psMetadata", "Test K - Attempt to get non-existant metadata item", true);
+
+    // Test L - Attempt to look up with an invalid metadata object
+    printNegativeTestHeader(stdout,"psMetadata","Test L - Attemp to look up with an invalid metadata",
                             "Lookup item with invalid metadata object.", 0 );
     tmpTable = metadata->table;
     metadata->table = NULL;
     if ( psMetadataLookup(metadata,"myItem2") != NULL ) {
-        psError(PS_ERR_UNKNOWN, true,"psMetadataLookup did not return null for invalid metadata object.");
+        psError(PS_ERR_UNKNOWN, true,"psMetadataLookup did not return null for invalid metadata object");
         return 20;
     }
     metadata->table = tmpTable;
-    printFooter(stdout, "psMetadata","Test I - Attempt to lookup an invalid metadata object.",true);
-
-    // Test J - Attempt get item  with an invalid metadata object
-    printNegativeTestHeader(stdout,"psMetadata","Test J - Attemp to get item with an invalid metadata",
+    printFooter(stdout, "psMetadata","Test L - Attempt to lookup an invalid metadata object.",true);
+
+    // Test M - Attempt get item with an invalid metadata object
+    printNegativeTestHeader(stdout,"psMetadata","Test M - Attempt to get item with an invalid metadata",
                             "Get item with invalid metadata object.", 0 );
     tmpList = metadata->list;
     metadata->list = NULL;
     if ( psMetadataGet(metadata,0) != NULL ) {
-        psError(PS_ERR_UNKNOWN, true,"psMetadataLookup did not return null for invalid metadata object.");
-        return 20;
+        psError(PS_ERR_UNKNOWN, true,"psMetadataLookup did not return null for invalid metadata object");
+        return 21;
     }
     metadata->list = tmpList;
-    printFooter(stdout, "psMetadata","Test J - Attempt to get item with  invalid metadata object.",true);
-
-    // Test K - Free psMetadata
-    printPositiveTestHeader(stdout, "psMetadata", "Test K - Free psMetadata");
+    printFooter(stdout, "psMetadata","Test M - Attempt to get item with  invalid metadata object",true);
+
+    // Test N - Attempt get psS32 value of non-existant metadata item
+    printPositiveTestHeader(stdout, "psMetadata", "Test N - Attempt get psS32 value of non-existant metadata item");
+    status = 0;
+    valueS32 = psMetadataLookupS32(metadata, "myItem22", &status);
+    if(status != 1) {
+        printf("ERROR: Bad status, %d, \n", status);
+        return 22;
+    }
+    printFooter(stdout, "psMetadata","Test N - Attempt get psS32 value of non-existant metadata item",true);
+
+    // Test O - Attempt get psF64 value of non-existant metadata item
+    printPositiveTestHeader(stdout, "psMetadata", "Test O - Attempt get psF64 value of non-existant metadata item");
+    status = 0;
+    valueF64 = psMetadataLookupF64(metadata, "myItem22", &status);
+    if(status != 1) {
+        printf("ERROR: Bad status, %d, \n", status);
+        return 23;
+    }
+    printFooter(stdout, "psMetadata","Test O - Attempt get psF64 value of non-existant metadata item",true);
+
+    // Test P - Attempt get psVector value of non-existant metadata item
+    printPositiveTestHeader(stdout, "psMetadata", "Test P - Attempt get psVector value of non-existant metadata item");
+    status = 0;
+    valueVec = psMetadataLookupPtr(metadata, "myItem22", &status);
+    if(status != 1) {
+        printf("ERROR: Bad status, %d, \n", status);
+        return 24;
+    }
+    printFooter(stdout, "psMetadata","Test P - Attempt get psVector value of non-existant metadata item",true);
+
+    // Test Q - Free psMetadata
+    printPositiveTestHeader(stdout, "psMetadata", "Test Q - Free psMetadata");
     psFree(metadata);
     psFree(item1);
@@ -201,7 +286,9 @@
     psFree(item3);
     psFree(item4);
+    psFree(item5);
+    psFree(item6);
     if ( psMemCheckLeaks(0, NULL, stdout,false) != 0 ) {
         psError(PS_ERR_UNKNOWN, true,"memory leaks detected.");
-        return 20;
+        return 23;
     }
     psMemCheckCorruption(0);
@@ -209,7 +296,7 @@
     if(nBad) {
         printf("ERROR: Found %d bad memory blocks\n", nBad);
-        return 21;
-    }
-    printFooter(stdout, "psMetadata", "Test K - Free psMetadata", true);
+        return 24;
+    }
+    printFooter(stdout, "psMetadata", "Test Q - Free psMetadata", true);
 
 
