Index: trunk/psLib/test/types/tap_psMetadata_copying.c
===================================================================
--- trunk/psLib/test/types/tap_psMetadata_copying.c	(revision 8416)
+++ trunk/psLib/test/types/tap_psMetadata_copying.c	(revision 8425)
@@ -1,2 +1,13 @@
+/**
+ *  C Implementation: tap_psMetadata_copying
+ *
+ * Description:  Tests for psMetadataCopy, psMetadataItemCopy, & psMetadataItemTransfer.
+ *
+ *
+ * Author: dRob <David.Robbins@mhpcc.hpc.mil>, (C) 2006
+ *
+ * Copyright: See COPYING file that comes with this distribution
+ *
+ */
 
 #include "pstap.h"
Index: trunk/psLib/test/types/tap_psMetadata_creating.c
===================================================================
--- trunk/psLib/test/types/tap_psMetadata_creating.c	(revision 8416)
+++ trunk/psLib/test/types/tap_psMetadata_creating.c	(revision 8425)
@@ -2,5 +2,7 @@
 *  C Implementation: tap_psMetadata_creating
 *
-* Description:
+* Description:  Tests for psMetadataAlloc, psMetadataItemAlloc's (TYPEs),
+*               psMemCheckMetadata, psMemCheckMetadataItem, psMetadataAddItem,
+*               psMetadataIteratorAlloc
 *
 *
@@ -15,8 +17,9 @@
 void testItemAllocs(void);
 void testMDAlloc_AddItem(void);
+void testIterAlloc(void);
 
 int main(void)
 {
-    plan_tests(31);
+    plan_tests(37);
 
     diag("psMetadata & psMetadataItem Creation Functions");
@@ -24,4 +27,5 @@
     testItemAllocs();
     testMDAlloc_AddItem();
+    testIterAlloc();
 
     done();
@@ -366,2 +370,44 @@
 }
 
+void testIterAlloc(void)
+{
+    diag("\n  >>>Test 4:  psMetadataIteratorAlloc");
+    psMetadata *md = psMetadataAlloc();
+    psMetadata *md2 = NULL;
+    psMetadataAddS32(md, PS_LIST_HEAD, "S32_1", PS_META_NO_REPLACE, "", 1);
+    psMetadataAddS32(md, PS_LIST_TAIL, "S32_2", PS_META_DEFAULT, "", 2);
+
+    psMetadataIterator *iter = NULL;
+    //Return NULL for NULL metadata input
+    {
+        iter = psMetadataIteratorAlloc(md2, PS_LIST_HEAD, NULL);
+        ok( iter == NULL,
+            "psMetadataIteratorAlloc:  return NULL for NULL metadata input.");
+    }
+    //Return NULL for metadata with no List
+    md2 = psMetadataAlloc();
+    psFree(md2->list);
+    md2->list = NULL;
+    {
+        iter = psMetadataIteratorAlloc(md2, PS_LIST_HEAD, NULL);
+        ok( iter == NULL,
+            "psMetadataIteratorAlloc:  return NULL for metadata with no list.");
+    }
+    psFree(md2);
+
+    //Return newly allocated MetadataIterator, regex=NULL
+    {
+        iter = psMetadataIteratorAlloc(md, PS_LIST_HEAD, NULL);
+        ok( iter != NULL,
+            "psMetadataIteratorAlloc:  return valid iterator for valid inputs, regex=NULL.");
+    }
+
+
+    //Check for Memory leaks
+    {
+        psFree(iter);
+        psFree(md);
+        checkMem();
+    }
+}
+
Index: trunk/psLib/test/types/tap_psMetadata_manip.c
===================================================================
--- trunk/psLib/test/types/tap_psMetadata_manip.c	(revision 8416)
+++ trunk/psLib/test/types/tap_psMetadata_manip.c	(revision 8425)
@@ -2,5 +2,5 @@
  *  C Implementation: tap_psMetadata_manip
  *
-* Description:
+ * Description:  Tests for psMetadataRemove's, psMetadataLookup's (TYPE),
  *
  *
@@ -13,11 +13,90 @@
 #include "pstap.h"
 
+void testIter(void);
+
 int main(void)
 {
     plan_tests(2);
 
-    diag("psMetadataLookup and Remove Fxns");
+    diag("psMetadataLookup, Remove, and Iterator Fxns");
+
 
 
     done();
 }
