Index: /trunk/psLib/test/types/tst_psMetadata_04.c
===================================================================
--- /trunk/psLib/test/types/tst_psMetadata_04.c	(revision 4870)
+++ /trunk/psLib/test/types/tst_psMetadata_04.c	(revision 4871)
@@ -14,15 +14,17 @@
 *     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
+*     Test J - Lookup metadata item and return psMetadata pointer
+*     Test K - Lookup metadata item and return psString value
+*     Test L - Attempt to use null metadata
+*     Test M - Attempt to get non-existant metadata item
+*     Test N - Attempt to look up with an invalid metadata object
+*     Test O - Attempt get item  with an invalid metadata object
+*     Test P - Attempt get value of non-existant metadata item
+*     Test Q - Free psMetadata
 *
 *  @author  Ross Harman, MHPCC
 *
-*  @version $Revision: 1.2 $  $Name: not supported by cvs2svn $
-*  @date  $Date: 2005-07-21 02:39:57 $
+*  @version $Revision: 1.3 $  $Name: not supported by cvs2svn $
+*  @date  $Date: 2005-08-24 23:06:48 $
 *
 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -74,6 +76,10 @@
     psMetadataItem *item5 = NULL;
     psMetadataItem *item6 = NULL;
+    psMetadataItem *item7 = NULL;
+    psMetadataItem *item8 = NULL;
     psMetadataItem *item = NULL;
     psMetadata *metadata = NULL;
+    psMetadata *newMD = NULL;
+    char string[50];
     psHash* tmpTable = NULL;
     psList* tmpList = NULL;
@@ -84,4 +90,7 @@
     psVector *vec = psVectorAlloc(5, PS_TYPE_S32);
     metadata = psMetadataAlloc();
+    newMD = psMetadataAlloc();
+    strncpy(string, "String was here", 50);
+    psMetadataAddF64(newMD, PS_LIST_HEAD, "yourItem1", "I am a psF64", 4.14);
     item1 = psMetadataItemAlloc("myItem1", PS_META_BOOL, "I am a boolean", true);
     item2 = psMetadataItemAlloc("myItem2", PS_META_S32, "I am a integer", 55);
@@ -90,4 +99,6 @@
     item5 = psMetadataItemAlloc("myItem5", PS_META_F64, "I am a double", 3.14);
     item6 = psMetadataItemAlloc("myItem6", PS_META_VEC, "I am a vector", vec);
+    item7 = psMetadataItemAlloc("myItem7", PS_META_META, "I am a metadata", newMD);
+    item8 = psMetadataItemAlloc("myItem8", PS_META_STR, "I am a string", string);
     printMetadataItem(item1);
     printMetadataItem(item2);
@@ -101,4 +112,6 @@
     psMetadataAddItem(metadata, item5, PS_LIST_HEAD, PS_META_DEFAULT);
     psMetadataAddItem(metadata, item6, PS_LIST_HEAD, PS_META_DEFAULT);
+    psMetadataAddItem(metadata, item7, PS_LIST_HEAD, PS_META_DEFAULT);
+    psMetadataAddItem(metadata, item8, PS_LIST_HEAD, PS_META_DEFAULT);
     psMemDecrRefCounter(vec); // vs. psFree, which now would set vec to NULL (want to keep it to comparison later)
     printFooter(stdout, "psMetadata", "Test A - Allocate metadata items", true);
@@ -195,7 +208,32 @@
     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",
+    // Test J - Lookup metadata item and return psMetadata pointer
+    printPositiveTestHeader(stdout, "psMetadata", "Test J - Lookup metadata item and return psMetadata pointer");
+    psMetadata *metaData = NULL;
+    metaData = psMetadataLookupMD(&status, metadata, "myItem7");
+    if(metaData != newMD) {
+        printf("ERROR: Bad metadata pointer\n");
+        return 25;
+    } else if(! status) {
+        printf("ERROR: Bad status, %d\n", status);
+        return 25;
+    }
+    printFooter(stdout, "psMetadata", "Test J - Lookup metadata item and return psMetadata pointer", true);
+
+    // Test K - Lookup metadata item and return psString value
+    printPositiveTestHeader(stdout, "psMetadata", "Test K - Lookup metadata item and return psString value");
+    char *newSTR;
+    newSTR = psMetadataLookupString(&status, metadata, "myItem8");
+    if( strncmp(newSTR, string, 50) ) {
+        printf("ERROR: Bad string value \n");
+        return 26;
+    } else if(! status) {
+        printf("ERROR: Bad status, %d\n", status);
+        return 26;
+    }
+    printFooter(stdout, "psMetadata", "Test K - Lookup metadata item and return psString value", true);
+
+    // Test L - Attempt to use null metadata
+    printNegativeTestHeader(stdout,"psMetadata", "Test L - Attempt to use null metadata",
                             "Null metadata collection not allowed", 0);
     item = psMetadataGet(NULL, 0);
