IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 7368


Ignore:
Timestamp:
Jun 6, 2006, 12:54:22 PM (20 years ago)
Author:
drobbin
Message:

Added test for psMetadataItemCopy. Removed commented, obsolete code from tst_01 (was psMetadataReadHeader tests, fxn scrapped).

Location:
trunk/psLib
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/psLib/src/types/psMetadata.c

    r7203 r7368  
    1212 *  @author Ross Harman, MHPCC
    1313 *
    14  *  @version $Revision: 1.106 $ $Name: not supported by cvs2svn $
    15  *  @date $Date: 2006-05-25 03:53:46 $
     14 *  @version $Revision: 1.107 $ $Name: not supported by cvs2svn $
     15 *  @date $Date: 2006-06-06 22:54:22 $
    1616 *
    1717 *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    343343
    344344
    345 psMetadataItem *psMetadataItemCopy(const psMetadataItem *in
    346                                   )
     345psMetadataItem *psMetadataItemCopy(const psMetadataItem *in)
    347346{
    348347    PS_ASSERT_PTR_NON_NULL(in,NULL);
  • trunk/psLib/src/types/psMetadata.h

    r6874 r7368  
    1111*  @author Ross Harman, MHPCC
    1212*
    13 *  @version $Revision: 1.75 $ $Name: not supported by cvs2svn $
    14 *  @date $Date: 2006-04-17 22:00:03 $
     13*  @version $Revision: 1.76 $ $Name: not supported by cvs2svn $
     14*  @date $Date: 2006-06-06 22:54:22 $
    1515*
    1616*  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    204204    const char* name,                  ///< Name of metadata item.
    205205    const char* comment,               ///< Comment for metadata item.
    206     psS8 value                        ///< the value of the metadata item.
     206    psS8 value                         ///< the value of the metadata item.
    207207);
    208208
     
    243243    const char* name,                  ///< Name of metadata item.
    244244    const char* comment,               ///< Comment for metadata item.
    245     psU8 value                        ///< the value of the metadata item.
     245    psU8 value                         ///< the value of the metadata item.
    246246);
    247247
     
    347347 * @return psMetadataItem*: the copy of the psMetadataItem
    348348 */
    349 psMetadataItem *psMetadataItemCopy(const psMetadataItem *in ///< metadata item to be copied
    350                                   );
    351 
     349psMetadataItem *psMetadataItemCopy(
     350    const psMetadataItem *in           ///< metadata item to be copied
     351);
    352352
    353353/** Creates a new copy of all the psMetadataItems in the psMetadata collection, in, and
     
    417417    int format,                        ///< psMetadataFlag options/flags
    418418    const char* comment,               ///< Comment for metadata item
    419     bool value                       ///< Value for metadata item data
     419    bool value                         ///< Value for metadata item data
    420420);
    421421
     
    430430    int format,                        ///< psMetadataFlag options/flags
    431431    const char* comment,               ///< Comment for metadata item
    432     psS8 value                        ///< Value for metadata item data
     432    psS8 value                         ///< Value for metadata item data
    433433);
    434434
     
    469469    int format,                        ///< psMetadataFlag options/flags
    470470    const char* comment,               ///< Comment for metadata item
    471     psU8 value                        ///< Value for metadata item data
     471    psU8 value                         ///< Value for metadata item data
    472472);
    473473
     
    504504bool psMetadataAddF32(
    505505    psMetadata* md,                    ///< Metadata collection to insert metadata item
    506     long location,                    ///< Index number, PS_LIST_HEAD, or PS_LIST_TAIL
     506    long location,                     ///< Index number, PS_LIST_HEAD, or PS_LIST_TAIL
    507507    const char* name,                  ///< Name of metadata item
    508508    int format,                        ///< psMetadataFlag options/flags
  • trunk/psLib/test/types/tst_psMetadata_01.c

    r7267 r7368  
    1818*  @author  Ross Harman, MHPCC
    1919*
    20 *  @version $Revision: 1.4 $  $Name: not supported by cvs2svn $
    21 *  @date  $Date: 2006-06-01 21:59:05 $
     20*  @version $Revision: 1.5 $  $Name: not supported by cvs2svn $
     21*  @date  $Date: 2006-06-06 22:54:22 $
    2222*
    2323*  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
     
    2828#include "pslib_strict.h"
    2929#include "psTest.h"
    30 /*
    31 static void printMetadataItem(psMetadataItem *metadataItem, char *spaces);
    32 static void printMetadata(psMetadata *metadata);
    33 static void printMetadataList(psList *metadataItemList, char* spaces);
    34 static void printMetadataTable(psHash *mdTable);
    35  
    36 static void printMetadata(psMetadata *metadata)
     30
     31static psS32 testMetadataItemCopy(void);
     32
     33testDescription tests[] = {
     34                              {testMetadataItemCopy, 666, "psMetadataItemCopy()", 0, false},
     35                              {NULL}
     36                          };
     37
     38psS32 main( psS32 argc, char* argv[] )
    3739{
    38     printf("Contents of metadata list:\n");
    39     printMetadataList(metadata->list, " ");
    40     printf("\nContents of metadata table:\n");
    41     printMetadataTable(metadata->hash);
     40    psLogSetLevel( PS_LOG_INFO );
     41
     42    return ( !runTestSuite(stderr,"psMetadata_01",tests,argc,argv) );
     43
    4244}
    43  
    44 static void printMetadataList(psList *metadataItemList, char* spaces)
     45
     46psS32 testMetadataItemCopy(void)
    4547{
    46     psMetadataItem *entryChild = NULL;
    47  
    48     psListIterator* iter = psListIteratorAlloc(metadataItemList, PS_LIST_HEAD, true);
    49  
    50     while ( (entryChild=psListGetAndIncrement(iter)) != NULL) {
    51         printMetadataItem(entryChild, spaces);
     48    psMetadataItem *item = psMetadataItemAlloc("metaITEM", PS_DATA_S32, "no Comment");
     49    item->data.S32 = 666;
     50    psMetadataItem *item2 = NULL;
     51
     52    psLogMsg(__func__,PS_LOG_INFO,"Following should generate error message");
     53    item2 = psMetadataItemCopy(NULL);
     54    if (item2 != NULL) {
     55        psError(PS_ERR_BAD_PARAMETER_NULL, false,
     56                "psMetadataItemCopy failed to return NULL for NULL input psMetadataItem.\n");
     57        return 1;
    5258    }
    53  
    54     psFree(iter);
    55  
    56 }
    57  
    58 static void printMetadataTable(psHash *mdTable)
    59 {
    60     psS32 i;
    61     psHashBucket* ptr = NULL;
    62     for(i=0; i<mdTable->n; i++) {
    63         ptr = mdTable->buckets[i];
    64         while (ptr != NULL) {
    65             printMetadataItem(ptr->data, " ");
    66             ptr = ptr->next;
    67         }
     59
     60    //Simple copy of psS32 data
     61    item2 = psMetadataItemCopy(item);
     62    if (item2 == NULL) {
     63        psError(PS_ERR_BAD_PARAMETER_NULL, false,
     64                "psMetadataItemCopy incorrectly returned NULL for valid input psMetadataItem.\n");
     65        return 2;
    6866    }
    69 }
    70  
    71 static void printMetadataItem(psMetadataItem *metadataItem, char *spaces)
    72 {
    73     printf("%sKey Name: %8s  ", spaces, metadataItem->name);
    74     printf("Key mdType: 0x%08x  ", metadataItem->type);
    75  
    76     switch (metadataItem->type) {
    77     case PS_DATA_METADATA_MULTI:
    78         printf("Key Value: %17c", ' ');
    79         break;
    80     case PS_DATA_BOOL:
    81         printf("Key Value: %15d  ", metadataItem->data.B);
    82         break;
    83     case PS_DATA_S32:
    84         printf("Key Value: %15d  ", metadataItem->data.S32);
    85         break;
    86     case PS_DATA_F32:
    87         printf("Key Value: %15.3f  ", metadataItem->data.F32);
    88         break;
    89     case PS_DATA_F64:
    90         printf("Key Value: %15.3f  ", metadataItem->data.F64);
    91         break;
    92     case PS_DATA_STRING:
    93         printf("Key Value: %15s  ", (char*)metadataItem->data.V);
    94         break;
    95     default:
    96         printf("Bad type: %d ", metadataItem->type);
     67    if ( strncmp(item2->name, item->name, 10) || item2->type != item->type ||
     68            item2->data.S32 != item->data.S32 || strncmp(item2->comment, item->comment, 15) ) {
     69        psError(PS_ERR_BAD_PARAMETER_VALUE, false,
     70                "psMetadataItemCopy returned an incorrect psMetadataItem (S32 test).\n");
     71        return 3;
    9772    }
    98     printf("Key Comment: %s\n", metadataItem->comment);
    99  
    100     if(metadataItem->data.V && metadataItem->type==PS_DATA_METADATA_MULTI) {
    101         printMetadataList(metadataItem->data.V, "    ");
     73    psFree(item2);
     74    psFree(item);
     75    item2 = NULL;
     76
     77    //Copy of MetadataItem containing a psMetadata
     78    psMetadata* metadata = psMetadataAlloc();
     79    psMetadataAddS32(metadata, PS_LIST_TAIL, "item01", 0, "", 55);
     80    psMetadataAddF32(metadata, PS_LIST_TAIL, "item02", 0, NULL, 3.14);
     81    item = psMetadataItemAlloc("metaItem2", PS_DATA_METADATA, "newMeta", metadata);
     82    //    item->data.md = psMetadataCopy(item->data.md, metadata);
     83    item2 = psMetadataItemCopy(item);
     84    if (item2 == NULL || item2->data.md == NULL) {
     85        psError(PS_ERR_BAD_PARAMETER_NULL, false,
     86                "psMetadataItemCopy returned either a NULL item or NULL metadata data\n");
     87        return 4;
    10288    }
    103 }
    104 */
     89    if ( strncmp(item2->name, item->name, 11) || item2->type != item->type ||
     90            strncmp(item2->comment, item->comment, 15) ) {
     91        psError(PS_ERR_BAD_PARAMETER_VALUE, false,
     92                "psMetadataItemCopy returned an incorrect psMetadataItem (Metadata test).\n");
     93        return 5;
     94    }
     95    psMetadataItem *temp1 = psMetadataGet(item->data.md, PS_LIST_HEAD);
     96    psMetadataItem *temp2 = psMetadataGet(item2->data.md, PS_LIST_HEAD);
     97    if ( strncmp(temp2->name, temp1->name, 10) || temp2->type != temp1->type ||
     98            temp2->data.S32 != temp1->data.S32 || strncmp(temp2->comment, temp1->comment, 15) ) {
     99        psError(PS_ERR_BAD_PARAMETER_VALUE, false,
     100                "psMetadataItemCopy incorrectly returned non-matching metadata data.\n");
     101        return 6;
     102    }
    105103
    106 psS32 main(psS32 argc, char* argv[])
    107 {
    108     /*    psMetadata *metadata1 = NULL;
    109         psMetadata *metadata2 = NULL;
    110         psMetadata *metadata3 = NULL;
    111     */
    112 
    113     // Test A - Read 1st hdr from simple FITS file
    114 
    115     /* Header contents for header_1.fits:
    116 
    117         SIMPLE  =                    T / file does conform to FITS standard
    118         BITPIX  =                    8 / number of bits per data pixel
    119         NAXIS   =                    0 / number of data axes
    120         HISTORY File modified by user 'harman' with fv  on 2004-08-04T11:11:18
    121         END
    122     */
    123     /*    printPositiveTestHeader(stdout, "psMetadata", "Test A - Read 1st hdr from simple FITS file");
    124     //    metadata1 = psMetadataReadHeader(metadata1, NULL, 1, "header_1.fits");
    125         metadata1 = psFitsReadHeader(metadata1, "header_1.fits");
    126         printMetadata(metadata1);
    127         printFooter(stdout, "psMetadata", "Test A - Read 1st hdr from simple FITS file", true);
    128     */
    129     // Test B - Read 2nd hdr from complex FITS file
    130 
    131     /* Header contents for header_2.fits:
    132 
    133         SIMPLE  =                    T / file does conform to FITS standard
    134         BITPIX  =                  -64 / number of bits per data pixel
    135         NAXIS   =                    1 / number of data axes
    136         NAXIS1  =                   64 / length of data axis 1
    137         EXTEND  =                    T / FITS dataset may contain extensions
    138         COMMENT   FITS (Flexible Image Transport System) format is defined in 'Astronomy
    139         COMMENT   and Astrophysics', volume 376, page 359; bibcode: 2001A&A...376..359H
    140         END
    141         <DATA>
    142 
    143         XTENSION= 'IMAGE   '           / IMAGE extension
    144         BITPIX  =                  -64 / number of bits per data pixel
    145         NAXIS   =                    1 / number of data axes
    146         NAXIS1  =                   64 / length of data axis 1
    147         PCOUNT  =                    0 / required keyword; must = 0
    148         GCOUNT  =                    1 / required keyword; must = 1
    149         BITPIX  =                  -64 / number of bits per data pixel
    150         EXTNAME = 'MY_DATA_1'
    151         HISTORY File modified by user 'harman' with fv  on 2004-08-04T13:14:45
    152         HISTORY File modified by user 'harman' with fv  on 2004-08-04T13:15:29
    153         HISTORY File modified by user 'harman' with fv  on 2004-08-04T13:21:18
    154         HISTORY File modified by user 'harman' with fv  on 2004-08-04T13:21:46
    155         END
    156         <DATA>
    157 
    158         XTENSION= 'IMAGE   '           / IMAGE extension
    159         BITPIX  =                  -64 / number of bits per data pixel
    160         NAXIS   =                    1 / number of data axes
    161         NAXIS1  =                   64 / length of data axis 1
    162         PCOUNT  =                    0 / required keyword; must = 0
    163         GCOUNT  =                    1 / required keyword; must = 1
    164         EXTNAME = 'MY_DATA_2'
    165         HISTORY File modified by user 'harman' with fv  on 2004-08-04T13:22:12
    166         HISTORY File modified by user 'harman' with fv  on 2004-08-04T13:22:52
    167         END
    168         <DATA>
    169     */
    170     /*    printPositiveTestHeader(stdout, "psMetadata", "Test B - Read 2nd hdr from complex FITS file");
    171     //    metadata2 = psMetadataReadHeader(metadata2, NULL, 2, "header_2.fits");
    172         metadata2 = psFitsReadHeader(metadata2, "header_2.fits");
    173         printMetadata(metadata2);
    174         printFooter(stdout, "psMetadata", "Test B - Read 2nd hdr from complex FITS file", true);
    175      
    176         // Test C - Read named hdr from complex FITS file
    177         printPositiveTestHeader(stdout, "psMetadata", "Test C - Read named hdr from complex FITS file");
    178     //    metadata3 = psMetadataReadHeader(metadata3, "MY_DATA_2", -1, "header_2.fits");
    179         metadata3 = psFitsReadHeader(metadata3, "header_2.fits");
    180         printMetadata(metadata3);
    181         printFooter(stdout, "psMetadata", "Test C - Read named hdr from complex FITS file", true);
    182      
    183      
    184         // Test D - Remove items with same name from all metadata
    185         printPositiveTestHeader(stdout, "psMetadata", "Test D - Remove items with same name from all metadata");
    186         printf("Removed HISTORY from all metadata from prior test. Resulting metadata:\n\n");
    187         psMetadataRemove(metadata3, 0, "HISTORY");
    188         printMetadata(metadata3);
    189         printFooter(stdout, "psMetadata", "Test D - Remove items with same name from all metadata", true);
    190      
    191      
    192         // Test E - Attempt to use null file filename
    193         printNegativeTestHeader(stdout,"psMetadata", "Test E - Attempt to use null filename",
    194                                 "Null fileName not allowed", 0);
    195     //    psMetadataReadHeader(NULL, NULL, 1, NULL);
    196         psFitsReadHeader(NULL, NULL);
    197         printFooter(stdout, "psMetadata", "Test E - Attempt to use null filename", true);
    198      
    199      
    200         // Test F - Attempt to open nonexistant file
    201         printNegativeTestHeader(stdout,"psMetadata", "Test F - Attempt to open nonexistant file",
    202                                 "FITS error while opening file: missing.dat...Couldn't close FITS file...", 0);
    203     //    psMetadataReadHeader(NULL, NULL, 1, "missing.dat");
    204         psFitsReadHeader(NULL, "missing.dat");
    205         printFooter(stdout, "psMetadata", "Test F - Attempt to open nonexistant file", true);
    206      
    207      
    208         // Test G - Attempt to use two null inputs
    209         printNegativeTestHeader(stdout,"psMetadata", "Test G - Attempt to use two null inputs",
    210                                 "Null extName and extNum = 0 not allowed", 0);
    211     //    psMetadataReadHeader(NULL, NULL, 0, "header_2.fits");
    212         psFitsReadHeader(NULL, "header_2.fits");
    213         printFooter(stdout, "psMetadata", "Test G - Attempt to use two null inputs", true);
    214      
    215      
    216         // Test H - Attempt to use bad extNum
    217         printNegativeTestHeader(stdout,"psMetadata", "Test H - Attempt to use bad extNum",
    218                                 "FITS error while locating header 22: tried to move past end of file", 0);
    219     //    metadata1 = psMetadataReadHeader(metadata1, NULL, 22, "header_2.fits");
    220         metadata1 = psFitsReadHeader(metadata1, "header_2.fits");
    221         if (metadata1 != NULL ) {
    222             psError(PS_ERR_UNKNOWN, true,"psMetadataReadHeader did not return null when invalid ext given.");
    223             return 10;
    224         }
    225         printFooter(stdout, "psMetadata", "Test H - Attempt to use bad extNum", true);
    226      
    227      
    228         // Test I - Attempt to use bad extName
    229         printNegativeTestHeader(stdout,"psMetadata", "Test I - Attempt to use bad extName",
    230                                 "FITS error while locating header AARGH: illegal HDU number", 0);
    231     //    metadata1 = psMetadataReadHeader(NULL, "AARGH", -1, "header_2.fits");
    232         metadata1 = psFitsReadHeader(NULL, "header_2.fits");
    233         if (metadata1 != NULL ) {
    234             psError(PS_ERR_UNKNOWN, true,"psMetadataReadHeader did not return null invalid extname give.");
    235             return 11;
    236         }
    237         printFooter(stdout, "psMetadata", "Test I - Attempt to use bad extName", true);
    238      
    239      
    240         // Test J - Read named hdr w/ invalid extnum
    241         printNegativeTestHeader(stdout, "psMetadata", "Test J - Read named hdr w/ invalid extnum",
    242                                 "If extName specified, extNum should be -1.", 0);
    243     //    metadata1 = psMetadataReadHeader(NULL, NULL, 0, "header_2.fits");
    244         metadata1 = psFitsReadHeader(metadata1, "header_2.fits");
    245         if (metadata1 != NULL ) {
    246             psError(PS_ERR_UNKNOWN, true,"psMetadataReadHeader did not return null w/ valid extname, invalid extnum");
    247             return 12;
    248         }
    249         printFooter(stdout, "psMetadata", "Test J - Read named hdr w/ invalid extnum", true);
    250      
    251      
    252         // Test K - Free psMetadata
    253         printPositiveTestHeader(stdout, "psMetadata", "Test K - Free psMetadata");
    254         psFree(metadata1);
    255         psFree(metadata2);
    256         psFree(metadata3);
    257         if(psMemCheckLeaks(0, NULL, stdout,false)) {
    258             psError(PS_ERR_UNKNOWN,true,"Memory leaks detected.");
    259         }
    260         psMemCheckCorruption(0);
    261         psS32 nBad = psMemCheckCorruption(0);
    262         if(nBad) {
    263             printf("ERROR: Found %d bad memory blocks\n", nBad);
    264         }
    265         printFooter(stdout, "psMetadata", "Test K - Free psMetadata", true);
    266     */
     104    psFree(item2);
     105    psFree(metadata);
     106    psFree(item);
    267107    return 0;
    268108}
     109
  • trunk/psLib/test/types/verified/tst_psMetadata_01.stderr

    r7296 r7368  
     1/***************************** TESTPOINT ******************************************\
     2*             TestFile: tst_psMetadata_01.c                                        *
     3*            TestPoint: psMetadata_01{psMetadataItemCopy()}                        *
     4*             TestType: Positive                                                   *
     5\**********************************************************************************/
     6
     7<DATE><TIME>|<HOST>|I|testMetadataItemCopy
     8    Following should generate error message
     9<DATE><TIME>|<HOST>|E|psMetadataItemCopy (FILE:LINENO)
     10    Unallowable operation: in is NULL.
     11
     12---> TESTPOINT PASSED (psMetadata_01{psMetadataItemCopy()} | tst_psMetadata_01.c)
     13
Note: See TracChangeset for help on using the changeset viewer.