+
+void testIter(void)
+{
+    diag("\n  >>>Test 4:  psMetadataIterator Functions");
+    psMetadata *md = psMetadataAlloc();
+    psMetadataAddS32(md, PS_LIST_HEAD, "S32_1", PS_META_NO_REPLACE, "", 1);
+    psMetadataAddS32(md, PS_LIST_TAIL, "S32_2", PS_META_NO_REPLACE, "", 2);
+    psMetadataAddS32(md, PS_LIST_TAIL, "S32_3", PS_META_NO_REPLACE, "", 3);
+
+    psMetadataIterator *iter = NULL;
+
+    //Return NULL in psMetadataGetAnd(In/De)crement for NULL iterator input
+    {
+        ok( psMetadataGetAndIncrement(NULL) == NULL,
+            "psMetadataGetAndIncrement:  return NULL for NULL iterator input.");
+        ok( psMetadataGetAndDecrement(NULL) == NULL,
+            "psMetadataGetAndDecrement:  return NULL for NULL iterator input.");
+    }
+    //Return NULL in psMetadataGetAnd(In/De)crement for iterator with no list iterator
+    psMetadataIterator *iter2 = psMetadataIteratorAlloc(md, PS_LIST_HEAD, NULL);
+    psFree(iter2->iter);
+    iter2->iter = NULL;
+    {
+        ok( psMetadataGetAndIncrement(iter2) == NULL,
+            "psMetadataGetAndIncrement:  return NULL for iterator with no list iterator.");
+        ok( psMetadataGetAndDecrement(iter2) == NULL,
+            "psMetadataGetAndDecrement:  return NULL for iterator with no list iterator.");
+    }
+    psFree(iter2);
+
+    //Return valid iterator for valid inputs, regex= NULL
+    psMetadataItem *item = NULL;
+    {
+        iter = psMetadataIteratorAlloc(md, PS_LIST_HEAD, NULL);
+        ok( iter != NULL,
+            "psMetadataIteratorAlloc:  return valid iterator for valid inputs, regex=NULL.");
+        skip_start(iter == NULL, 4,
+                   "Skipping 4 tests because psMetadataIteratorAlloc failed");
+
+        item = psMetadataGetAndIncrement(iter);
+        ok( item != NULL,
+            "psMetadataGetAndIncrement:  return valid item for valid iterator input.");
+        skip_start(item == NULL, 1,
+                   "Skipping 1 tests because psMetadataGetAndIncrement failed");
+        ok(item->type == PS_DATA_S32
+           && !strncmp(item->name, "S32_1", 7)
+           && item->data.S32 == 1
+           && !strncmp(item->comment, "", 2),
+           "psMetadataGetAndIncrement:  retrieve correct item from valid iterator.");
+        skip_end();
+
+        item = psMetadataGetAndDecrement(iter);
+        ok( item != NULL,
+            "psMetadataGetAndDecrement:  return valid item for valid iterator input.");
+        skip_start(item == NULL, 1,
+                   "Skipping 1 tests because psMetadataGetAndDecrement failed");
+        ok(item->type == PS_DATA_S32
+           && !strncmp(item->name, "S32_2", 7)
+           && item->data.S32 == 2
+           && !strncmp(item->comment, "", 2),
+           "psMetadataGetAndDecrement:  retrieve correct item from valid iterator.");
+        skip_end();
+
+        skip_end();
+
+    }
+
+    //Check for Memory leaks
+    {
+        psFree(iter);
+        psFree(md);
+        checkMem();
+    }
+}
+
+
Index: trunk/psLib/test/types/tap_psMetadata_printing.c
===================================================================
--- trunk/psLib/test/types/tap_psMetadata_printing.c	(revision 8416)
+++ trunk/psLib/test/types/tap_psMetadata_printing.c	(revision 8425)
@@ -1,2 +1,13 @@
+/**
+ *  C Implementation: tap_psMetadata_printing
+ *
+ * Description:  Tests for psMetadataPrint and psMetadataItemPrint.
+ *
+ *
+ * Author: dRob <David.Robbins@mhpcc.hpc.mil>, (C) 2006
+ *
+ * Copyright: See COPYING file that comes with this distribution
+ *
+ */
 
 #include <fcntl.h>