@@ -204,9 +242,9 @@
         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",
+    printFooter(stdout, "psMetadata", "Test L - Attempt to use null metadata", true);
+
+
+    // Test M - Attempt to get non-existant metadata item
+    printNegativeTestHeader(stdout,"psMetadata", "Test M - Attempt to get non-existant metadata item",
                             "Couldn't find metadata item with given index. Index: 22", 0);
     if ( psMetadataGet(metadata, 22) != NULL ) {
@@ -214,8 +252,8 @@
         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",
+    printFooter(stdout, "psMetadata", "Test M - Attempt to get non-existant metadata item", true);
+
+    // Test N - Attempt to look up with an invalid metadata object
+    printNegativeTestHeader(stdout,"psMetadata","Test N - Attemp to look up with an invalid metadata",
                             "Lookup item with invalid metadata object.", 0 );
     tmpTable = metadata->hash;
@@ -226,8 +264,8 @@
     }
     metadata->hash = tmpTable;
-    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",
+    printFooter(stdout, "psMetadata","Test N - Attempt to lookup an invalid metadata object.",true);
+
+    // Test O - Attempt get item with an invalid metadata object
+    printNegativeTestHeader(stdout,"psMetadata","Test O - Attempt to get item with an invalid metadata",
                             "Get item with invalid metadata object.", 0 );
     tmpList = metadata->list;
@@ -238,8 +276,8 @@
     }
     metadata->list = tmpList;
