Index: /trunk/psLib/src/astronomy/psMetadata.c
===================================================================
--- /trunk/psLib/src/astronomy/psMetadata.c	(revision 1415)
+++ /trunk/psLib/src/astronomy/psMetadata.c	(revision 1416)
@@ -12,6 +12,6 @@
 *  @author Ross Harman, MHPCC
 *
-*  @version $Revision: 1.15 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2004-08-07 00:06:06 $
+*  @version $Revision: 1.16 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2004-08-09 19:30:44 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -347,4 +347,10 @@
     psMetadataItem *entryChild = NULL;
 
+
+    if (md == NULL) {
+        psError(__func__, "Null metadata collection not allowed");
+        return false;
+    }
+
     mdList = md->list;
     if (mdList == NULL) {
@@ -364,5 +370,5 @@
         entry = (psMetadataItem *) psHashLookup(mdTable, key);
         if (entry == NULL) {
-            psError(__func__, "Couldn't find metadata item remove. Name: %s", key);
+            psError(__func__, "Couldn't find metadata item. Name: %s", key);
             return false;
         }
@@ -397,5 +403,5 @@
         entry = psListGet(mdList, where);
         if (entry == NULL) {
-            psError(__func__, "Couldn't find metadata item from list. Index: %d", where);
+            psError(__func__, "Couldn't find metadata item in list. Index: %d", where);
             return false;
         }
Index: /trunk/psLib/src/collections/psMetadata.c
===================================================================
--- /trunk/psLib/src/collections/psMetadata.c	(revision 1415)
+++ /trunk/psLib/src/collections/psMetadata.c	(revision 1416)
@@ -12,6 +12,6 @@
 *  @author Ross Harman, MHPCC
 *
-*  @version $Revision: 1.15 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2004-08-07 00:06:06 $
+*  @version $Revision: 1.16 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2004-08-09 19:30:44 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -347,4 +347,10 @@
     psMetadataItem *entryChild = NULL;
 
+
+    if (md == NULL) {
+        psError(__func__, "Null metadata collection not allowed");
+        return false;
+    }
+
     mdList = md->list;
     if (mdList == NULL) {
@@ -364,5 +370,5 @@
         entry = (psMetadataItem *) psHashLookup(mdTable, key);
         if (entry == NULL) {
-            psError(__func__, "Couldn't find metadata item remove. Name: %s", key);
+            psError(__func__, "Couldn't find metadata item. Name: %s", key);
             return false;
         }
@@ -397,5 +403,5 @@
         entry = psListGet(mdList, where);
         if (entry == NULL) {
-            psError(__func__, "Couldn't find metadata item from list. Index: %d", where);
+            psError(__func__, "Couldn't find metadata item in list. Index: %d", where);
             return false;
         }
Index: /trunk/psLib/src/types/psMetadata.c
===================================================================
--- /trunk/psLib/src/types/psMetadata.c	(revision 1415)
+++ /trunk/psLib/src/types/psMetadata.c	(revision 1416)
@@ -12,6 +12,6 @@
 *  @author Ross Harman, MHPCC
 *
-*  @version $Revision: 1.15 $ $Name: not supported by cvs2svn $
-*  @date $Date: 2004-08-07 00:06:06 $
+*  @version $Revision: 1.16 $ $Name: not supported by cvs2svn $
+*  @date $Date: 2004-08-09 19:30:44 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -347,4 +347,10 @@
     psMetadataItem *entryChild = NULL;
 
+
+    if (md == NULL) {
+        psError(__func__, "Null metadata collection not allowed");
+        return false;
+    }
+
     mdList = md->list;
     if (mdList == NULL) {
@@ -364,5 +370,5 @@
         entry = (psMetadataItem *) psHashLookup(mdTable, key);
         if (entry == NULL) {
-            psError(__func__, "Couldn't find metadata item remove. Name: %s", key);
+            psError(__func__, "Couldn't find metadata item. Name: %s", key);
             return false;
         }
@@ -397,5 +403,5 @@
         entry = psListGet(mdList, where);
         if (entry == NULL) {
-            psError(__func__, "Couldn't find metadata item from list. Index: %d", where);
+            psError(__func__, "Couldn't find metadata item in list. Index: %d", where);
             return false;
         }
Index: /trunk/psLib/test/astronomy/tst_psMetadata_03.c
===================================================================
--- /trunk/psLib/test/astronomy/tst_psMetadata_03.c	(revision 1415)
+++ /trunk/psLib/test/astronomy/tst_psMetadata_03.c	(revision 1416)
@@ -5,16 +5,15 @@
 *  This test driver contains the following tests for psMetadata:
 *     Test A - Allocate metadata and items
-*     Test B -
-*     Test C -
-*     Test D -
-*     Test E -
-*     Test F -
-*     Test G -
-*     Test H - Free psMetadata
-*
+*     Test B - Remove items from metadata by name
+*     Test C - Remove items from metadata by index
+*     Test D - Attempt to use null metadata
+*     Test E - Attempt to remove non-existant metadata item by name
+*     Test F - Attempt to remove non-existant metadata item by index
+*     Test G - Free psMetadata
+ *
 *  @author  Ross Harman, MHPCC
 *
-*  @version $Revision: 1.1 $  $Name: not supported by cvs2svn $
-*  @date  $Date: 2004-08-07 00:16:21 $
+*  @version $Revision: 1.2 $  $Name: not supported by cvs2svn $
+*  @date  $Date: 2004-08-09 19:31:00 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -65,4 +64,6 @@
     psMetadataItem *item1 = NULL;
     psMetadataItem *item2 = NULL;
+    psMetadataItem *item3 = NULL;
+    psMetadataItem *item4 = NULL;
     psMetadata *metadata = NULL;
 
@@ -73,20 +74,54 @@
     item1 = psMetadataItemAlloc("myItem1", PS_META_BOOL, "I am a boolean", true);
     item2 = psMetadataItemAlloc("myItem2", PS_META_S32, "I am a integer", 55);
+    item3 = psMetadataItemAlloc("myItem3", PS_META_BOOL, "I am a boolean", false);
+    item4 = psMetadataItemAlloc("myItem4", PS_META_S32, "I am a integer", 66);
     printMetadataItem(item1);
     printMetadataItem(item2);
-    printf("References = %d\n", (int)(((psMemBlock*)item1)-1)->refCounter);
-    psMetadataAddItem(metadata, PS_LIST_HEAD, item1);
-    psMetadataAddItem(metadata, PS_LIST_HEAD, item2);
+    printMetadataItem(item3);
+    printMetadataItem(item4);
     printFooter(stdout, "psMetadata", "Test A - Allocate metadata items", true);
-    printf("References = %d\n", (int)(((psMemBlock*)item1)-1)->refCounter);
 
 
     // Test B - Remove items from metadata by name
+    printPositiveTestHeader(stdout, "psMetadata", "Test B - Remove items from metadata by name");
+    psMetadataAddItem(metadata, PS_LIST_HEAD, item1);
+    psMetadataAddItem(metadata, PS_LIST_HEAD, item2);
     psMetadataRemove(metadata, 0, "myItem1" );
     psMetadataRemove(metadata, 0, "myItem2" );
+    printFooter(stdout, "psMetadata", "Test B - Remove items from metadata by name", true);
 
 
-    // Test C - Free psMetadata
-    printPositiveTestHeader(stdout, "psMetadata", "Test - Free psMetadata");
+    // Test C - Remove items from metadata by index
+    printPositiveTestHeader(stdout, "psMetadata", "Test C - Remove items from metadata by index");
+    psMetadataAddItem(metadata, PS_LIST_HEAD, item3);
+    psMetadataAddItem(metadata, PS_LIST_HEAD, item4);
+    psMetadataRemove(metadata, 0, NULL);
+    psMetadataRemove(metadata, 0, NULL );
+    printFooter(stdout, "psMetadata", "Test C - Remove items from metadata by index", true);
+
+
+    // Test D - Attempt to use null metadata
+    printNegativeTestHeader(stdout,"psMetadata", "Test D - Attempt to use null metadata",
+                            "Null metadata collection not allowed", 0);
+    psMetadataRemove(NULL, 0, NULL);
+    printFooter(stdout, "psMetadata", "Test D - Attempt to use null metadata", true);
+
+
+    // Test E - Attempt to remove non-existant metadata item by name
+    printNegativeTestHeader(stdout,"psMetadata", "Test E - Attempt to remove non-existant metadata item by name",
+                            "Couldn't find metadata item. Name: AARGH", 0);
+    psMetadataRemove(metadata, 0, "AARGH");
+    printFooter(stdout, "psMetadata", "Test E - Attempt to remove non-existant metadata item by name", true);
+
+
+    // Test F - Attempt to remove non-existant metadata item by index
+    printNegativeTestHeader(stdout,"psMetadata", "Test E - Attempt to remove non-existant metadata item by index",
+                            "Couldn't find metadata item in list. Index: 22", 0);
+    psMetadataRemove(metadata, 22, NULL);
+    printFooter(stdout, "psMetadata", "Test E - Attempt to remove non-existant metadata item by index", true);
+
+
+    // Test G - Free psMetadata
+    printPositiveTestHeader(stdout, "psMetadata", "Test G - Free psMetadata");
     psFree(metadata);
     psMemCheckLeaks(0, NULL, stdout);
@@ -96,5 +131,6 @@
         printf("ERROR: Found %d bad memory blocks\n", nBad);
     }
-    printFooter(stdout, "psMetadata", "Test - Free psMetadata", true);
+    printFooter(stdout, "psMetadata", "Test G - Free psMetadata", true);
+
 
     return 0;
Index: /trunk/psLib/test/collections/tst_psMetadata_03.c
===================================================================
--- /trunk/psLib/test/collections/tst_psMetadata_03.c	(revision 1415)
+++ /trunk/psLib/test/collections/tst_psMetadata_03.c	(revision 1416)
@@ -5,16 +5,15 @@
 *  This test driver contains the following tests for psMetadata:
 *     Test A - Allocate metadata and items
-*     Test B -
-*     Test C -
-*     Test D -
-*     Test E -
-*     Test F -
-*     Test G -
-*     Test H - Free psMetadata
-*
+*     Test B - Remove items from metadata by name
+*     Test C - Remove items from metadata by index
+*     Test D - Attempt to use null metadata
+*     Test E - Attempt to remove non-existant metadata item by name
+*     Test F - Attempt to remove non-existant metadata item by index
+*     Test G - Free psMetadata
+ *
 *  @author  Ross Harman, MHPCC
 *
-*  @version $Revision: 1.1 $  $Name: not supported by cvs2svn $
-*  @date  $Date: 2004-08-07 00:16:21 $
+*  @version $Revision: 1.2 $  $Name: not supported by cvs2svn $
+*  @date  $Date: 2004-08-09 19:31:00 $
 *
 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -65,4 +64,6 @@
     psMetadataItem *item1 = NULL;
     psMetadataItem *item2 = NULL;
+    psMetadataItem *item3 = NULL;
+    psMetadataItem *item4 = NULL;
     psMetadata *metadata = NULL;
 
@@ -73,20 +74,54 @@
     item1 = psMetadataItemAlloc("myItem1", PS_META_BOOL, "I am a boolean", true);
     item2 = psMetadataItemAlloc("myItem2", PS_META_S32, "I am a integer", 55);
+    item3 = psMetadataItemAlloc("myItem3", PS_META_BOOL, "I am a boolean", false);
+    item4 = psMetadataItemAlloc("myItem4", PS_META_S32, "I am a integer", 66);
     printMetadataItem(item1);
     printMetadataItem(item2);
-    printf("References = %d\n", (int)(((psMemBlock*)item1)-1)->refCounter);
-    psMetadataAddItem(metadata, PS_LIST_HEAD, item1);
-    psMetadataAddItem(metadata, PS_LIST_HEAD, item2);
+    printMetadataItem(item3);
+    printMetadataItem(item4);
     printFooter(stdout, "psMetadata", "Test A - Allocate metadata items", true);
-    printf("References = %d\n", (int)(((psMemBlock*)item1)-1)->refCounter);
 
 
     // Test B - Remove items from metadata by name
+    printPositiveTestHeader(stdout, "psMetadata", "Test B - Remove items from metadata by name");
+    psMetadataAddItem(metadata, PS_LIST_HEAD, item1);
+    psMetadataAddItem(metadata, PS_LIST_HEAD, item2);
     psMetadataRemove(metadata, 0, "myItem1" );
     psMetadataRemove(metadata, 0, "myItem2" );
+    printFooter(stdout, "psMetadata", "Test B - Remove items from metadata by name", true);
 
 
-    // Test C - Free psMetadata
-    printPositiveTestHeader(stdout, "psMetadata", "Test - Free psMetadata");
+    // Test C - Remove items from metadata by index
+    printPositiveTestHeader(stdout, "psMetadata", "Test C - Remove items from metadata by index");
+    psMetadataAddItem(metadata, PS_LIST_HEAD, item3);
+    psMetadataAddItem(metadata, PS_LIST_HEAD, item4);
+    psMetadataRemove(metadata, 0, NULL);
+    psMetadataRemove(metadata, 0, NULL );
+    printFooter(stdout, "psMetadata", "Test C - Remove items from metadata by index", true);
+
+
+    // Test D - Attempt to use null metadata
+    printNegativeTestHeader(stdout,"psMetadata", "Test D - Attempt to use null metadata",
+                            "Null metadata collection not allowed", 0);
+    psMetadataRemove(NULL, 0, NULL);
+    printFooter(stdout, "psMetadata", "Test D - Attempt to use null metadata", true);
+
+
+    // Test E - Attempt to remove non-existant metadata item by name
+    printNegativeTestHeader(stdout,"psMetadata", "Test E - Attempt to remove non-existant metadata item by name",
+                            "Couldn't find metadata item. Name: AARGH", 0);
+    psMetadataRemove(metadata, 0, "AARGH");
+    printFooter(stdout, "psMetadata", "Test E - Attempt to remove non-existant metadata item by name", true);
+
+
+    // Test F - Attempt to remove non-existant metadata item by index
+    printNegativeTestHeader(stdout,"psMetadata", "Test E - Attempt to remove non-existant metadata item by index",
+                            "Couldn't find metadata item in list. Index: 22", 0);
+    psMetadataRemove(metadata, 22, NULL);
+    printFooter(stdout, "psMetadata", "Test E - Attempt to remove non-existant metadata item by index", true);
+
+
+    // Test G - Free psMetadata
+    printPositiveTestHeader(stdout, "psMetadata", "Test G - Free psMetadata");
     psFree(metadata);
     psMemCheckLeaks(0, NULL, stdout);
@@ -96,5 +131,6 @@
         printf("ERROR: Found %d bad memory blocks\n", nBad);
     }
-    printFooter(stdout, "psMetadata", "Test - Free psMetadata", true);
+    printFooter(stdout, "psMetadata", "Test G - Free psMetadata", true);
+
 
     return 0;
