Changeset 7368
- Timestamp:
- Jun 6, 2006, 12:54:22 PM (20 years ago)
- Location:
- trunk/psLib
- Files:
-
- 4 edited
-
src/types/psMetadata.c (modified) (2 diffs)
-
src/types/psMetadata.h (modified) (8 diffs)
-
test/types/tst_psMetadata_01.c (modified) (2 diffs)
-
test/types/verified/tst_psMetadata_01.stderr (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/types/psMetadata.c
r7203 r7368 12 12 * @author Ross Harman, MHPCC 13 13 * 14 * @version $Revision: 1.10 6$ $Name: not supported by cvs2svn $15 * @date $Date: 2006-0 5-25 03:53:46$14 * @version $Revision: 1.107 $ $Name: not supported by cvs2svn $ 15 * @date $Date: 2006-06-06 22:54:22 $ 16 16 * 17 17 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 343 343 344 344 345 psMetadataItem *psMetadataItemCopy(const psMetadataItem *in 346 ) 345 psMetadataItem *psMetadataItemCopy(const psMetadataItem *in) 347 346 { 348 347 PS_ASSERT_PTR_NON_NULL(in,NULL); -
trunk/psLib/src/types/psMetadata.h
r6874 r7368 11 11 * @author Ross Harman, MHPCC 12 12 * 13 * @version $Revision: 1.7 5$ $Name: not supported by cvs2svn $14 * @date $Date: 2006-0 4-17 22:00:03$13 * @version $Revision: 1.76 $ $Name: not supported by cvs2svn $ 14 * @date $Date: 2006-06-06 22:54:22 $ 15 15 * 16 16 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 204 204 const char* name, ///< Name of metadata item. 205 205 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. 207 207 ); 208 208 … … 243 243 const char* name, ///< Name of metadata item. 244 244 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. 246 246 ); 247 247 … … 347 347 * @return psMetadataItem*: the copy of the psMetadataItem 348 348 */ 349 psMetadataItem *psMetadataItemCopy( const psMetadataItem *in ///< metadata item to be copied350 );351 349 psMetadataItem *psMetadataItemCopy( 350 const psMetadataItem *in ///< metadata item to be copied 351 ); 352 352 353 353 /** Creates a new copy of all the psMetadataItems in the psMetadata collection, in, and … … 417 417 int format, ///< psMetadataFlag options/flags 418 418 const char* comment, ///< Comment for metadata item 419 bool value ///< Value for metadata item data419 bool value ///< Value for metadata item data 420 420 ); 421 421 … … 430 430 int format, ///< psMetadataFlag options/flags 431 431 const char* comment, ///< Comment for metadata item 432 psS8 value ///< Value for metadata item data432 psS8 value ///< Value for metadata item data 433 433 ); 434 434 … … 469 469 int format, ///< psMetadataFlag options/flags 470 470 const char* comment, ///< Comment for metadata item 471 psU8 value ///< Value for metadata item data471 psU8 value ///< Value for metadata item data 472 472 ); 473 473 … … 504 504 bool psMetadataAddF32( 505 505 psMetadata* md, ///< Metadata collection to insert metadata item 506 long location, ///< Index number, PS_LIST_HEAD, or PS_LIST_TAIL506 long location, ///< Index number, PS_LIST_HEAD, or PS_LIST_TAIL 507 507 const char* name, ///< Name of metadata item 508 508 int format, ///< psMetadataFlag options/flags -
trunk/psLib/test/types/tst_psMetadata_01.c
r7267 r7368 18 18 * @author Ross Harman, MHPCC 19 19 * 20 * @version $Revision: 1. 4$ $Name: not supported by cvs2svn $21 * @date $Date: 2006-06-0 1 21:59:05$20 * @version $Revision: 1.5 $ $Name: not supported by cvs2svn $ 21 * @date $Date: 2006-06-06 22:54:22 $ 22 22 * 23 23 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 28 28 #include "pslib_strict.h" 29 29 #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 31 static psS32 testMetadataItemCopy(void); 32 33 testDescription tests[] = { 34 {testMetadataItemCopy, 666, "psMetadataItemCopy()", 0, false}, 35 {NULL} 36 }; 37 38 psS32 main( psS32 argc, char* argv[] ) 37 39 { 38 p rintf("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 42 44 } 43 44 static void printMetadataList(psList *metadataItemList, char* spaces)45 46 psS32 testMetadataItemCopy(void) 45 47 { 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; 52 58 } 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; 68 66 } 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; 97 72 } 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; 102 88 } 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 } 105 103 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); 267 107 return 0; 268 108 } 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.