-    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");
+    printFooter(stdout, "psMetadata","Test O - Attempt to get item with  invalid metadata object",true);
+
+    // Test P - Attempt get psS32 value of non-existant metadata item
+    printPositiveTestHeader(stdout, "psMetadata", "Test P - Attempt get psS32 value of non-existant metadata item");
     valueS32 = psMetadataLookupS32(&status, metadata, "myItem22");
     if(status) {
@@ -247,8 +285,8 @@
         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");
+    printFooter(stdout, "psMetadata","Test P - Attempt get psS32 value of non-existant metadata item",true);
+
+    // Test P - Attempt get psF64 value of non-existant metadata item
+    printPositiveTestHeader(stdout, "psMetadata", "Test P - Attempt get psF64 value of non-existant metadata item");
     valueF64 = psMetadataLookupF64(&status, metadata, "myItem22");
     if(status) {
@@ -256,5 +294,5 @@
         return 23;
     }
-    printFooter(stdout, "psMetadata","Test O - Attempt get psF64 value of non-existant metadata item",true);
+    printFooter(stdout, "psMetadata","Test P - Attempt get psF64 value of non-existant metadata item",true);
 
     // Test P - Attempt get psVector value of non-existant metadata item
@@ -269,4 +307,7 @@
     // Test Q - Free psMetadata
     printPositiveTestHeader(stdout, "psMetadata", "Test Q - Free psMetadata");
+    //    psFree(newSTR);
+    //    psFree(string);
+    psFree(newMD);
     psFree(metadata);
     psFree(item1);
@@ -276,4 +317,6 @@
     psFree(item5);
     psFree(item6);
+    psFree(item7);
+    psFree(item8);
     if ( psMemCheckLeaks(0, NULL, stdout,false) != 0 ) {
         psError(PS_ERR_UNKNOWN, true,"memory leaks detected.");
Index: /trunk/psLib/test/types/verified/tst_psMetadata_04.stdout
===================================================================
--- /trunk/psLib/test/types/verified/tst_psMetadata_04.stdout	(revision 4870)
+++ /trunk/psLib/test/types/verified/tst_psMetadata_04.stdout	(revision 4871)
@@ -62,5 +62,5 @@
 \**********************************************************************************/
 
-Found item named myItem6
+Found item named myItem8
 
 ---> TESTPOINT PASSED (psMetadata{Test F - Lookup metadata item by index} | tst_psMetadata_04.c)
@@ -95,5 +95,23 @@
 /***************************** TESTPOINT ******************************************\
 *             TestFile: tst_psMetadata_04.c                                        *
-*            TestPoint: psMetadata{Test J - Attempt to use null metadata}          *
+*            TestPoint: psMetadata{Test J - Lookup metadata item and return psMetadata pointer} *
+*             TestType: Positive                                                   *
+\**********************************************************************************/
+
+
+---> TESTPOINT PASSED (psMetadata{Test J - Lookup metadata item and return psMetadata pointer} | tst_psMetadata_04.c)
+
+/***************************** TESTPOINT ******************************************\
+*             TestFile: tst_psMetadata_04.c                                        *
+*            TestPoint: psMetadata{Test K - Lookup metadata item and return psString value} *
+*             TestType: Positive                                                   *
+\**********************************************************************************/
+
+
+---> TESTPOINT PASSED (psMetadata{Test K - Lookup metadata item and return psString value} | tst_psMetadata_04.c)
+
+/***************************** TESTPOINT ******************************************\
+*             TestFile: tst_psMetadata_04.c                                        *
+*            TestPoint: psMetadata{Test L - Attempt to use null metadata}          *
 *             TestType: Negative                                                   *
 *    ExpectedErrorText: Null metadata collection not allowed                       *
@@ -102,9 +120,9 @@
 
 
----> TESTPOINT PASSED (psMetadata{Test J - Attempt to use null metadata} | tst_psMetadata_04.c)
+---> TESTPOINT PASSED (psMetadata{Test L - Attempt to use null metadata} | tst_psMetadata_04.c)
 
 /***************************** TESTPOINT ******************************************\
 *             TestFile: tst_psMetadata_04.c                                        *
-*            TestPoint: psMetadata{Test K - Attempt to get non-existant metadata item} *
+*            TestPoint: psMetadata{Test M - Attempt to get non-existant metadata item} *
 *             TestType: Negative                                                   *
 *    ExpectedErrorText: Couldn't find metadata item with given index. Index: 22    *
@@ -113,9 +131,9 @@
 
 
----> TESTPOINT PASSED (psMetadata{Test K - Attempt to get non-existant metadata item} | tst_psMetadata_04.c)
+---> TESTPOINT PASSED (psMetadata{Test M - Attempt to get non-existant metadata item} | tst_psMetadata_04.c)
 
 /***************************** TESTPOINT ******************************************\
 *             TestFile: tst_psMetadata_04.c                                        *
-*            TestPoint: psMetadata{Test L - Attemp to look up with an invalid metadata} *
+*            TestPoint: psMetadata{Test N - Attemp to look up with an invalid metadata} *
 *             TestType: Negative                                                   *
 *    ExpectedErrorText: Lookup item with invalid metadata object.                  *
@@ -124,9 +142,9 @@
 
 
----> TESTPOINT PASSED (psMetadata{Test L - Attempt to lookup an invalid metadata object.} | tst_psMetadata_04.c)
+---> TESTPOINT PASSED (psMetadata{Test N - Attempt to lookup an invalid metadata object.} | tst_psMetadata_04.c)
 
 /***************************** TESTPOINT ******************************************\
 *             TestFile: tst_psMetadata_04.c                                        *
-*            TestPoint: psMetadata{Test M - Attempt to get item with an invalid metadata} *
+*            TestPoint: psMetadata{Test O - Attempt to get item with an invalid metadata} *
 *             TestType: Negative                                                   *
 *    ExpectedErrorText: Get item with invalid metadata object.                     *
@@ -135,23 +153,23 @@
 
 
----> TESTPOINT PASSED (psMetadata{Test M - Attempt to get item with  invalid metadata object} | tst_psMetadata_04.c)
+---> TESTPOINT PASSED (psMetadata{Test O - Attempt to get item with  invalid metadata object} | tst_psMetadata_04.c)
 
 /***************************** TESTPOINT ******************************************\
 *             TestFile: tst_psMetadata_04.c                                        *
-*            TestPoint: psMetadata{Test N - Attempt get psS32 value of non-existant metadata item} *
+*            TestPoint: psMetadata{Test P - Attempt get psS32 value of non-existant metadata item} *
 *             TestType: Positive                                                   *
 \**********************************************************************************/
 
 
----> TESTPOINT PASSED (psMetadata{Test N - Attempt get psS32 value of non-existant metadata item} | tst_psMetadata_04.c)
+---> TESTPOINT PASSED (psMetadata{Test P - Attempt get psS32 value of non-existant metadata item} | tst_psMetadata_04.c)
 
 /***************************** TESTPOINT ******************************************\
 *             TestFile: tst_psMetadata_04.c                                        *
-*            TestPoint: psMetadata{Test O - Attempt get psF64 value of non-existant metadata item} *
+*            TestPoint: psMetadata{Test P - Attempt get psF64 value of non-existant metadata item} *
 *             TestType: Positive                                                   *
 \**********************************************************************************/
 
 
----> TESTPOINT PASSED (psMetadata{Test O - Attempt get psF64 value of non-existant metadata item} | tst_psMetadata_04.c)
+---> TESTPOINT PASSED (psMetadata{Test P - Attempt get psF64 value of non-existant metadata item} | tst_psMetadata_04.c)
 
 /***************************** TESTPOINT ******************************************\
