Index: /trunk/psLib/test/astronomy/builddir/tst_psMetadata_05.d
===================================================================
--- /trunk/psLib/test/astronomy/builddir/tst_psMetadata_05.d	(revision 1444)
+++ /trunk/psLib/test/astronomy/builddir/tst_psMetadata_05.d	(revision 1444)
@@ -0,0 +1,15 @@
+builddir/tst_psMetadata_05.o: tst_psMetadata_05.c ../../include/pslib.h \
+  ../../include/psMemory.h ../../include/psLogMsg.h \
+  ../../include/psTrace.h ../../include/psAbort.h ../../include/psError.h \
+  ../../include/psString.h ../../include/psType.h ../../include/psList.h \
+  ../../include/psCompare.h ../../include/psArray.h \
+  ../../include/psHash.h ../../include/psScalar.h \
+  ../../include/psVector.h ../../include/psImage.h \
+  ../../include/psImageExtraction.h ../../include/psStats.h \
+  ../../include/psImageManip.h ../../include/psImageIO.h \
+  ../../include/psImageStats.h ../../include/psFunctions.h \
+  ../../include/psBitSet.h ../../include/psMatrix.h \
+  ../../include/psMatrixVectorArithmetic.h ../../include/psFFT.h \
+  ../../include/psMinimize.h ../../include/psCoord.h \
+  ../../include/psTime.h ../../include/psPhotometry.h \
+  ../../include/psMetadata.h ../../include/psTest.h
Index: /trunk/psLib/test/astronomy/tst_psMetadata_05.c
===================================================================
--- /trunk/psLib/test/astronomy/tst_psMetadata_05.c	(revision 1444)
+++ /trunk/psLib/test/astronomy/tst_psMetadata_05.c	(revision 1444)
@@ -0,0 +1,196 @@
+
+
+/** @file  tst_psMetadata_05.c
+*
+*  @brief Test driver for psMetadata functions
+*
+*  This test driver contains the following tests for psMetadata:
+*     Test A - Allocate metadata and items
+*     Test I - Free psMetadata
+*
+*  @author  Ross Harman, MHPCC
+*
+*  @version $Revision: 1.1 $  $Name: not supported by cvs2svn $
+*  @date  $Date: 2004-08-10 01:14:46 $
+*
+*  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
+*
+*/
+
+#include "pslib.h"
+#include "psTest.h"
+#include <string.h>
+
+static void printMetadataItem(psMetadataItem *item)
+{
+    printf("Key Name: %8s  ", item->name);
+    printf("Key Type: %2d  ", item->type);
+
+    switch (item->type ) {
+    case PS_META_BOOL:
+        printf("Key Value: %15d  ", item->data.B);
+        break;
+    case PS_META_S32:
+        printf("Key Value: %15d  ", item->data.S32);
+        break;
+    case PS_META_F32:
+        printf("Key Value: %15.3f  ", item->data.F32);
+        break;
+    case PS_META_F64:
+        printf("Key Value: %15.3f  ", item->data.F64);
+        break;
+    case PS_META_STR:
+        printf("Key Value: %15s  ", (char*)item->data.V);
+        break;
+    case PS_META_IMG:
+    case PS_META_JPEG:
+    case PS_META_PNG:
+    case PS_META_ASTROM:
+    case PS_META_UNKNOWN:
+        printf("Value: unknown ");
+        break;
+    default:
+        printf("Bad type: %d ", item->type);
+    }
+    printf("Key Comment: %s\n", item->comment);
+}
+
+
+int main( int argc, char* argv[] )
+{
+    psMetadataItem *item1 = NULL;
+    psMetadataItem *item2 = NULL;
+    psMetadataItem *item3 = NULL;
+    psMetadataItem *item4 = NULL;
+    psMetadataItem *item = NULL;
+    psMetadata *metadata = NULL;
+    FILE *fd = NULL;
+
+
+    // Test A - Allocate metadata and items
+    printPositiveTestHeader(stdout, "psMetadata", "Test A - Allocate metadata items");
+    metadata = psMetadataAlloc();
+    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);
+    printMetadataItem(item3);
+    printMetadataItem(item4);
+    psMetadataAddItem(metadata, PS_LIST_HEAD, item1);
+    psMetadataAddItem(metadata, PS_LIST_HEAD, item2);
+    psMetadataAddItem(metadata, PS_LIST_HEAD, item3);
+    psMetadataAddItem(metadata, PS_LIST_HEAD, item4);
+    printFooter(stdout, "psMetadata", "Test A - Allocate metadata items", true);
+
+
+    // Test B - Set iterator at second index
+    printPositiveTestHeader(stdout, "psMetadata", "Test B - Set iterator at second index");
+    psMetadataSetIterator(metadata, 2);
+    printFooter(stdout, "psMetadata", "Test B - Set iterator at second index", true);
+
+
+    // Test C - Get next item at index
+    printPositiveTestHeader(stdout, "psMetadata", "Test C - Get next item at index");
+    item = psMetadataGetNext(metadata, NULL, 2);
+    if(item == NULL) {
+        printf("ERROR: Item should not be null\n");
+    } else {
+        printf("Found item named %s\n", item->name);
+    }
+    printFooter(stdout, "psMetadata", "Test C - Get next item at index", true);
+
+
+    // Test D - Get next item at index and string
+    printPositiveTestHeader(stdout, "psMetadata", "Test D - Get next item at index and string");
+    item = psMetadataGetNext(metadata, "myItem1", 1);
+    if(item == NULL) {
+        printf("ERROR: Item should not be null\n");
+    } else {
+        printf("Found item named %s\n", item->name);
+    }
+    printFooter(stdout, "psMetadata", "Test D - Get next item at index and string", true);
+
+
+    // Test E - Get previous item at index
+    printPositiveTestHeader(stdout, "psMetadata", "Test E - Get previous item at index");
+    item = psMetadataGetPrevious(metadata, NULL, 1);
+    if(item == NULL) {
+        printf("ERROR: Item should not be null\n");
+    } else {
+        printf("Found item named %s\n", item->name);
+    }
+    printFooter(stdout, "psMetadata", "Test E - Get previous item at index", true);
+
+
+    // Test F - Write metadata item to file
+    printPositiveTestHeader(stdout, "psMetadata", "Test F - Write metadata item to file");
+    fd = fopen("./tst_psMetadata05_OUT", "w");
+    if(fd == NULL) {
+        printf("ERROR: Couldn't open file for writing\n");
+    }
+    psMetadataItemPrint(fd, "Item value: %ld", item2);
+    printFooter(stdout, "psMetadata", "Test F - Write metadata item to file", true);
+
+
+    // Test F - Attempt to use null metadata with setIterator
+    printNegativeTestHeader(stdout,"psMetadata", "Test F - Attempt to use null metadata with setIterator",
+                            "Null metadata collection not allowed", 0);
+    psMetadataSetIterator(NULL, 0);
+    printFooter(stdout, "psMetadata", "Test F - Attempt to use null metadata with setIterator", true);
+
+
+    // Test G - Attempt to use null metadata with getNext
+    printNegativeTestHeader(stdout,"psMetadata", "Test G - Attempt to use null metadata with getNext",
+                            "Null metadata collection not allowed", 0);
+    psMetadataGetNext(NULL, "myItem2", 0);
+    printFooter(stdout, "psMetadata", "Test G - Attempt to use null metadata with getNext", true);
+
+
+    // Test H - Attempt to use null metadata with getPrevious
+    printNegativeTestHeader(stdout,"psMetadata", "Test H - Attempt to use null metadata with getPrevious",
+                            "Null metadata collection not allowed", 0);
+    psMetadataGetPrevious(NULL, "myItem2", 0);
+    printFooter(stdout, "psMetadata", "Test H - Attempt to use null metadata with getPrevious", true);
+
+
+    // Test I - Attempt to use null file with itemPrint
+    printNegativeTestHeader(stdout,"psMetadata", "Test I - Attempt to use null file with itemPrint",
+                            "Null file descriptor not allowed", 0);
+    psMetadataItemPrint(NULL, "Item value: %ld", item2);
+    printFooter(stdout, "psMetadata", "Test I - Attempt to use null file with itemPrint", true);
+
+
+    // Test J - Attempt to use null format with itemPrint
+    printNegativeTestHeader(stdout,"psMetadata", "Test J - Attempt to use null format with itemPrint",
+                            "Null format not allowed", 0);
+    psMetadataItemPrint(fd, NULL, item2);
+    printFooter(stdout, "psMetadata", "Test J - Attempt to use null format with itemPrint", true);
+
+
+    // Test K - Attempt to use null item with itemPrint
+    printNegativeTestHeader(stdout,"psMetadata", "Test K - Attempt to use null item with itemPrint",
+                            "Null metadata not allowed", 0);
+    psMetadataItemPrint(fd, "Item value: %ld", NULL);
+    printFooter(stdout, "psMetadata", "Test K - Attempt to use null item with itemPrint", true);
+
+
+    // Test L - Free psMetadata
+    printPositiveTestHeader(stdout, "psMetadata", "Test I - Free psMetadata");
+    psFree(metadata);
+    psFree(item1);
+    psFree(item2);
+    psFree(item3);
+    psFree(item4);
+    psMemCheckLeaks(0, NULL, stdout);
+    psMemCheckCorruption(0);
+    int nBad = psMemCheckCorruption(0);
+    if(nBad) {
+        printf("ERROR: Found %d bad memory blocks\n", nBad);
+    }
+    printFooter(stdout, "psMetadata", "Test L - Free psMetadata", true);
+
+
+    return 0;
+}
Index: /trunk/psLib/test/astronomy/verified/tst_psMetadata_05.stderr
===================================================================
--- /trunk/psLib/test/astronomy/verified/tst_psMetadata_05.stderr	(revision 1444)
+++ /trunk/psLib/test/astronomy/verified/tst_psMetadata_05.stderr	(revision 1444)
@@ -0,0 +1,6 @@
+<DATE><TIME>|<HOST>|E|psMetadataSetIt|Null metadata collection not allowed
+<DATE><TIME>|<HOST>|E|psMetadataGetNe|Null metadata collection not allowed
+<DATE><TIME>|<HOST>|E|psMetadataGetPr|Null metadata collection not allowed
+<DATE><TIME>|<HOST>|E|psMetadataItemP|Null file descriptor not allowed
+<DATE><TIME>|<HOST>|E|psMetadataItemP|Null format not allowed
+<DATE><TIME>|<HOST>|E|psMetadataItemP|Null metadata not allowed
Index: /trunk/psLib/test/astronomy/verified/tst_psMetadata_05.stdout
===================================================================
--- /trunk/psLib/test/astronomy/verified/tst_psMetadata_05.stdout	(revision 1444)
+++ /trunk/psLib/test/astronomy/verified/tst_psMetadata_05.stdout	(revision 1444)
@@ -0,0 +1,136 @@
+/***************************** TESTPOINT ******************************************\
+*             TestFile: tst_psMetadata_05.c                                        *
+*            TestPoint: psMetadata{Test A - Allocate metadata items}               *
+*             TestType: Positive                                                   *
+\**********************************************************************************/
+
+Key Name:  myItem1  Key Type:  1  Key Value:               1  Key Comment: I am a boolean
+Key Name:  myItem2  Key Type:  2  Key Value:              55  Key Comment: I am a integer
+Key Name:  myItem3  Key Type:  1  Key Value:               0  Key Comment: I am a boolean
+Key Name:  myItem4  Key Type:  2  Key Value:              66  Key Comment: I am a integer
+
+---> TESTPOINT PASSED (psMetadata{Test A - Allocate metadata items} | tst_psMetadata_05.c)
+
+/***************************** TESTPOINT ******************************************\
+*             TestFile: tst_psMetadata_05.c                                        *
+*            TestPoint: psMetadata{Test B - Set iterator at second index}          *
+*             TestType: Positive                                                   *
+\**********************************************************************************/
+
+
+---> TESTPOINT PASSED (psMetadata{Test B - Set iterator at second index} | tst_psMetadata_05.c)
+
+/***************************** TESTPOINT ******************************************\
+*             TestFile: tst_psMetadata_05.c                                        *
+*            TestPoint: psMetadata{Test C - Get next item at index}                *
+*             TestType: Positive                                                   *
+\**********************************************************************************/
+
+Found item named myItem1
+
+---> TESTPOINT PASSED (psMetadata{Test C - Get next item at index} | tst_psMetadata_05.c)
+
+/***************************** TESTPOINT ******************************************\
+*             TestFile: tst_psMetadata_05.c                                        *
+*            TestPoint: psMetadata{Test D - Get next item at index and string}     *
+*             TestType: Positive                                                   *
+\**********************************************************************************/
+
+Found item named myItem1
+
+---> TESTPOINT PASSED (psMetadata{Test D - Get next item at index and string} | tst_psMetadata_05.c)
+
+/***************************** TESTPOINT ******************************************\
+*             TestFile: tst_psMetadata_05.c                                        *
+*            TestPoint: psMetadata{Test E - Get previous item at index}            *
+*             TestType: Positive                                                   *
+\**********************************************************************************/
+
+Found item named myItem4
+
+---> TESTPOINT PASSED (psMetadata{Test E - Get previous item at index} | tst_psMetadata_05.c)
+
+/***************************** TESTPOINT ******************************************\
+*             TestFile: tst_psMetadata_05.c                                        *
+*            TestPoint: psMetadata{Test F - Write metadata item to file}           *
+*             TestType: Positive                                                   *
+\**********************************************************************************/
+
+
+---> TESTPOINT PASSED (psMetadata{Test F - Write metadata item to file} | tst_psMetadata_05.c)
+
+/***************************** TESTPOINT ******************************************\
+*             TestFile: tst_psMetadata_05.c                                        *
+*            TestPoint: psMetadata{Test F - Attempt to use null metadata with setIterator} *
+*             TestType: Negative                                                   *
+*    ExpectedErrorText: Null metadata collection not allowed                       *
+*  ExpectedStatusValue: 0                                                          *
+\**********************************************************************************/
+
+
+---> TESTPOINT PASSED (psMetadata{Test F - Attempt to use null metadata with setIterator} | tst_psMetadata_05.c)
+
+/***************************** TESTPOINT ******************************************\
+*             TestFile: tst_psMetadata_05.c                                        *
+*            TestPoint: psMetadata{Test G - Attempt to use null metadata with getNext} *
+*             TestType: Negative                                                   *
+*    ExpectedErrorText: Null metadata collection not allowed                       *
+*  ExpectedStatusValue: 0                                                          *
+\**********************************************************************************/
+
+
+---> TESTPOINT PASSED (psMetadata{Test G - Attempt to use null metadata with getNext} | tst_psMetadata_05.c)
+
+/***************************** TESTPOINT ******************************************\
+*             TestFile: tst_psMetadata_05.c                                        *
+*            TestPoint: psMetadata{Test H - Attempt to use null metadata with getPrevious} *
+*             TestType: Negative                                                   *
+*    ExpectedErrorText: Null metadata collection not allowed                       *
+*  ExpectedStatusValue: 0                                                          *
+\**********************************************************************************/
+
+
+---> TESTPOINT PASSED (psMetadata{Test H - Attempt to use null metadata with getPrevious} | tst_psMetadata_05.c)
+
+/***************************** TESTPOINT ******************************************\
+*             TestFile: tst_psMetadata_05.c                                        *
+*            TestPoint: psMetadata{Test I - Attempt to use null file with itemPrint} *
+*             TestType: Negative                                                   *
+*    ExpectedErrorText: Null file descriptor not allowed                           *
+*  ExpectedStatusValue: 0                                                          *
+\**********************************************************************************/
+
+
+---> TESTPOINT PASSED (psMetadata{Test I - Attempt to use null file with itemPrint} | tst_psMetadata_05.c)
+
+/***************************** TESTPOINT ******************************************\
+*             TestFile: tst_psMetadata_05.c                                        *
+*            TestPoint: psMetadata{Test J - Attempt to use null format with itemPrint} *
+*             TestType: Negative                                                   *
+*    ExpectedErrorText: Null format not allowed                                    *
+*  ExpectedStatusValue: 0                                                          *
+\**********************************************************************************/
+
+
+---> TESTPOINT PASSED (psMetadata{Test J - Attempt to use null format with itemPrint} | tst_psMetadata_05.c)
+
+/***************************** TESTPOINT ******************************************\
+*             TestFile: tst_psMetadata_05.c                                        *
+*            TestPoint: psMetadata{Test K - Attempt to use null item with itemPrint} *
+*             TestType: Negative                                                   *
+*    ExpectedErrorText: Null metadata not allowed                                  *
+*  ExpectedStatusValue: 0                                                          *
+\**********************************************************************************/
+
+
+---> TESTPOINT PASSED (psMetadata{Test K - Attempt to use null item with itemPrint} | tst_psMetadata_05.c)
+
+/***************************** TESTPOINT ******************************************\
+*             TestFile: tst_psMetadata_05.c                                        *
+*            TestPoint: psMetadata{Test I - Free psMetadata}                       *
+*             TestType: Positive                                                   *
+\**********************************************************************************/
+
+
+---> TESTPOINT PASSED (psMetadata{Test L - Free psMetadata} | tst_psMetadata_05.c)
+
Index: /trunk/psLib/test/collections/tst_psMetadata_05.c
===================================================================
--- /trunk/psLib/test/collections/tst_psMetadata_05.c	(revision 1444)
+++ /trunk/psLib/test/collections/tst_psMetadata_05.c	(revision 1444)
@@ -0,0 +1,196 @@
+
+
+/** @file  tst_psMetadata_05.c
+*
+*  @brief Test driver for psMetadata functions
+*
+*  This test driver contains the following tests for psMetadata:
+*     Test A - Allocate metadata and items
+*     Test I - Free psMetadata
+*
+*  @author  Ross Harman, MHPCC
+*
+*  @version $Revision: 1.1 $  $Name: not supported by cvs2svn $
+*  @date  $Date: 2004-08-10 01:14:46 $
+*
+*  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
+*
+*/
+
+#include "pslib.h"
+#include "psTest.h"
+#include <string.h>
+
+static void printMetadataItem(psMetadataItem *item)
+{
+    printf("Key Name: %8s  ", item->name);
+    printf("Key Type: %2d  ", item->type);
+
+    switch (item->type ) {
+    case PS_META_BOOL:
+        printf("Key Value: %15d  ", item->data.B);
+        break;
+    case PS_META_S32:
+        printf("Key Value: %15d  ", item->data.S32);
+        break;
+    case PS_META_F32:
+        printf("Key Value: %15.3f  ", item->data.F32);
+        break;
+    case PS_META_F64:
+        printf("Key Value: %15.3f  ", item->data.F64);
+        break;
+    case PS_META_STR:
+        printf("Key Value: %15s  ", (char*)item->data.V);
+        break;
+    case PS_META_IMG:
+    case PS_META_JPEG:
+    case PS_META_PNG:
+    case PS_META_ASTROM:
+    case PS_META_UNKNOWN:
+        printf("Value: unknown ");
+        break;
+    default:
+        printf("Bad type: %d ", item->type);
+    }
+    printf("Key Comment: %s\n", item->comment);
+}
+
+
+int main( int argc, char* argv[] )
+{
+    psMetadataItem *item1 = NULL;
+    psMetadataItem *item2 = NULL;
+    psMetadataItem *item3 = NULL;
+    psMetadataItem *item4 = NULL;
+    psMetadataItem *item = NULL;
+    psMetadata *metadata = NULL;
+    FILE *fd = NULL;
+
+
+    // Test A - Allocate metadata and items
+    printPositiveTestHeader(stdout, "psMetadata", "Test A - Allocate metadata items");
+    metadata = psMetadataAlloc();
+    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);
+    printMetadataItem(item3);
+    printMetadataItem(item4);
+    psMetadataAddItem(metadata, PS_LIST_HEAD, item1);
+    psMetadataAddItem(metadata, PS_LIST_HEAD, item2);
+    psMetadataAddItem(metadata, PS_LIST_HEAD, item3);
+    psMetadataAddItem(metadata, PS_LIST_HEAD, item4);
+    printFooter(stdout, "psMetadata", "Test A - Allocate metadata items", true);
+
+
+    // Test B - Set iterator at second index
+    printPositiveTestHeader(stdout, "psMetadata", "Test B - Set iterator at second index");
+    psMetadataSetIterator(metadata, 2);
+    printFooter(stdout, "psMetadata", "Test B - Set iterator at second index", true);
+
+
+    // Test C - Get next item at index
+    printPositiveTestHeader(stdout, "psMetadata", "Test C - Get next item at index");
+    item = psMetadataGetNext(metadata, NULL, 2);
+    if(item == NULL) {
+        printf("ERROR: Item should not be null\n");
+    } else {
+        printf("Found item named %s\n", item->name);
+    }
+    printFooter(stdout, "psMetadata", "Test C - Get next item at index", true);
+
+
+    // Test D - Get next item at index and string
+    printPositiveTestHeader(stdout, "psMetadata", "Test D - Get next item at index and string");
+    item = psMetadataGetNext(metadata, "myItem1", 1);
+    if(item == NULL) {
+        printf("ERROR: Item should not be null\n");
+    } else {
+        printf("Found item named %s\n", item->name);
+    }
+    printFooter(stdout, "psMetadata", "Test D - Get next item at index and string", true);
+
+
+    // Test E - Get previous item at index
+    printPositiveTestHeader(stdout, "psMetadata", "Test E - Get previous item at index");
+    item = psMetadataGetPrevious(metadata, NULL, 1);
+    if(item == NULL) {
+        printf("ERROR: Item should not be null\n");
+    } else {
+        printf("Found item named %s\n", item->name);
+    }
+    printFooter(stdout, "psMetadata", "Test E - Get previous item at index", true);
+
+
+    // Test F - Write metadata item to file
+    printPositiveTestHeader(stdout, "psMetadata", "Test F - Write metadata item to file");
+    fd = fopen("./tst_psMetadata05_OUT", "w");
+    if(fd == NULL) {
+        printf("ERROR: Couldn't open file for writing\n");
+    }
+    psMetadataItemPrint(fd, "Item value: %ld", item2);
+    printFooter(stdout, "psMetadata", "Test F - Write metadata item to file", true);
+
+
+    // Test F - Attempt to use null metadata with setIterator
+    printNegativeTestHeader(stdout,"psMetadata", "Test F - Attempt to use null metadata with setIterator",
+                            "Null metadata collection not allowed", 0);
+    psMetadataSetIterator(NULL, 0);
+    printFooter(stdout, "psMetadata", "Test F - Attempt to use null metadata with setIterator", true);
+
+
+    // Test G - Attempt to use null metadata with getNext
+    printNegativeTestHeader(stdout,"psMetadata", "Test G - Attempt to use null metadata with getNext",
+                            "Null metadata collection not allowed", 0);
+    psMetadataGetNext(NULL, "myItem2", 0);
+    printFooter(stdout, "psMetadata", "Test G - Attempt to use null metadata with getNext", true);
+
+
+    // Test H - Attempt to use null metadata with getPrevious
+    printNegativeTestHeader(stdout,"psMetadata", "Test H - Attempt to use null metadata with getPrevious",
+                            "Null metadata collection not allowed", 0);
+    psMetadataGetPrevious(NULL, "myItem2", 0);
+    printFooter(stdout, "psMetadata", "Test H - Attempt to use null metadata with getPrevious", true);
+
+
+    // Test I - Attempt to use null file with itemPrint
+    printNegativeTestHeader(stdout,"psMetadata", "Test I - Attempt to use null file with itemPrint",
+                            "Null file descriptor not allowed", 0);
+    psMetadataItemPrint(NULL, "Item value: %ld", item2);
+    printFooter(stdout, "psMetadata", "Test I - Attempt to use null file with itemPrint", true);
+
+
+    // Test J - Attempt to use null format with itemPrint
+    printNegativeTestHeader(stdout,"psMetadata", "Test J - Attempt to use null format with itemPrint",
+                            "Null format not allowed", 0);
+    psMetadataItemPrint(fd, NULL, item2);
+    printFooter(stdout, "psMetadata", "Test J - Attempt to use null format with itemPrint", true);
+
+
+    // Test K - Attempt to use null item with itemPrint
+    printNegativeTestHeader(stdout,"psMetadata", "Test K - Attempt to use null item with itemPrint",
+                            "Null metadata not allowed", 0);
+    psMetadataItemPrint(fd, "Item value: %ld", NULL);
+    printFooter(stdout, "psMetadata", "Test K - Attempt to use null item with itemPrint", true);
+
+
+    // Test L - Free psMetadata
+    printPositiveTestHeader(stdout, "psMetadata", "Test I - Free psMetadata");
+    psFree(metadata);
+    psFree(item1);
+    psFree(item2);
+    psFree(item3);
+    psFree(item4);
+    psMemCheckLeaks(0, NULL, stdout);
+    psMemCheckCorruption(0);
+    int nBad = psMemCheckCorruption(0);
+    if(nBad) {
+        printf("ERROR: Found %d bad memory blocks\n", nBad);
+    }
+    printFooter(stdout, "psMetadata", "Test L - Free psMetadata", true);
+
+
+    return 0;
+}
