Index: /trunk/psLib/test/types/tap_psMetadataConfig_format.c
===================================================================
--- /trunk/psLib/test/types/tap_psMetadataConfig_format.c	(revision 9814)
+++ /trunk/psLib/test/types/tap_psMetadataConfig_format.c	(revision 9814)
@@ -0,0 +1,176 @@
+/**
+ *  C Implementation: tap_psMetadataConfig_format
+ *
+ * Description:  Tests for psMetadataConfigFormat & internal psMetadataConfig fxns
+ *
+ * Author: dRob <David.Robbins@mhpcc.hpc.mil>, (C) 2006
+ *
+ * Copyright: See COPYING file that comes with this distribution
+ *
+ */
+
+#include <pslib.h>
+#include <string.h>
+#include <fcntl.h>
+#include <unistd.h>
+
+
+#include "tap.h"
+#include "pstap.h"
+
+static void testMetaConfigFormat(void);
+
+
+int main(void)
+{
+    plan_tests(10);
+
+    diag("Tests for psMetadataConfig Input Functions");
+
+    testMetaConfigFormat();
+
+    done();
+}
+
+void testMetaConfigFormat(void)
+{
+    diag("  >>>Test 1:  psMetadataConfigFormat");
+    psMetadata *md = NULL;
+    psString out = NULL;
+
+    //psString psMetadataConfigFormat(psMetadata *md);
+
+    //Return NULL for NULL metadata input
+    {
+        out = psMetadataConfigFormat(md);
+        ok( out == NULL,
+            "psMetadataConfigFormat:         return NULL for NULL metadata input.");
+    }
+    //Return NULL for empty metadata input
+    {
+        md = psMetadataAlloc();
+        out = psMetadataConfigFormat(md);
+        ok( out == NULL,
+            "psMetadataConfigFormat:         return NULL for empty metadata input.");
+    }
+    //Return NULL for metadata with missing hash table
+    {
+        psMetadataAddS32(md, PS_LIST_HEAD, "new_S32", 0, "", 666);
+        psMetadataAddS32(md, PS_LIST_HEAD, "new_S32", PS_META_DUPLICATE_OK, "", 665);
+        psHash *temp = md->hash;
+        md->hash = NULL;
+        out = psMetadataConfigFormat(md);
+        ok( out == NULL,
+            "psMetadataConfigFormat:         return NULL for metadata with missing "
+            "hash table.");
+        md->hash = temp;
+    }
+    //Return NULL for metadata containing a psList
+    {
+        psList *list = psListAlloc(NULL);
+        psMetadataAddList(md, PS_LIST_HEAD, "new_list", 0, "", list);
+        out = psMetadataConfigFormat(md);
+        ok( out == NULL,
+            "psMetadataConfigFormat:         return NULL for metadata containing a psList.");
+        psFree(list);
+        psFree(md);
+    }
+    //Return false for attempting to format vector with type = complex
+    {
+        psVector *vec = psVectorAlloc(60, PS_TYPE_C64);
+        for (int i = 0; i < 5; i++)
+        {
+            vec->data.C64[i] = i+1;
+        }
+        md = psMetadataAlloc();
+        psMetadataAddVector(md, PS_LIST_TAIL, "vectorC64", 0, "", vec);
+        out = psMetadataConfigFormat(md);
+        ok( out == NULL,
+            "psMetadataConfigFormat:         return NULL for metadata containing a "
+            "Complex vector.");
+        psFree(vec);
+    }
+    //Return false for attempting to format psTime with type = -1
+    {
+        psFree(md);
+        md = psMetadataAlloc();
+        psTime *time = psTimeAlloc(PS_TIME_TT);
+        time->type = -1;
+        psMetadataAddTime(md, PS_LIST_TAIL, "time", 0, "", time);
+        out = psMetadataConfigFormat(md);
+        ok( out == NULL,
+            "psMetadataConfigFormat:         return NULL for metadata containing a "
+            "invalid time type.");
+        psFree(time);
+    }
+    //Return true for attempting to format NULL psTime metadataItem
+    {
+        psFree(md);
+        md = psMetadataAlloc();
+        psTime *time = psTimeAlloc(PS_TIME_TT);
+        psMetadataAddTime(md, PS_LIST_HEAD, "time", 0, "", time);
+        psMetadataItem *item = psMetadataGet(md, PS_LIST_HEAD);
+        psFree(item->data.V);
+        item->data.V = NULL;
+        out = psMetadataConfigFormat(md);
+        ok( out != NULL,
+            "psMetadataConfigFormat:         return valid metadata for metadata "
+            "containing a NULL time.");
+        psFree(time);
+        psFree(out);
+        out = NULL;
+    }
+    //Return true for attempting to format NULL psTime metadataItem
+    {
+        psFree(md);
+        md = psMetadataAlloc();
+        psMetadataAddS32(md, PS_LIST_HEAD, "new_S32", 0, NULL, 666);
+        psMetadataAddS32(md, PS_LIST_HEAD, "new_S32", PS_META_DUPLICATE_OK, NULL, 665);
+        out = psMetadataConfigFormat(md);
+        ok( out != NULL,
+            "psMetadataConfigFormat:         return valid metadata for metadata "
+            "containing a NULL time.");
+        psFree(out);
+        out = NULL;
+    }
+    //Return true for attempting to format NULL psTime metadataItem
+    {
+        psFree(md);
+        md = psMetadataAlloc();
+        psMetadataAddS32(md, PS_LIST_HEAD, "f32", 0, "f32_1", 666);
+        psMetadataAddS32(md, PS_LIST_TAIL, "f32", PS_META_DUPLICATE_OK, "f32_3", 666);
+        psMetadataAddS32(md, PS_LIST_TAIL, "f32", PS_META_DUPLICATE_OK, "f32_2", 665);
+        out = psMetadataConfigFormat(md);
+        //        printf("\n%s\n", out);
+        ok( out != NULL,
+            "psMetadataConfigFormat:         return valid metadata for metadata "
+            "containing a NULL time.");
+        psFree(out);
+        out = NULL;
+    }
+
+    /*    //Return true for valid inputs
+    {
+        skip_start(  !psMetadataConfigWrite(md, "mdcfg.wrt"), 2,
+                      "Skipping 2 tests because psMetadataConfigWrite failed");
+        out = psMetadataConfigRead(out, &nfail, "mdcfg.wrt", false);
+        psMetadataItem *tempItem = psMetadataGet(out, PS_LIST_HEAD);
+        ok( out != NULL && nfail == 0,
+            "psMetadataConfigRead:           return correct metadata for valid inputs.");
+        skip_start(  tempItem == NULL, 1,
+                     "Skipping 1 tests because metadata container is empty!");
+        ok_str( tempItem->name, "new_S32",
+                "psMetadataConfigRead:           return correct metadataItem from "
+                        "returned metadata.");
+        skip_end();
+        skip_end();
+    }
+    */
+    //Check for Memory leaks
+    {
+        //        psFree(out);
+        //        remove("mdcfg.wrt");
+        psFree(md);
+        checkMem();
+    }
+}
