Changeset 15986 for trunk/psModules/test/concepts/tap_pmConceptsAverage.c
- Timestamp:
- Jan 2, 2008, 10:49:57 AM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/test/concepts/tap_pmConceptsAverage.c
r15650 r15986 82 82 cell->hdu = pmHDUAlloc("cellExtName"); 83 83 for (int i = 0 ; i < NUM_READOUTS ; i++) { 84 cell->readouts->data[i] = generateSimpleReadout(cell);84 cell->readouts->data[i] = psMemDecrRefCounter((psPtr) generateSimpleReadout(cell)); 85 85 } 86 86 … … 129 129 psArrayRealloc(chip->cells, NUM_CELLS); 130 130 for (int i = 0 ; i < NUM_CELLS ; i++) { 131 chip->cells->data[i] = generateSimpleCell(chip); 132 } 133 134 // XXX: Add code to initialize chip pmConcepts 135 136 131 chip->cells->data[i] = psMemDecrRefCounter((psPtr) generateSimpleCell(chip)); 132 } 137 133 return(chip); 138 134 } … … 153 149 psArrayRealloc(fpa->chips, NUM_CHIPS); 154 150 for (int i = 0 ; i < NUM_CHIPS ; i++) { 155 fpa->chips->data[i] = generateSimpleChip(fpa); 156 } 157 158 // XXX: Eventually, when you finish the pmConcepts tests, add full concept 159 // reading code from wherever. 151 fpa->chips->data[i] = psMemDecrRefCounter((psPtr) generateSimpleChip(fpa)); 152 } 160 153 pmConceptsBlankFPA(fpa); 161 // bool mdok;162 // psMetadata *fileData = psMetadataLookupMetadata(&mdok, fpa->hdu->format, "FILE");163 // char *fpaNameHdr = psMetadataLookupStr(&mdok, fileData, "FPA.NAME");164 // psMetadataAddStr(fpa->concepts, PS_LIST_TAIL, "FPA.NAME", PS_META_REPLACE, NULL, fpaNameHdr);165 166 154 return(fpa); 167 155 } 168 169 // XXX: This should only be necessary until the psFree() functions for170 // FPA/chip/cell/readout correctly free all child chips/cells/readouts171 void myFreeCell(pmCell *cell)172 {173 for (int k = 0 ; k < cell->readouts->n ; k++) {174 psFree(cell->readouts->data[k]);175 }176 psFree(cell);177 }178 179 void myFreeChip(pmChip *chip) {180 for (int j = 0 ; j < chip->cells->n ; j++) {181 myFreeCell(chip->cells->data[j]);182 }183 psFree(chip);184 }185 186 void myFreeFPA(pmFPA *fpa)187 {188 for (int i = 0 ; i < fpa->chips->n ; i++) {189 myFreeChip(fpa->chips->data[i]);190 }191 psFree(fpa);192 }193 194 156 195 157 … … 219 181 220 182 for (int fpaID = 0 ; fpaID < NUM_FPAS ; fpaID++) { 221 myFreeFPA(sourceFPA[fpaID]);183 psFree(sourceFPA[fpaID]); 222 184 } 223 185 psFree(sources); 224 myFreeFPA(targetFPA);186 psFree(targetFPA); 225 187 psFree(camera); 226 188 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); … … 245 207 246 208 for (int fpaID = 0 ; fpaID < NUM_FPAS ; fpaID++) { 247 myFreeFPA(sourceFPA[fpaID]);209 psFree(sourceFPA[fpaID]); 248 210 } 249 211 psFree(sources); 250 myFreeFPA(targetFPA);212 psFree(targetFPA); 251 213 psFree(camera); 252 214 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); … … 261 223 pmFPA *targetFPA = generateSimpleFPA(camera); 262 224 pmFPA *sourceFPA[NUM_FPAS]; 225 psMetadata *cameras[NUM_FPAS]; 263 226 264 227 // Ensure that the FPA.TIME average is computed correctly … … 266 229 psF64 actualTime = 0.0; 267 230 for (int fpaID = 0 ; fpaID < NUM_FPAS ; fpaID++) { 268 sourceFPA[fpaID] = generateSimpleFPA(camera); 231 cameras[fpaID] = psMetadataAlloc(); 232 sourceFPA[fpaID] = generateSimpleFPA(cameras[fpaID]); 269 233 psTime *fpaTime = psMetadataLookupPtr(NULL, (sourceFPA[fpaID])->concepts, "FPA.TIME"); 270 234 // Add a small value to the psTime so that we can test/ensure that pmConceptsAverageFPAs() … … 279 243 } 280 244 } 281 ok(pmConceptsAverageFPAs(targetFPA, sources), "pmConceptsAverage(NULL, sources) returned FALSE"); 245 // XXX: The memory leak occurs during the following single call 246 ok(pmConceptsAverageFPAs(targetFPA, sources), "pmConceptsAverage(targetFPA, sources) returned TRUE"); 282 247 actualTime/= (float) NUM_FPAS; 283 248 psTime *fpaTime = psMetadataLookupPtr(NULL, targetFPA->concepts, "FPA.TIME"); 284 249 ok(abs(actualTime - psTimeToMJD(fpaTime)) < 1e-4, "pmConceptsAverageFPAs() calculated the average time correctly"); 285 250 286 287 // Replace the FPA.TIMESYS with a non-conforming value, verify that pmConceptsAverageFPAs() returnes an error 251 // Replace the FPA.TIMESYS with a non-conforming value, verify that pmConceptsAverageFPAs() returns an error 252 288 253 psTimeType timeSys = psMetadataLookupS32(NULL, sourceFPA[0]->concepts, "FPA.TIMESYS"); 289 254 psMetadataAddS32(sourceFPA[NUM_FPAS-1]->concepts, PS_LIST_HEAD, "FPA.TIMESYS", PS_META_REPLACE, NULL, timeSys+10); … … 302 267 // Free data, check for memory leaks 303 268 for (int fpaID = 0 ; fpaID < NUM_FPAS ; fpaID++) { 304 myFreeFPA(sourceFPA[fpaID]); 269 psFree(sourceFPA[fpaID]); 270 psFree(cameras[fpaID]); 305 271 } 306 272 psFree(sources); 307 myFreeFPA(targetFPA); 273 // psFree(filter); 274 psFree(targetFPA); 308 275 psFree(camera); 309 276 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 310 277 } 311 312 313 278 314 279 // ---------------------------------------------------------------------- … … 461 426 psMetadataAddS32(srcCell->concepts, PS_LIST_HEAD, "CELL.Y0", PS_META_REPLACE, NULL, tmpS32); 462 427 463 myFreeFPA(tgtFPA);464 myFreeFPA(srcFPA);428 psFree(tgtFPA); 429 psFree(srcFPA); 465 430 psFree(tgtCamera); 466 431 psFree(srcCamera);
Note:
See TracChangeset
for help on using the changeset viewer.
