Changeset 15985
- Timestamp:
- Jan 2, 2008, 10:45:23 AM (18 years ago)
- Location:
- trunk/psModules/test/objects
- Files:
-
- 19 edited
-
Makefile.am (modified) (1 diff)
-
tap_pmGrowthCurve.c (modified) (3 diffs)
-
tap_pmModel.c (modified) (7 diffs)
-
tap_pmModelClass.c (modified) (3 diffs)
-
tap_pmModelUtils.c (modified) (1 diff)
-
tap_pmPSF.c (modified) (5 diffs)
-
tap_pmPSF_IO.c (modified) (18 diffs)
-
tap_pmPeaks.c (modified) (7 diffs)
-
tap_pmResiduals.c (modified) (2 diffs)
-
tap_pmSource.c (modified) (6 diffs)
-
tap_pmSourceContour.c (modified) (11 diffs)
-
tap_pmSourceExtendedPars.c (modified) (2 diffs)
-
tap_pmSourceFitSet.c (modified) (8 diffs)
-
tap_pmSourceIO_PS1_DEV_0.c (modified) (9 diffs)
-
tap_pmSourceIO_PS1_DEV_1.c (modified) (11 diffs)
-
tap_pmSourceIO_SMPDATA.c (modified) (9 diffs)
-
tap_pmSourceSky.c (modified) (1 diff)
-
tap_pmSourceUtils.c (modified) (11 diffs)
-
tap_pmTrend2D.c (modified) (14 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/test/objects/Makefile.am
r15726 r15985 14 14 tap_pmPeaks \ 15 15 tap_pmGrowthCurve \ 16 tap_pmGrowthCurve02 \17 16 tap_pmMoments \ 18 17 tap_pmSource \ -
trunk/psModules/test/objects/tap_pmGrowthCurve.c
r15726 r15985 5 5 #include "tap.h" 6 6 #include "pstap.h" 7 /* 8 STATUS: 9 All functions are tested. However, some of the pmGrowthCurveCorrect() 10 tests that were supplied by IfA ae failing. 11 */ 7 12 8 13 #define VERBOSE 0 9 #define ERR_TRACE_LEVEL 1014 #define ERR_TRACE_LEVEL 0 10 15 11 16 int main(int argc, char* argv[]) … … 14 19 psLogSetLevel(PS_LOG_INFO); 15 20 psTraceSetLevel("err", ERR_TRACE_LEVEL); 16 plan_tests( 15);21 plan_tests(70); 17 22 18 23 // ---------------------------------------------------------------------- … … 46 51 } 47 52 48 // Call pmGrowthCurveCorrect() with bad type for input pmGrowthCurve arg49 // XX: This is commented out for now because we are not asserting, inside50 // pmGrowthCurveCorrect(), that input parameters are of the correct type.51 if (0) {52 psMemId id = psMemGetId();53 pmGrowthCurve *growthCurve = pmGrowthCurveAlloc(1.0, 2.0, 3.0);54 psVector *junkVec = psVectorAlloc(10, PS_TYPE_F32);55 ok(isnan(pmGrowthCurveCorrect((pmGrowthCurve *) junkVec, 0.0)), "pmGrowthCurveCorrect() returned NAN with NULL input pmGrowthCurve");56 psFree(growthCurve);57 psFree(junkVec);58 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");59 }60 61 53 62 54 // Call pmGrowthCurveCorrect() with acceptable input parameters. -
trunk/psModules/test/objects/tap_pmModel.c
r15726 r15985 5 5 #include "tap.h" 6 6 #include "pstap.h" 7 /* STATUS: 8 All functions are tested. However... 9 10 The source code for pmModelAddWithOffset() and pmModelSubWithOffset() is 11 almost exactly the same as the source code for pmModelAdd() and 12 pmModelSub(). We do not test them here. 13 */ 7 14 8 15 #define MISC_NUM 32 … … 15 22 #define NUM_ROWS 8 16 23 #define NUM_COLS 16 24 #define TEST_FLOATS_EQUAL(X, Y) (abs(X - Y) < 0.01) 17 25 18 26 /****************************************************************************** … … 42 50 psLogSetLevel(PS_LOG_INFO); 43 51 psTraceSetLevel("err", ERR_TRACE_LEVEL); 44 plan_tests( 1);52 plan_tests(53); 45 53 46 54 // ---------------------------------------------------------------------- … … 142 150 // ---------------------------------------------------------------------- 143 151 // pmModelEval() tests 144 // psF32 pmModelEval(pmModel *model, psImage *image, psS32 col, psS32 row)145 152 // call pmModelEval() with NULL input pmModel parameter 146 153 { … … 201 208 202 209 210 /* XXX: This seems to have disappeared from pmModel.h 203 211 // ---------------------------------------------------------------------- 204 212 // pmModelEvalWithOffset() tests 205 // psF32 pmModelEvalWithOffset WithOffset(pmModel *model, psImage *image,213 // psF32 pmModelEvalWithOffset(pmModel *model, psImage *image, 206 214 // psS32 col, psS32 row, int dx, int dy) 207 215 // call pmModelEvalWithOffset() with NULL input pmModel parameter … … 220 228 221 229 222 // psF32 pmModelEvalWithOffset WithOffset(pmModel *model, psImage *image,230 // psF32 pmModelEvalWithOffset(pmModel *model, psImage *image, 223 231 // psS32 col, psS32 row, int dx, int dy) 224 232 // call pmModelEvalWithOffset() with NULL input psImage parameter … … 262 270 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 263 271 } 272 */ 273 274 275 // ---------------------------------------------------------------------- 276 // pmModelAdd() tests 277 // call pmModelAdd() with bad input parameters 278 { 279 psMemId id = psMemGetId(); 280 psImage *img = psImageAlloc(NUM_COLS, NUM_ROWS, PS_TYPE_F32); 281 psImage *imgS32 = psImageAlloc(NUM_COLS, NUM_ROWS, PS_TYPE_S32); 282 psImage *mask = psImageAlloc(NUM_COLS, NUM_ROWS, PS_TYPE_U8); 283 for (int i = 0 ; i < NUM_ROWS ; i++) { 284 for (int j = 0 ; j < NUM_COLS ; j++) { 285 img->data.F32[i][j] = 0.0; 286 mask->data.U8[i][j] = 0; 287 } 288 } 289 pmModel *model = pmModelAlloc(pmModelClassGetType("PS_MODEL_GAUSS")); 290 psF32 *PAR = model->params->data.F32; 291 PAR[PM_PAR_XPOS] = (float) (NUM_COLS/2); 292 PAR[PM_PAR_YPOS] = (float) (NUM_ROWS/2); 293 PAR[PM_PAR_SXX] = 1.0; 294 PAR[PM_PAR_SYY] = 1.0; 295 296 // NULL psImage input parameter 297 bool rc = pmModelAdd(NULL, mask, model, PM_MODEL_OP_FUNC, 1); 298 ok(rc == false, "pmModelAdd() returned FALSE with NULL psImage input parameter"); 299 300 // NULL pmModel input parameter 301 rc = pmModelAdd(img, mask, NULL, PM_MODEL_OP_FUNC, 1); 302 ok(rc == false, "pmModelAdd() returned FALSE with NULL pmModel input parameter"); 303 304 // Incorrect type psImage input parameter 305 rc = pmModelAdd(imgS32, mask, model, PM_MODEL_OP_FUNC, 1); 306 ok(rc == false, "pmModelAdd() returned FALSE with Incorrect type psImage input parameter"); 307 308 psFree(img); 309 psFree(imgS32); 310 psFree(mask); 311 psFree(model); 312 pmModelClassCleanup(); 313 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 314 } 315 316 317 // call pmModelAdd() with acceptable parameters 318 // We only test with a single Gaussian model, with no residuals or masks. 319 // For completeness, additional tests should be added. 320 { 321 psMemId id = psMemGetId(); 322 psImage *img = psImageAlloc(NUM_COLS, NUM_ROWS, PS_TYPE_F32); 323 psImage *mask = psImageAlloc(NUM_COLS, NUM_ROWS, PS_TYPE_U8); 324 for (int i = 0 ; i < NUM_ROWS ; i++) { 325 for (int j = 0 ; j < NUM_COLS ; j++) { 326 img->data.F32[i][j] = 0.0; 327 mask->data.U8[i][j] = 0; 328 } 329 } 330 pmModel *model = pmModelAlloc(pmModelClassGetType("PS_MODEL_GAUSS")); 331 psF32 *PAR = model->params->data.F32; 332 PAR[PM_PAR_I0] = 5.0; 333 PAR[PM_PAR_XPOS] = 0.0; 334 PAR[PM_PAR_YPOS] = 0.0; 335 PAR[PM_PAR_XPOS] = (float) (NUM_COLS/2); 336 PAR[PM_PAR_YPOS] = (float) (NUM_ROWS/2); 337 PAR[PM_PAR_SXX] = 10.0; 338 PAR[PM_PAR_SYY] = 10.0; 339 340 bool rc = pmModelAdd(img, mask, model, PM_MODEL_OP_FUNC, 1); 341 ok(rc == true, "pmModelAdd() returned TRUE with acceptable input parameters"); 342 psVector *x = psVectorAlloc(2, PS_TYPE_F32); 343 bool errorFlag = false; 344 for (int i = 0 ; i < NUM_ROWS ; i++) { 345 for (int j = 0 ; j < NUM_COLS ; j++) { 346 x->data.F32[0] = (float) j; 347 x->data.F32[1] = (float) i; 348 psF32 modF = model->modelFunc (NULL, model->params, x); 349 psF32 imgF = img->data.F32[i][j]; 350 if (!TEST_FLOATS_EQUAL(modF, imgF)) { 351 diag("ERROR: img[%d][%d] is %.2f, should be %.2f\n", i, j, img->data.F32[i][j], modF); 352 errorFlag = true; 353 } 354 } 355 } 356 ok(!errorFlag, "pmModelAdd() set the image pixels correctly"); 357 psFree(x); 358 psFree(img); 359 psFree(mask); 360 psFree(model); 361 pmModelClassCleanup(); 362 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 363 } 364 365 366 // ---------------------------------------------------------------------- 367 // pmModelSub() tests 368 // call pmModelSub() with bad input parameters 369 { 370 psMemId id = psMemGetId(); 371 psImage *img = psImageAlloc(NUM_COLS, NUM_ROWS, PS_TYPE_F32); 372 psImage *imgS32 = psImageAlloc(NUM_COLS, NUM_ROWS, PS_TYPE_S32); 373 psImage *mask = psImageAlloc(NUM_COLS, NUM_ROWS, PS_TYPE_U8); 374 for (int i = 0 ; i < NUM_ROWS ; i++) { 375 for (int j = 0 ; j < NUM_COLS ; j++) { 376 img->data.F32[i][j] = 0.0; 377 mask->data.U8[i][j] = 0; 378 } 379 } 380 pmModel *model = pmModelAlloc(pmModelClassGetType("PS_MODEL_GAUSS")); 381 psF32 *PAR = model->params->data.F32; 382 PAR[PM_PAR_XPOS] = (float) (NUM_COLS/2); 383 PAR[PM_PAR_YPOS] = (float) (NUM_ROWS/2); 384 PAR[PM_PAR_SXX] = 1.0; 385 PAR[PM_PAR_SYY] = 1.0; 386 387 // NULL psImage input parameter 388 bool rc = pmModelSub(NULL, mask, model, PM_MODEL_OP_FUNC, 1); 389 ok(rc == false, "pmModelSub() returned FALSE with NULL psImage input parameter"); 390 391 // NULL pmModel input parameter 392 rc = pmModelSub(img, mask, NULL, PM_MODEL_OP_FUNC, 1); 393 ok(rc == false, "pmModelSub() returned FALSE with NULL pmModel input parameter"); 394 395 // Incorrect type psImage input parameter 396 rc = pmModelSub(imgS32, mask, model, PM_MODEL_OP_FUNC, 1); 397 ok(rc == false, "pmModelSub() returned FALSE with Incorrect type psImage input parameter"); 398 399 psFree(img); 400 psFree(imgS32); 401 psFree(mask); 402 psFree(model); 403 pmModelClassCleanup(); 404 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 405 } 406 407 408 // call pmModelSub() with acceptable parameters 409 // We only test with a single Gaussian model, with no residuals or masks. 410 // For completeness, additional tests should be added. 411 { 412 psMemId id = psMemGetId(); 413 psImage *img = psImageAlloc(NUM_COLS, NUM_ROWS, PS_TYPE_F32); 414 psImage *mask = psImageAlloc(NUM_COLS, NUM_ROWS, PS_TYPE_U8); 415 for (int i = 0 ; i < NUM_ROWS ; i++) { 416 for (int j = 0 ; j < NUM_COLS ; j++) { 417 img->data.F32[i][j] = 0.0; 418 mask->data.U8[i][j] = 0; 419 } 420 } 421 pmModel *model = pmModelAlloc(pmModelClassGetType("PS_MODEL_GAUSS")); 422 psF32 *PAR = model->params->data.F32; 423 PAR[PM_PAR_I0] = 5.0; 424 PAR[PM_PAR_XPOS] = 0.0; 425 PAR[PM_PAR_YPOS] = 0.0; 426 PAR[PM_PAR_XPOS] = (float) (NUM_COLS/2); 427 PAR[PM_PAR_YPOS] = (float) (NUM_ROWS/2); 428 PAR[PM_PAR_SXX] = 10.0; 429 PAR[PM_PAR_SYY] = 10.0; 430 431 bool rc = pmModelSub(img, mask, model, PM_MODEL_OP_FUNC, 1); 432 ok(rc == true, "pmModelSub() returned TRUE with acceptable input parameters"); 433 psVector *x = psVectorAlloc(2, PS_TYPE_F32); 434 bool errorFlag = false; 435 for (int i = 0 ; i < NUM_ROWS ; i++) { 436 for (int j = 0 ; j < NUM_COLS ; j++) { 437 x->data.F32[0] = (float) j; 438 x->data.F32[1] = (float) i; 439 psF32 modF = model->modelFunc (NULL, model->params, x); 440 psF32 imgF = img->data.F32[i][j]; 441 if (!TEST_FLOATS_EQUAL(modF, -imgF)) { 442 diag("ERROR: img[%d][%d] is %.2f, should be %.2f\n", i, j, img->data.F32[i][j], modF); 443 errorFlag = true; 444 } 445 } 446 } 447 ok(!errorFlag, "pmModelSub() set the image pixels correctly"); 448 psFree(x); 449 psFree(img); 450 psFree(mask); 451 psFree(model); 452 pmModelClassCleanup(); 453 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 454 } 455 456 // XXX: The source code for pmModelAddWithOffset() and pmModelSubWithOffset() is 457 // almost exactly the same as the source code for pmModelAdd() and pmModelSub(). 458 // We do not test them here. 264 459 } 265 460 -
trunk/psModules/test/objects/tap_pmModelClass.c
r15726 r15985 5 5 #include "tap.h" 6 6 #include "pstap.h" 7 /* STATUS: 8 All functions are tested except pmModelClassCleanup() which is deferred 9 because there's no way to test that it frees a static variable, except 10 throug hthe memory leak tests 11 */ 12 7 13 #define MISC_NUM 32 8 14 #define MISC_NAME "META00" … … 41 47 psLogSetLevel(PS_LOG_INFO); 42 48 psTraceSetLevel("err", ERR_TRACE_LEVEL); 43 plan_tests( 1);49 plan_tests(37); 44 50 45 51 // ---------------------------------------------------------------------- … … 56 62 57 63 // ---------------------------------------------------------------------- 58 // Test pmModelClassCleanup() 64 // Test pmModelClassCleanup(), pmModelClassSelect() 59 65 // Basically, call pmModelClassInit(), then pmModelClassCleanup(), and ensure that 60 66 // various default models are not there. 61 { 67 // XXX: We don't run this test because the spec changed and pmModelClassSelect() now calls 68 // pmModelClassInit(). 69 if (0) { 62 70 psMemId id = psMemGetId(); 63 71 pmModelClassInit(); -
trunk/psModules/test/objects/tap_pmModelUtils.c
r15726 r15985 5 5 #include "tap.h" 6 6 #include "pstap.h" 7 /* STATUS: 8 All functions are tested. 9 */ 7 10 8 11 #define VERBOSE 0 -
trunk/psModules/test/objects/tap_pmPSF.c
r15726 r15985 24 24 #define VERBOSE 0 25 25 #define ERR_TRACE_LEVEL 10 26 #define TEST_FLOATS_EQUAL(X, Y) (abs( X - Y) < 0.0001)26 #define TEST_FLOATS_EQUAL(X, Y) (abs((X) - (Y)) < 0.0001) 27 27 28 28 int main(int argc, char* argv[]) … … 31 31 psLogSetLevel(PS_LOG_INFO); 32 32 psTraceSetLevel("err", ERR_TRACE_LEVEL); 33 plan_tests( 15);33 plan_tests(83); 34 34 35 35 // ---------------------------------------------------------------------- … … 131 131 // ---------------------------------------------------------------------- 132 132 // pmPSF_SXYfromModel() tests 133 // double pmPSF_SXYfromModel (psF32 *modelPar)134 133 // Call pmPSF_SXYfromModel() with NULL input parameters 135 134 { … … 160 159 // ---------------------------------------------------------------------- 161 160 // pmPSF_SXYtoModel() tests 162 // double pmPSF_SXYtoModel (psF32 *modelPar)163 161 // Call pmPSF_SXYtoModel() with NULL input parameters 164 162 { … … 187 185 188 186 187 // ---------------------------------------------------------------------- 188 // pmPSF_FitToModel() tests 189 // Call pmPSF_FitToModel() with NULL input parameters 190 { 191 psMemId id = psMemGetId(); 192 bool rc = pmPSF_FitToModel(NULL, 0.0); 193 ok(rc == false, "pmPSF_FitToModel() returned NULL with NULL input parameters"); 194 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 195 } 196 197 198 // Call pmPSF_FitToModel() with NULL input parameters 199 { 200 #define MIN_MINOR_AXIS 1.0 201 psMemId id = psMemGetId(); 202 psF32 origFittedPar[3], testFittedPar[3]; 203 psEllipsePol pol; 204 pol.e0 = origFittedPar[PM_PAR_E0] = testFittedPar[PM_PAR_E0] = 2.0; 205 pol.e1 = origFittedPar[PM_PAR_E1] = testFittedPar[PM_PAR_E1] = 3.0; 206 pol.e2 = origFittedPar[PM_PAR_E2] = testFittedPar[PM_PAR_E2] = 5.0; 207 ok(pmPSF_FitToModel(testFittedPar, MIN_MINOR_AXIS), "pmPSF_FitToModel() returned TRUE with acceptable input parameters"); 208 209 psEllipseAxes axes; 210 psEllipsePolToAxes(pol, MIN_MINOR_AXIS, &axes); 211 psEllipseShape shape = psEllipseAxesToShape(axes); 212 213 ok(TEST_FLOATS_EQUAL(testFittedPar[PM_PAR_SXX], shape.sx * M_SQRT2), 214 "pmPSF_FitToModel() set fittedPar[PM_PAR_SXX] correctly"); 215 ok(TEST_FLOATS_EQUAL(testFittedPar[PM_PAR_SYY], shape.sy * M_SQRT2), 216 "pmPSF_FitToModel() set fittedPar[PM_PAR_SYY] correctly"); 217 ok(TEST_FLOATS_EQUAL(testFittedPar[PM_PAR_SXY], shape.sxy), 218 "pmPSF_FitToModel() set fittedPar[PM_PAR_SXY] correctly"); 219 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 220 } 221 222 223 // ---------------------------------------------------------------------- 224 // pmPSF_ModelToFit() tests 225 // psEllipsePol pmPSF_ModelToFit (psF32 *modelPar) 226 // Call pmPSF_ModelToFit() with NULL input parameters 227 { 228 psMemId id = psMemGetId(); 229 psEllipsePol pol = pmPSF_ModelToFit(NULL); 230 ok(isnan(pol.e0), "pmPSF_ModelToFit() returned NULL (psEllipsePol) with NULL input parameters"); 231 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 232 } 233 234 235 // Call pmPSF_ModelToFit() with NULL input parameters 236 { 237 #define MIN_MINOR_AXIS 1.0 238 psMemId id = psMemGetId(); 239 psF32 modelPar[3]; 240 modelPar[PM_PAR_SXX] = 2.0; 241 modelPar[PM_PAR_SYY] = 3.0; 242 modelPar[PM_PAR_SXY] = 5.0; 243 244 psEllipsePol pol = pmPSF_ModelToFit(modelPar); 245 ok(!isnan(pol.e0), "pmPSF_ModelToFit() returned TRUE with acceptable input parameters"); 246 247 psEllipseShape shape; 248 shape.sx = modelPar[PM_PAR_SXX] / M_SQRT2; 249 shape.sy = modelPar[PM_PAR_SYY] / M_SQRT2; 250 shape.sxy = modelPar[PM_PAR_SXY]; 251 psEllipsePol actPol = psEllipseShapeToPol(shape); 252 ok(TEST_FLOATS_EQUAL(pol.e0, actPol.e0), "pmPSF_ModelToFit() set psEllipsePol.e0 correctly"); 253 ok(TEST_FLOATS_EQUAL(pol.e1, actPol.e1), "pmPSF_ModelToFit() set psEllipsePol.e1 correctly"); 254 ok(TEST_FLOATS_EQUAL(pol.e2, actPol.e2), "pmPSF_ModelToFit() set psEllipsePol.e2 correctly"); 255 256 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 257 } 258 259 260 // ---------------------------------------------------------------------- 261 // pmPSF_ModelToAxes() tests 262 // psEllipseAxes pmPSF_ModelToAxes (psF32 *modelPar, double maxAR) 263 // Call pmPSF_ModelToAxes() with NULL input parameters 264 { 265 psMemId id = psMemGetId(); 266 psEllipseAxes axes = pmPSF_ModelToAxes(NULL, 1.0); 267 ok(isnan(axes.major), "pmPSF_ModelToAxes() returned NULL (psEllipseAxes) with NULL input parameters"); 268 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 269 } 270 271 272 // Call pmPSF_ModelToAxes() with NULL input parameters 273 { 274 #define MAX_AX 1.0 275 psMemId id = psMemGetId(); 276 psF32 modelPar[3]; 277 modelPar[PM_PAR_SXX] = 2.0; 278 modelPar[PM_PAR_SYY] = 3.0; 279 modelPar[PM_PAR_SXY] = 5.0; 280 281 psEllipseShape shape; 282 shape.sx = modelPar[PM_PAR_SXX] / M_SQRT2; 283 shape.sy = modelPar[PM_PAR_SYY] / M_SQRT2; 284 shape.sxy = modelPar[PM_PAR_SXY]; 285 psEllipseAxes axes = psEllipseShapeToAxes (shape, MAX_AX); 286 287 psEllipseAxes actAxes = pmPSF_ModelToAxes(modelPar, MAX_AX); 288 ok(!isnan(actAxes.major), "pmPSF_ModelToAxes() returned TRUE with acceptable input parameters"); 289 ok(TEST_FLOATS_EQUAL(actAxes.major, axes.major), "pmPSF_ModelToAxes() set psEllipseAxes.major correctly"); 290 ok(TEST_FLOATS_EQUAL(actAxes.minor, axes.minor), "pmPSF_ModelToAxes() set psEllipseAxes.minor correctly"); 291 ok(TEST_FLOATS_EQUAL(actAxes.theta, axes.theta), "pmPSF_ModelToAxes() set psEllipseAxes.theta correctly"); 292 293 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 294 } 295 296 297 // ---------------------------------------------------------------------- 298 // pmPSF_AxesToModel() tests 299 // bool pmPSF_AxesToModel (psF32 *modelPar, psEllipseAxes axes) 300 // Call pmPSF_AxesToModel() with NULL input parameters 301 { 302 psMemId id = psMemGetId(); 303 psEllipseAxes axes; 304 bool rc = pmPSF_AxesToModel(NULL, axes); 305 ok(rc == false, "pmPSF_AxesToModel() returned NULL with NULL input parameters"); 306 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 307 } 308 309 310 // Call pmPSF_AxesToModel() with NULL input parameters 311 { 312 #define MIN_MINOR_AXIS 1.0 313 psMemId id = psMemGetId(); 314 psF32 modelPar[3]; 315 psEllipseAxes axes; 316 axes.major = 2.0; 317 axes.minor = 3.0; 318 axes.theta = 5.0; 319 ok(pmPSF_AxesToModel(modelPar, axes), "pmPSF_AxesToModel() returned TRUE with acceptable input parameters"); 320 psEllipseShape shape = psEllipseAxesToShape(axes); 321 ok(TEST_FLOATS_EQUAL(modelPar[PM_PAR_SXX], shape.sx * M_SQRT2), "pmPSF_AxesToModel() set modelPar[PM_PAR_SXX] correctly"); 322 ok(TEST_FLOATS_EQUAL(modelPar[PM_PAR_SYY], shape.sy * M_SQRT2), "pmPSF_AxesToModel() set modelPar[PM_PAR_SYY] correctly"); 323 ok(TEST_FLOATS_EQUAL(modelPar[PM_PAR_SXY], shape.sxy), "pmPSF_AxesToModel() set modelPar[PM_PAR_SXY] correctly"); 324 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 325 } 189 326 } -
trunk/psModules/test/objects/tap_pmPSF_IO.c
r15726 r15985 5 5 #include "tap.h" 6 6 #include "pstap.h" 7 /* STATUS 8 Uder construction. Only lightly tested so far. 9 */ 7 10 8 11 #define TEST_FLOATS_EQUAL(X, Y) (abs(X - Y) < 0.0001) … … 76 79 cell->hdu = pmHDUAlloc("cellExtName"); 77 80 for (int i = 0 ; i < NUM_READOUTS ; i++) { 78 cell->readouts->data[i] = generateSimpleReadout(cell);81 cell->readouts->data[i] = psMemDecrRefCounter((psPtr) generateSimpleReadout(cell)); 79 82 } 80 83 … … 123 126 psArrayRealloc(chip->cells, NUM_CELLS); 124 127 for (int i = 0 ; i < NUM_CELLS ; i++) { 125 chip->cells->data[i] = generateSimpleCell(chip);128 chip->cells->data[i] = psMemDecrRefCounter((psPtr) generateSimpleCell(chip)); 126 129 } 127 130 … … 139 142 { 140 143 pmFPA* fpa = pmFPAAlloc(camera); 144 fpa->hdu = pmHDUAlloc("cellExtName"); 141 145 fpa->fromTPA = PS_CREATE_2D_IDENTITY_PLANE_TRANSFORM(); 142 146 fpa->toTPA = PS_CREATE_2D_IDENTITY_PLANE_TRANSFORM(); … … 147 151 psArrayRealloc(fpa->chips, NUM_CHIPS); 148 152 for (int i = 0 ; i < NUM_CHIPS ; i++) { 149 fpa->chips->data[i] = generateSimpleChip(fpa); 150 } 151 152 // XXX: Eventually, when you finish the pmConcepts tests, add full concept 153 // reading code from wherever. 153 fpa->chips->data[i] = psMemDecrRefCounter((psPtr) generateSimpleChip(fpa)); 154 } 154 155 pmConceptsBlankFPA(fpa); 155 // bool mdok;156 // psMetadata *fileData = psMetadataLookupMetadata(&mdok, fpa->hdu->format, "FILE");157 // char *fpaNameHdr = psMetadataLookupStr(&mdok, fileData, "FPA.NAME");158 // psMetadataAddStr(fpa->concepts, PS_LIST_TAIL, "FPA.NAME", PS_META_REPLACE, NULL, fpaNameHdr);159 160 156 return(fpa); 161 157 } 162 163 // XXX: This should only be necessary until the psFree() functions for164 // FPA/chip/cell/readout correctly free all child chips/cells/readouts165 void myFreeCell(pmCell *cell)166 {167 for (int k = 0 ; k < cell->readouts->n ; k++) {168 psFree(cell->readouts->data[k]);169 }170 psFree(cell);171 }172 173 void myFreeChip(pmChip *chip) {174 for (int j = 0 ; j < chip->cells->n ; j++) {175 myFreeCell(chip->cells->data[j]);176 }177 psFree(chip);178 }179 180 void myFreeFPA(pmFPA *fpa)181 {182 for (int i = 0 ; i < fpa->chips->n ; i++) {183 myFreeChip(fpa->chips->data[i]);184 }185 psFree(fpa);186 }187 188 189 190 158 191 159 … … 195 163 psLogSetLevel(PS_LOG_INFO); 196 164 psTraceSetLevel("err", ERR_TRACE_LEVEL); 197 plan_tests(2 2);165 plan_tests(28); 198 166 199 167 … … 251 219 252 220 psFree(view); 253 myFreeFPA(file->fpa);221 psFree(file->fpa); 254 222 file->fpa = NULL; 255 223 psFree(file); … … 270 238 bool rc = pmPSFmodelCheckDataStatusForFPA(NULL); 271 239 ok(rc == false, "pmPSFmodelCheckDataStatusForFPA() returned FALSE with NULL pmFPA input parameter"); 272 myFreeFPA(fpa);240 psFree(fpa); 273 241 psFree(camera); 274 242 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); … … 282 250 pmFPA *fpa = generateSimpleFPA(camera); 283 251 for (int i = 0 ; i < fpa->chips->n ; i++) { 284 myFreeChip(fpa->chips->data[i]);252 psFree(fpa->chips->data[i]); 285 253 } 286 254 bool rc = pmPSFmodelCheckDataStatusForFPA(NULL); 287 255 ok(rc == false, "pmPSFmodelCheckDataStatusForFPA() returned FALSE with NULL pmFPA->chips input parameter"); 288 myFreeFPA(fpa);256 psFree(fpa); 289 257 psFree(camera); 290 258 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); … … 308 276 ok(rc == true, "pmPSFmodelCheckDataStatusForFPA() returned TRUE with acceptable input parameters"); 309 277 310 myFreeFPA(fpa);278 psFree(fpa); 311 279 psFree(camera); 312 280 psFree(junk); … … 343 311 ok(rc == true, "pmPSFmodelCheckDataStatusForChip() returned TRUE with acceptable input parameters"); 344 312 345 myFreeFPA(fpa);313 psFree(fpa); 346 314 psFree(camera); 347 315 psFree(junk); … … 368 336 369 337 psFree(view); 370 myFreeFPA(file->fpa);338 psFree(file->fpa); 371 339 file->fpa = NULL; 372 340 psFree(file); … … 392 360 393 361 psFree(view); 394 myFreeFPA(file->fpa);362 psFree(file->fpa); 395 363 file->fpa = NULL; 396 364 psFree(file); … … 422 390 423 391 // Call pmPSFmodelWrite() with acceptable input parameters 424 if (1) { 392 // XXX: This is currently being coded. It does not work. 393 if (0) { 425 394 psMemId id = psMemGetId(); 426 395 pmFPAview *view = pmFPAviewAlloc(32); … … 428 397 psMetadata *camera = psMetadataAlloc(); 429 398 file->fpa = generateSimpleFPA(camera); 399 pmConfigFileRead(&file->camera, "../dataFiles/camera0/camera.config", "CAMERA"); 400 psMetadataPrint(stdout, file->camera, 0); 401 psMetadata *menu = psMetadataLookupMetadata(NULL, file->camera, "EXTNAME.RULES"); 402 if (!menu) { 403 printf("NOTE: missing EXTNAME.RULES in camera.config\n"); 404 exit(1); 405 } 406 407 430 408 psMetadata *analysis = psMetadataAlloc(); 431 409 pmConfig *config = pmConfigAlloc(); … … 442 420 */ 443 421 444 if ( 0) {422 if (1) { 445 423 psMetadata *junk = psMetadataAlloc(); 446 424 bool rc0 = pmConfigFileRead(&junk, "../dataFiles/recipes/psphot.config", "SAVE.PSF"); … … 457 435 psFree(junk); 458 436 } 459 bool rc0 = pmConfigFileRead(&config->recipes, "../dataFiles/recipes/psphot.config", "SAVE.PSF"); 437 if (config->recipes == NULL) printf("COOL: config->recipes is NULL"); 438 bool rc0 = pmConfigFileRead(&config->recipes, "../dataFiles/camera0/recipes.config", "PSPHOT"); 460 439 if (!rc0) { 461 rc0 = pmConfigFileRead(&config->recipes, "dataFiles/ recipes/psphot.config", "SAVE.PSF");440 rc0 = pmConfigFileRead(&config->recipes, "dataFiles/camera0/recipes.config", "PSPHOT"); 462 441 } 463 442 ok(rc0, "Successfully read the PSPHOT recipe file"); 443 psMetadataPrint(stdout, config->recipes, 0); 444 445 if (config->recipes == NULL) printf("FUCK: config->recipes is NULL"); 446 psMetadata *recipe = psMetadataLookupPtr(NULL, config->recipes, "PSPHOT"); 447 if (!recipe) { 448 printf("FUCK: missing recipe %s\n", "PSPHOT"); 449 exit(1); 450 } 451 464 452 465 453 bool rc = pmPSFmodelWrite(analysis, view, file, config); … … 467 455 468 456 psFree(view); 469 myFreeFPA(file->fpa);457 psFree(file->fpa); 470 458 file->fpa = NULL; 471 459 psFree(file); -
trunk/psModules/test/objects/tap_pmPeaks.c
r15726 r15985 5 5 #include "tap.h" 6 6 #include "pstap.h" 7 /* The following are tested: 8 pmPeakAlloc() 9 pmPeaksInVector() 10 pmPeaksInImage() 11 pmPeaksSubset() 12 pmPeaksCompareAscend() 13 pmPeaksCompareDescend() 14 Must test 15 pmCullPeaks() 16 Doesn't exist 17 pmPeakTest() 18 Get rid of this 19 pmPeakSortBySN() 20 Easy 21 pmPeakSortByY() 22 Easy 7 /* STATUS: 8 All functions are tested. 9 pmPeaksInImage(): Must debug tests for small images (1-by-1, N-by-1, 1-by-N) 23 10 */ 24 11 … … 28 15 #define TST02_NUM_ROWS 5 29 16 #define TST02_NUM_COLS 5 17 #define VERBOSE 0 18 #define ERR_TRACE_LEVEL 0 30 19 31 20 /****************************************************************************** … … 253 242 254 243 255 256 257 244 int main(int argc, char* argv[]) 258 245 { 259 246 psLogSetFormat("HLNM"); 260 247 psLogSetLevel(PS_LOG_INFO); 261 plan_tests(35); 262 263 248 psTraceSetLevel("err", ERR_TRACE_LEVEL); 249 plan_tests(69); 250 251 252 // ------------------------------------------------------------------------ 264 253 // Test pmPeakAlloc() 265 254 { … … 295 284 296 285 297 // ---------------------------------------- 286 // ------------------------------------------------------------------------ 287 // Calling pmPeaksCompareAscend with NULL peak1 288 // XXX: This currently seg-faults because NULL args are not pretested in pmPeaksCompareAscend() 289 if (0) { 290 psMemId id = psMemGetId(); 291 pmPeak **peak2 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 292 *peak2 = pmPeakAlloc(3, 4, 3.0, PM_PEAK_LONE); 293 int rc = pmPeaksCompareAscend(NULL, (const void **) peak2); 294 ok(rc == -1, "pmPeaksCompareAscend() returned correct result (peak1 < peak2)"); 295 psFree(*peak2); 296 psFree(peak2); 297 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 298 } 299 300 301 // Calling pmPeaksCompareAscend with NULL peak2 302 // XXX: This currently seg-faults because NULL args are not pretested in pmPeaksCompareAscend() 303 if (0) { 304 psMemId id = psMemGetId(); 305 pmPeak **peak1 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 306 *peak1 = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE); 307 int rc = pmPeaksCompareAscend((const void **)peak1, NULL); 308 ok(rc == -1, "pmPeaksCompareAscend() returned correct result (peak1 < peak2)"); 309 psFree(*peak1); 310 psFree(peak1); 311 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 312 } 313 314 315 // Calling pmPeaksCompareAscend with NULL *peak1 316 // XXX: This currently seg-faults because NULL args are not pretested in pmPeaksCompareAscend() 317 if (0) { 318 psMemId id = psMemGetId(); 319 pmPeak **peak1 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 320 pmPeak **peak2 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 321 *peak2 = pmPeakAlloc(3, 4, 3.0, PM_PEAK_LONE); 322 int rc = pmPeaksCompareAscend((const void **)peak1, (const void **) peak2); 323 ok(rc == -1, "pmPeaksCompareAscend() returned correct result (peak1 < peak2)"); 324 psFree(peak1); 325 psFree(*peak2); 326 psFree(peak2); 327 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 328 } 329 330 331 // Calling pmPeaksCompareAscend with NULL *peak2 332 // XXX: This currently seg-faults because NULL args are not pretested in pmPeaksCompareAscend() 333 if (0) { 334 psMemId id = psMemGetId(); 335 pmPeak **peak1 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 336 *peak1 = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE); 337 pmPeak **peak2 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 338 int rc = pmPeaksCompareAscend((const void **)peak1, (const void **) peak2); 339 ok(rc == -1, "pmPeaksCompareAscend() returned correct result (peak1 < peak2)"); 340 psFree(*peak1); 341 psFree(peak1); 342 psFree(peak2); 343 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 344 } 345 346 // Calling pmPeaksCompareAscend with peak1 < peak2 347 { 348 psMemId id = psMemGetId(); 349 pmPeak **peak1 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 350 *peak1 = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE); 351 pmPeak **peak2 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 352 *peak2 = pmPeakAlloc(3, 4, 3.0, PM_PEAK_LONE); 353 int rc = pmPeaksCompareAscend((const void **)peak1, (const void **) peak2); 354 ok(rc == -1, "pmPeaksCompareAscend() returned correct result (peak1 < peak2)"); 355 psFree(*peak1); 356 psFree(peak1); 357 psFree(*peak2); 358 psFree(peak2); 359 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 360 } 361 362 363 // Calling pmPeaksCompareAscend with peak1 > peak2 364 { 365 psMemId id = psMemGetId(); 366 pmPeak **peak1 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 367 *peak1 = pmPeakAlloc(3, 4, 3.0, PM_PEAK_LONE); 368 pmPeak **peak2 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 369 *peak2 = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE); 370 int rc = pmPeaksCompareAscend((const void **)peak1, (const void **) peak2); 371 ok(rc == 1, "pmPeaksCompareAscend() returned correct result (peak1 > peak2)"); 372 psFree(*peak1); 373 psFree(peak1); 374 psFree(*peak2); 375 psFree(peak2); 376 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 377 } 378 379 380 // Calling pmPeaksCompareAscend with peak1 == peak2 381 { 382 psMemId id = psMemGetId(); 383 pmPeak **peak1 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 384 *peak1 = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE); 385 pmPeak **peak2 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 386 *peak2 = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE); 387 int rc = pmPeaksCompareAscend((const void **)peak1, (const void **) peak2); 388 ok(rc == 0, "pmPeaksCompareAscend() returned correct result (peak1 == peak2)", rc); 389 psFree(*peak1); 390 psFree(peak1); 391 psFree(*peak2); 392 psFree(peak2); 393 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 394 } 395 396 397 // ------------------------------------------------------------------------ 398 // Calling pmPeaksCompareDescend with NULL peak1 399 // XXX: This currently seg-faults because NULL args are not pretested in pmPeaksCompareDescend() 400 if (0) { 401 psMemId id = psMemGetId(); 402 pmPeak **peak2 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 403 *peak2 = pmPeakAlloc(3, 4, 3.0, PM_PEAK_LONE); 404 int rc = pmPeaksCompareDescend(NULL, (const void **) peak2); 405 ok(rc == -1, "pmPeaksCompareDescend() returned correct result (peak1 < peak2)"); 406 psFree(*peak2); 407 psFree(peak2); 408 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 409 } 410 411 412 // Calling pmPeaksCompareDescend with NULL peak2 413 // XXX: This currently seg-faults because NULL args are not pretested in pmPeaksCompareDescend() 414 if (0) { 415 psMemId id = psMemGetId(); 416 pmPeak **peak1 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 417 *peak1 = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE); 418 int rc = pmPeaksCompareDescend((const void **)peak1, NULL); 419 ok(rc == -1, "pmPeaksCompareDescend() returned correct result (peak1 < peak2)"); 420 psFree(*peak1); 421 psFree(peak1); 422 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 423 } 424 425 426 // Calling pmPeaksCompareDescend with NULL *peak1 427 // XXX: This currently seg-faults because NULL args are not pretested in pmPeaksCompareDescend() 428 if (0) { 429 psMemId id = psMemGetId(); 430 pmPeak **peak1 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 431 pmPeak **peak2 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 432 *peak2 = pmPeakAlloc(3, 4, 3.0, PM_PEAK_LONE); 433 int rc = pmPeaksCompareDescend((const void **)peak1, (const void **) peak2); 434 ok(rc == -1, "pmPeaksCompareDescend() returned correct result (peak1 < peak2)"); 435 psFree(peak1); 436 psFree(*peak2); 437 psFree(peak2); 438 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 439 } 440 441 442 // Calling pmPeaksCompareDescend with NULL *peak2 443 // XXX: This currently seg-faults because NULL args are not pretested in pmPeaksCompareDescend() 444 if (0) { 445 psMemId id = psMemGetId(); 446 pmPeak **peak1 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 447 *peak1 = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE); 448 pmPeak **peak2 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 449 int rc = pmPeaksCompareDescend((const void **)peak1, (const void **) peak2); 450 ok(rc == -1, "pmPeaksCompareDescend() returned correct result (peak1 < peak2)"); 451 psFree(*peak1); 452 psFree(peak1); 453 psFree(peak2); 454 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 455 } 456 457 // Calling pmPeaksCompareDescend with peak1 < peak2 458 { 459 psMemId id = psMemGetId(); 460 pmPeak **peak1 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 461 *peak1 = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE); 462 pmPeak **peak2 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 463 *peak2 = pmPeakAlloc(3, 4, 3.0, PM_PEAK_LONE); 464 int rc = pmPeaksCompareDescend((const void **)peak1, (const void **) peak2); 465 ok(rc == 1, "pmPeaksCompareDescend() returned correct result (peak1 < peak2)"); 466 psFree(*peak1); 467 psFree(peak1); 468 psFree(*peak2); 469 psFree(peak2); 470 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 471 } 472 473 474 // Calling pmPeaksCompareDescend with peak1 > peak2 475 { 476 psMemId id = psMemGetId(); 477 pmPeak **peak1 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 478 *peak1 = pmPeakAlloc(3, 4, 3.0, PM_PEAK_LONE); 479 pmPeak **peak2 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 480 *peak2 = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE); 481 int rc = pmPeaksCompareDescend((const void **)peak1, (const void **) peak2); 482 ok(rc == -1, "pmPeaksCompareDescend() returned correct result (peak1 > peak2)"); 483 psFree(*peak1); 484 psFree(peak1); 485 psFree(*peak2); 486 psFree(peak2); 487 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 488 } 489 490 491 // Calling pmPeaksCompareDescend with peak1 == peak2 492 { 493 psMemId id = psMemGetId(); 494 pmPeak **peak1 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 495 *peak1 = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE); 496 pmPeak **peak2 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 497 *peak2 = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE); 498 int rc = pmPeaksCompareDescend((const void **)peak1, (const void **) peak2); 499 ok(rc == 0, "pmPeaksCompareDescend() returned correct result (peak1 == peak2)", rc); 500 psFree(*peak1); 501 psFree(peak1); 502 psFree(*peak2); 503 psFree(peak2); 504 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 505 } 506 507 508 // ------------------------------------------------------------------------ 509 // pmPeakSortBySN() tests 510 // int pmPeakSortBySN (const void **a, const void **b) 511 // Call pmPeakSortBySN() with acceptable input parameters. 512 // XXX: We don't test with NULL input parameters since this functions has no PS_ASSERTS to protect 513 // against that. 514 { 515 psMemId id = psMemGetId(); 516 pmPeak **peak1 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 517 *peak1 = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE); 518 (*peak1)->SN = 10.0; 519 pmPeak **peak2 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 520 *peak2 = pmPeakAlloc(3, 4, 3.0, PM_PEAK_LONE); 521 (*peak2)->SN = 20.0; 522 int rc = pmPeakSortBySN((const void **)peak1, (const void **) peak2); 523 ok(rc == 1, "pmPeakSortBySN() returned correct result (peak1 < peak2) (%d)", rc); 524 rc = pmPeakSortBySN((const void **)peak2, (const void **) peak1); 525 ok(rc == -1, "pmPeakSortBySN() returned correct result (peak2 < peak1) (%d)", rc); 526 rc = pmPeakSortBySN((const void **)peak1, (const void **) peak1); 527 ok(rc == 0, "pmPeakSortBySN() returned correct result (peak1 == peak2) (%d)", rc); 528 psFree(*peak1); 529 psFree(peak1); 530 psFree(*peak2); 531 psFree(peak2); 532 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 533 } 534 535 536 // ------------------------------------------------------------------------ 537 // pmPeakSortByY() tests 538 // int pmPeakSortByY (const void **a, const void **b) 539 // Call pmPeakSortByY() with acceptable input parameters. 540 // XXX: We don't test with NULL input parameters since this functions has no PS_ASSERTS to protect 541 // against that. 542 { 543 psMemId id = psMemGetId(); 544 pmPeak **peak1 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 545 *peak1 = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE); 546 (*peak1)->y = 10.0; 547 pmPeak **peak2 = (pmPeak **) psAlloc(sizeof(pmPeak *)); 548 *peak2 = pmPeakAlloc(3, 4, 3.0, PM_PEAK_LONE); 549 (*peak2)->y = 20.0; 550 int rc = pmPeakSortByY((const void **)peak1, (const void **) peak2); 551 ok(rc == -1, "pmPeakSortByY() returned correct result (peak1 < peak2) (%d)", rc); 552 rc = pmPeakSortByY((const void **)peak2, (const void **) peak1); 553 ok(rc == 1, "pmPeakSortByY() returned correct result (peak2 < peak1) (%d)", rc); 554 rc = pmPeakSortByY((const void **)peak1, (const void **) peak1); 555 ok(rc == 0, "pmPeakSortByY() returned correct result (peak1 == peak2) (%d)", rc); 556 psFree(*peak1); 557 psFree(peak1); 558 psFree(*peak2); 559 psFree(peak2); 560 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 561 } 562 563 564 // ------------------------------------------------------------------------ 298 565 // pmPeaksInVector() tests 299 566 // Test pmPeaksInVector() with bad input parameters. … … 334 601 335 602 336 337 // ---------------------------------------- 603 // ------------------------------------------------------------------------ 338 604 // pmPeaksInImage() tests 339 605 // Calling pmPeaksInImage with NULL psImage. Should generate error. … … 386 652 387 653 388 389 // ---------------------------------------- 654 // ------------------------------------------------------------------------ 390 655 // Test pmPeaksSubset() 391 656 // Calling pmPeaksSubset with NULL psList. Should generate error. … … 476 741 psFree(outData2); 477 742 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 478 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");479 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");480 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");481 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");482 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");483 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");484 }485 486 487 // ----------------------------------------488 // Calling pmPeaksCompareAscend with NULL peak1489 // XXX: This currently seg-faults because NULL args are not pretested in pmPeaksCompareAscend()490 if (0) {491 psMemId id = psMemGetId();492 pmPeak **peak2 = (pmPeak **) psAlloc(sizeof(pmPeak *));493 *peak2 = pmPeakAlloc(3, 4, 3.0, PM_PEAK_LONE);494 int rc = pmPeaksCompareAscend(NULL, (const void **) peak2);495 ok(rc == -1, "pmPeaksCompareAscend() returned correct result (peak1 < peak2)");496 psFree(*peak2);497 psFree(peak2);498 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");499 }500 501 502 // Calling pmPeaksCompareAscend with NULL peak2503 // XXX: This currently seg-faults because NULL args are not pretested in pmPeaksCompareAscend()504 if (0) {505 psMemId id = psMemGetId();506 pmPeak **peak1 = (pmPeak **) psAlloc(sizeof(pmPeak *));507 *peak1 = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE);508 int rc = pmPeaksCompareAscend((const void **)peak1, NULL);509 ok(rc == -1, "pmPeaksCompareAscend() returned correct result (peak1 < peak2)");510 psFree(*peak1);511 psFree(peak1);512 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");513 }514 515 516 // Calling pmPeaksCompareAscend with NULL *peak1517 // XXX: This currently seg-faults because NULL args are not pretested in pmPeaksCompareAscend()518 if (0) {519 psMemId id = psMemGetId();520 pmPeak **peak1 = (pmPeak **) psAlloc(sizeof(pmPeak *));521 pmPeak **peak2 = (pmPeak **) psAlloc(sizeof(pmPeak *));522 *peak2 = pmPeakAlloc(3, 4, 3.0, PM_PEAK_LONE);523 int rc = pmPeaksCompareAscend((const void **)peak1, (const void **) peak2);524 ok(rc == -1, "pmPeaksCompareAscend() returned correct result (peak1 < peak2)");525 psFree(peak1);526 psFree(*peak2);527 psFree(peak2);528 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");529 }530 531 532 // Calling pmPeaksCompareAscend with NULL *peak2533 // XXX: This currently seg-faults because NULL args are not pretested in pmPeaksCompareAscend()534 if (0) {535 psMemId id = psMemGetId();536 pmPeak **peak1 = (pmPeak **) psAlloc(sizeof(pmPeak *));537 *peak1 = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE);538 pmPeak **peak2 = (pmPeak **) psAlloc(sizeof(pmPeak *));539 int rc = pmPeaksCompareAscend((const void **)peak1, (const void **) peak2);540 ok(rc == -1, "pmPeaksCompareAscend() returned correct result (peak1 < peak2)");541 psFree(*peak1);542 psFree(peak1);543 psFree(peak2);544 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");545 }546 547 // Calling pmPeaksCompareAscend with peak1 < peak2548 {549 psMemId id = psMemGetId();550 pmPeak **peak1 = (pmPeak **) psAlloc(sizeof(pmPeak *));551 *peak1 = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE);552 pmPeak **peak2 = (pmPeak **) psAlloc(sizeof(pmPeak *));553 *peak2 = pmPeakAlloc(3, 4, 3.0, PM_PEAK_LONE);554 int rc = pmPeaksCompareAscend((const void **)peak1, (const void **) peak2);555 ok(rc == -1, "pmPeaksCompareAscend() returned correct result (peak1 < peak2)");556 psFree(*peak1);557 psFree(peak1);558 psFree(*peak2);559 psFree(peak2);560 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");561 }562 563 564 // Calling pmPeaksCompareAscend with peak1 > peak2565 {566 psMemId id = psMemGetId();567 pmPeak **peak1 = (pmPeak **) psAlloc(sizeof(pmPeak *));568 *peak1 = pmPeakAlloc(3, 4, 3.0, PM_PEAK_LONE);569 pmPeak **peak2 = (pmPeak **) psAlloc(sizeof(pmPeak *));570 *peak2 = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE);571 int rc = pmPeaksCompareAscend((const void **)peak1, (const void **) peak2);572 ok(rc == 1, "pmPeaksCompareAscend() returned correct result (peak1 > peak2)");573 psFree(*peak1);574 psFree(peak1);575 psFree(*peak2);576 psFree(peak2);577 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");578 }579 580 581 // Calling pmPeaksCompareAscend with peak1 == peak2582 {583 psMemId id = psMemGetId();584 pmPeak **peak1 = (pmPeak **) psAlloc(sizeof(pmPeak *));585 *peak1 = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE);586 pmPeak **peak2 = (pmPeak **) psAlloc(sizeof(pmPeak *));587 *peak2 = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE);588 int rc = pmPeaksCompareAscend((const void **)peak1, (const void **) peak2);589 ok(rc == 0, "pmPeaksCompareAscend() returned correct result (peak1 == peak2)", rc);590 psFree(*peak1);591 psFree(peak1);592 psFree(*peak2);593 psFree(peak2);594 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");595 }596 597 598 // ----------------------------------------599 // Calling pmPeaksCompareDescend with NULL peak1600 // XXX: This currently seg-faults because NULL args are not pretested in pmPeaksCompareDescend()601 if (0) {602 psMemId id = psMemGetId();603 pmPeak **peak2 = (pmPeak **) psAlloc(sizeof(pmPeak *));604 *peak2 = pmPeakAlloc(3, 4, 3.0, PM_PEAK_LONE);605 int rc = pmPeaksCompareDescend(NULL, (const void **) peak2);606 ok(rc == -1, "pmPeaksCompareDescend() returned correct result (peak1 < peak2)");607 psFree(*peak2);608 psFree(peak2);609 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");610 }611 612 613 // Calling pmPeaksCompareDescend with NULL peak2614 // XXX: This currently seg-faults because NULL args are not pretested in pmPeaksCompareDescend()615 if (0) {616 psMemId id = psMemGetId();617 pmPeak **peak1 = (pmPeak **) psAlloc(sizeof(pmPeak *));618 *peak1 = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE);619 int rc = pmPeaksCompareDescend((const void **)peak1, NULL);620 ok(rc == -1, "pmPeaksCompareDescend() returned correct result (peak1 < peak2)");621 psFree(*peak1);622 psFree(peak1);623 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");624 }625 626 627 // Calling pmPeaksCompareDescend with NULL *peak1628 // XXX: This currently seg-faults because NULL args are not pretested in pmPeaksCompareDescend()629 if (0) {630 psMemId id = psMemGetId();631 pmPeak **peak1 = (pmPeak **) psAlloc(sizeof(pmPeak *));632 pmPeak **peak2 = (pmPeak **) psAlloc(sizeof(pmPeak *));633 *peak2 = pmPeakAlloc(3, 4, 3.0, PM_PEAK_LONE);634 int rc = pmPeaksCompareDescend((const void **)peak1, (const void **) peak2);635 ok(rc == -1, "pmPeaksCompareDescend() returned correct result (peak1 < peak2)");636 psFree(peak1);637 psFree(*peak2);638 psFree(peak2);639 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");640 }641 642 643 // Calling pmPeaksCompareDescend with NULL *peak2644 // XXX: This currently seg-faults because NULL args are not pretested in pmPeaksCompareDescend()645 if (0) {646 psMemId id = psMemGetId();647 pmPeak **peak1 = (pmPeak **) psAlloc(sizeof(pmPeak *));648 *peak1 = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE);649 pmPeak **peak2 = (pmPeak **) psAlloc(sizeof(pmPeak *));650 int rc = pmPeaksCompareDescend((const void **)peak1, (const void **) peak2);651 ok(rc == -1, "pmPeaksCompareDescend() returned correct result (peak1 < peak2)");652 psFree(*peak1);653 psFree(peak1);654 psFree(peak2);655 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");656 }657 658 // Calling pmPeaksCompareDescend with peak1 < peak2659 {660 psMemId id = psMemGetId();661 pmPeak **peak1 = (pmPeak **) psAlloc(sizeof(pmPeak *));662 *peak1 = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE);663 pmPeak **peak2 = (pmPeak **) psAlloc(sizeof(pmPeak *));664 *peak2 = pmPeakAlloc(3, 4, 3.0, PM_PEAK_LONE);665 int rc = pmPeaksCompareDescend((const void **)peak1, (const void **) peak2);666 ok(rc == 1, "pmPeaksCompareDescend() returned correct result (peak1 < peak2)");667 psFree(*peak1);668 psFree(peak1);669 psFree(*peak2);670 psFree(peak2);671 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");672 }673 674 675 // Calling pmPeaksCompareDescend with peak1 > peak2676 {677 psMemId id = psMemGetId();678 pmPeak **peak1 = (pmPeak **) psAlloc(sizeof(pmPeak *));679 *peak1 = pmPeakAlloc(3, 4, 3.0, PM_PEAK_LONE);680 pmPeak **peak2 = (pmPeak **) psAlloc(sizeof(pmPeak *));681 *peak2 = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE);682 int rc = pmPeaksCompareDescend((const void **)peak1, (const void **) peak2);683 ok(rc == -1, "pmPeaksCompareDescend() returned correct result (peak1 > peak2)");684 psFree(*peak1);685 psFree(peak1);686 psFree(*peak2);687 psFree(peak2);688 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");689 }690 691 692 // Calling pmPeaksCompareDescend with peak1 == peak2693 {694 psMemId id = psMemGetId();695 pmPeak **peak1 = (pmPeak **) psAlloc(sizeof(pmPeak *));696 *peak1 = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE);697 pmPeak **peak2 = (pmPeak **) psAlloc(sizeof(pmPeak *));698 *peak2 = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE);699 int rc = pmPeaksCompareDescend((const void **)peak1, (const void **) peak2);700 ok(rc == 0, "pmPeaksCompareDescend() returned correct result (peak1 == peak2)", rc);701 psFree(*peak1);702 psFree(peak1);703 psFree(*peak2);704 psFree(peak2);705 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");706 743 } 707 744 } 708 -
trunk/psModules/test/objects/tap_pmResiduals.c
r15726 r15985 5 5 #include "tap.h" 6 6 #include "pstap.h" 7 /* STATUS: 8 All functions are tested. 9 */ 7 10 8 11 int main(int argc, char* argv[]) … … 10 13 psLogSetFormat("HLNM"); 11 14 psLogSetLevel(PS_LOG_INFO); 12 plan_tests( 35);15 plan_tests(11); 13 16 14 17 -
trunk/psModules/test/objects/tap_pmSource.c
r15726 r15985 7 7 /* 8 8 Tested: 9 pmSourceAlloc() 10 psMemCheckSource() 11 pmSourceCopy() 12 pmSourceDefinePixels() 13 pmSourceRedefinePixels() 14 pmSourcePSFClump() 15 pmSourceGetModel() 16 Must Test: 17 pmSourceFreePixels() 18 pmSourceTest() 19 pmSourceRoughClass() 20 pmSourceMoments() 21 pmSourceAdd() 22 pmSourceSub() 23 pmSourceAddWithOffset() 24 pmSourceSubWithOffset() 25 pmSourceOp() 26 pmSourceCacheModel() 27 pmSourceCachePSF() 9 Tested 10 pmSourceAlloc() 11 pmSourceCopy() 12 pmSourceDefinePixels() 13 pmSourceRedefinePixels() 14 pmSourcePSFClump() 15 pmSourceGetModel() 16 pmSourceAdd() 17 pmSourceSub() 18 pmSourceAddWithOffset() 19 pmSourceSubWithOffset() 20 pmSourceOp() 21 pmSourceCacheModel() 22 pmSourceCachePSF() 23 pmSourceSortBySN() (COMPILER ERRORS) 24 pmSourceSortByY() (COMPILER ERRORS) 25 Must test 26 pmSourceMoments() 27 pmSourceRoughClass() 28 28 29 */ 29 30 … … 32 33 #define MISC_NAME "META00" 33 34 #define NUM_BIAS_DATA 10 34 #define TEST_NUM_ROWS ( 8+1)35 #define TEST_NUM_COLS ( 8+1)35 #define TEST_NUM_ROWS (4+1) 36 #define TEST_NUM_COLS (4+1) 36 37 #define VERBOSE 0 37 38 #define ERR_TRACE_LEVEL 0 39 #define TEST_FLOATS_EQUAL(X, Y) (abs(X - Y) < 0.01) 38 40 39 41 /****************************************************************************** … … 63 65 psLogSetLevel(PS_LOG_INFO); 64 66 psTraceSetLevel("err", ERR_TRACE_LEVEL); 65 plan_tests(1 );67 plan_tests(128); 66 68 67 69 // ---------------------------------------------------------------------- … … 494 496 psFree(src); 495 497 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 496 }497 498 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 499 } 498 500 499 501 // Call pmSourceGetModel() with acceptable input parameters … … 534 536 ok(false == isPDF, "pmSourceGetModel() set isPDF to FALSE"); 535 537 536 537 538 src->modelPSF = NULL; 538 539 src->modelConv = NULL; … … 558 559 } 559 560 561 562 // call pmSourceOp() with acceptable parameters 563 // We only test with a single Gaussian model, with no residuals or masks. 564 // For completeness, additional tests should be added. 565 // We should also set mode &= PM_MODEL_OP_NOISE to test that the src->weights are added. 566 { 567 psMemId id = psMemGetId(); 568 pmSource *src = pmSourceAlloc(); 569 src->pixels = psImageAlloc(TEST_NUM_COLS, TEST_NUM_ROWS, PS_TYPE_F32); 570 for (int i = 0 ; i < TEST_NUM_ROWS ; i++) { 571 for (int j = 0 ; j < TEST_NUM_COLS ; j++) { 572 src->pixels->data.F32[i][j] = 0.0; 573 } 574 } 575 src->peak = pmPeakAlloc(TEST_NUM_COLS/2, TEST_NUM_ROWS/2, 5.0, PM_PEAK_LONE); 576 src->type = PM_SOURCE_TYPE_STAR; 577 src->modelPSF = pmModelAlloc(pmModelClassGetType("PS_MODEL_GAUSS")); 578 psF32 *PAR = src->modelPSF->params->data.F32; 579 PAR[PM_PAR_I0] = 5.0; 580 PAR[PM_PAR_XPOS] = 0.0; 581 PAR[PM_PAR_YPOS] = 0.0; 582 PAR[PM_PAR_XPOS] = (float) (TEST_NUM_COLS/2); 583 PAR[PM_PAR_YPOS] = (float) (TEST_NUM_ROWS/2); 584 PAR[PM_PAR_SXX] = 10.0; 585 PAR[PM_PAR_SYY] = 10.0; 586 587 bool rc = pmSourceOp(src, PM_SOURCE_MODE_PSFMODEL, true, 0, 0, 0); 588 ok(rc == true, "pmSourceOp() returned TRUE with acceptable input parameters"); 589 psVector *x = psVectorAlloc(2, PS_TYPE_F32); 590 bool errorFlag = false; 591 for (int i = 0 ; i < TEST_NUM_ROWS ; i++) { 592 for (int j = 0 ; j < TEST_NUM_COLS ; j++) { 593 x->data.F32[0] = (float) j; 594 x->data.F32[1] = (float) i; 595 psF32 modF = src->modelPSF->modelFunc (NULL, src->modelPSF->params, x); 596 psF32 imgF = src->pixels->data.F32[i][j]; 597 if (!TEST_FLOATS_EQUAL(modF, imgF)) { 598 diag("ERROR: src->pixels[%d][%d] is %.2f, should be %.2f", i, j, src->pixels->data.F32[i][j], modF); 599 errorFlag = true; 600 } 601 } 602 } 603 ok(!errorFlag, "pmSourceOp() set the image pixels correctly (PSF function)"); 604 psFree(x); 605 psFree(src); 606 pmModelClassCleanup(); 607 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 608 } 609 610 611 // call pmSourceOp() with acceptable parameters 612 // Test source->modelFlux 613 // We should also set mode &= PM_MODEL_OP_NOISE to test that the src->weights are added. 614 { 615 psMemId id = psMemGetId(); 616 pmSource *src = pmSourceAlloc(); 617 src->pixels = psImageAlloc(TEST_NUM_COLS, TEST_NUM_ROWS, PS_TYPE_F32); 618 src->modelFlux = psImageAlloc(TEST_NUM_COLS, TEST_NUM_ROWS, PS_TYPE_F32); 619 for (int i = 0 ; i < TEST_NUM_ROWS ; i++) { 620 for (int j = 0 ; j < TEST_NUM_COLS ; j++) { 621 src->pixels->data.F32[i][j] = 0.0; 622 src->modelFlux->data.F32[i][j] = (float) (i + j); 623 } 624 } 625 src->peak = pmPeakAlloc(TEST_NUM_COLS/2, TEST_NUM_ROWS/2, 5.0, PM_PEAK_LONE); 626 src->type = PM_SOURCE_TYPE_STAR; 627 src->modelPSF = pmModelAlloc(pmModelClassGetType("PS_MODEL_GAUSS")); 628 psF32 *PAR = src->modelPSF->params->data.F32; 629 PAR[PM_PAR_I0] = 1.0; 630 PAR[PM_PAR_XPOS] = 0.0; 631 PAR[PM_PAR_YPOS] = 0.0; 632 PAR[PM_PAR_XPOS] = (float) (TEST_NUM_COLS/2); 633 PAR[PM_PAR_YPOS] = (float) (TEST_NUM_ROWS/2); 634 PAR[PM_PAR_SXX] = 10.0; 635 PAR[PM_PAR_SYY] = 10.0; 636 637 bool rc = pmSourceOp(src, PM_SOURCE_MODE_PSFMODEL, true, 0, 0, 0); 638 ok(rc == true, "pmSourceOp() returned TRUE with acceptable input parameters"); 639 psVector *x = psVectorAlloc(2, PS_TYPE_F32); 640 bool errorFlag = false; 641 for (int i = 0 ; i < TEST_NUM_ROWS ; i++) { 642 for (int j = 0 ; j < TEST_NUM_COLS ; j++) { 643 x->data.F32[0] = (float) j; 644 x->data.F32[1] = (float) i; 645 psF32 modF = src->modelFlux->data.F32[i][j]; 646 psF32 imgF = src->pixels->data.F32[i][j]; 647 if (!TEST_FLOATS_EQUAL(modF, imgF)) { 648 diag("ERROR: src->pixels[%d][%d] is %.2f, should be %.2f", i, j, src->pixels->data.F32[i][j], modF); 649 errorFlag = true; 650 } 651 } 652 } 653 ok(!errorFlag, "pmSourceOp() set the image pixels correctly (src->modelFlux cache image)"); 654 psFree(x); 655 psFree(src); 656 pmModelClassCleanup(); 657 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 658 } 659 660 661 // ---------------------------------------------------------------------- 662 // pmSourceCacheModel() tests 663 // call pmSourceCacheModel() with NULL pmSource input parameter 664 { 665 psMemId id = psMemGetId(); 666 bool rc = pmSourceCacheModel(NULL, 0); 667 ok(rc == false, "pmSourceCacheModel() returned FALSE with NULL pmSource input parameter"); 668 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 669 } 670 671 672 // ---------------------------------------------------------------------- 673 // pmSourceCacheModel() tests 674 // bool pmSourceCacheModel (pmSource *source, psMaskType maskVal) { 675 // call pmSourceCacheModel() with acceptable parameters 676 { 677 psMemId id = psMemGetId(); 678 pmSource *src = pmSourceAlloc(); 679 src->pixels = psImageAlloc(TEST_NUM_COLS, TEST_NUM_ROWS, PS_TYPE_F32); 680 for (int i = 0 ; i < TEST_NUM_ROWS ; i++) { 681 for (int j = 0 ; j < TEST_NUM_COLS ; j++) { 682 src->pixels->data.F32[i][j] = 0.0; 683 } 684 } 685 src->peak = pmPeakAlloc(TEST_NUM_COLS/2, TEST_NUM_ROWS/2, 5.0, PM_PEAK_LONE); 686 src->type = PM_SOURCE_TYPE_STAR; 687 src->modelPSF = pmModelAlloc(pmModelClassGetType("PS_MODEL_GAUSS")); 688 psF32 *PAR = src->modelPSF->params->data.F32; 689 PAR[PM_PAR_I0] = 1.0; 690 PAR[PM_PAR_XPOS] = 0.0; 691 PAR[PM_PAR_YPOS] = 0.0; 692 PAR[PM_PAR_XPOS] = (float) (TEST_NUM_COLS/2); 693 PAR[PM_PAR_YPOS] = (float) (TEST_NUM_ROWS/2); 694 PAR[PM_PAR_SXX] = 10.0; 695 PAR[PM_PAR_SYY] = 10.0; 696 697 bool rc = pmSourceCacheModel(src, 0); 698 ok(rc == true, "pmSourceCacheModel() returned TRUE with acceptable input parameters"); 699 700 psVector *x = psVectorAlloc(2, PS_TYPE_F32); 701 bool errorFlag = false; 702 for (int i = 0 ; i < TEST_NUM_ROWS ; i++) { 703 for (int j = 0 ; j < TEST_NUM_COLS ; j++) { 704 x->data.F32[0] = (float) j; 705 x->data.F32[1] = (float) i; 706 psF32 modF = src->modelPSF->modelFunc (NULL, src->modelPSF->params, x); 707 psF32 imgF = src->modelFlux->data.F32[i][j]; 708 if (!TEST_FLOATS_EQUAL(modF, imgF)) { 709 diag("ERROR: src->modelFlux[%d][%d] is %.2f, should be %.2f", i, j, src->modelFlux->data.F32[i][j], modF); 710 errorFlag = true; 711 } 712 } 713 } 714 ok(!errorFlag, "pmSourceCacheModel() set the src->modelFlux correctly (PSF function)"); 715 psFree(x); 716 psFree(src); 717 pmModelClassCleanup(); 718 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 719 } 720 721 722 // ---------------------------------------------------------------------- 723 // pmSourceCachePSF() tests 724 // bool pmSourceCachePSF (pmSource *source, psMaskType maskVal) { 725 // call pmSourceCachePSF() with NULL pmSource input parameter 726 { 727 psMemId id = psMemGetId(); 728 bool rc = pmSourceCachePSF(NULL, 0); 729 ok(rc == false, "pmSourceCachePSF() returned FALSE with NULL pmSource input parameter"); 730 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 731 } 732 733 734 // call pmSourceCachePSF() with acceptable parameters 735 { 736 psMemId id = psMemGetId(); 737 pmSource *src = pmSourceAlloc(); 738 src->pixels = psImageAlloc(TEST_NUM_COLS, TEST_NUM_ROWS, PS_TYPE_F32); 739 for (int i = 0 ; i < TEST_NUM_ROWS ; i++) { 740 for (int j = 0 ; j < TEST_NUM_COLS ; j++) { 741 src->pixels->data.F32[i][j] = 0.0; 742 } 743 } 744 src->peak = pmPeakAlloc(TEST_NUM_COLS/2, TEST_NUM_ROWS/2, 5.0, PM_PEAK_LONE); 745 src->type = PM_SOURCE_TYPE_STAR; 746 src->modelPSF = pmModelAlloc(pmModelClassGetType("PS_MODEL_GAUSS")); 747 psF32 *PAR = src->modelPSF->params->data.F32; 748 PAR[PM_PAR_I0] = 1.0; 749 PAR[PM_PAR_XPOS] = 0.0; 750 PAR[PM_PAR_YPOS] = 0.0; 751 PAR[PM_PAR_XPOS] = (float) (TEST_NUM_COLS/2); 752 PAR[PM_PAR_YPOS] = (float) (TEST_NUM_ROWS/2); 753 PAR[PM_PAR_SXX] = 10.0; 754 PAR[PM_PAR_SYY] = 10.0; 755 756 bool rc = pmSourceCachePSF(src, 0); 757 ok(rc == true, "pmSourceCachePSF() returned TRUE with acceptable input parameters"); 758 759 psVector *x = psVectorAlloc(2, PS_TYPE_F32); 760 bool errorFlag = false; 761 for (int i = 0 ; i < TEST_NUM_ROWS ; i++) { 762 for (int j = 0 ; j < TEST_NUM_COLS ; j++) { 763 x->data.F32[0] = (float) j; 764 x->data.F32[1] = (float) i; 765 psF32 modF = src->modelPSF->modelFunc (NULL, src->modelPSF->params, x); 766 psF32 imgF = src->psfFlux->data.F32[i][j]; 767 if (!TEST_FLOATS_EQUAL(modF, imgF)) { 768 diag("ERROR: src->psfFlux[%d][%d] is %.2f, should be %.2f", i, j, src->psfFlux->data.F32[i][j], modF); 769 errorFlag = true; 770 } 771 } 772 } 773 ok(!errorFlag, "pmSourceCachePSF() set the src->psfFlux correctly (PSF function)"); 774 psFree(x); 775 psFree(src); 776 pmModelClassCleanup(); 777 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 778 } 779 780 781 // ---------------------------------------- 782 // pmSourceSortBySN() tests 783 // int pmSourceSortBySN (const void **a, const void **b) 784 // Call pmSourceSortBySN() with acceptable input parameters. 785 // XXX: We don't test with NULL input parameters since this function has no PS_ASSERTS to protect 786 // against that. 787 /* XXXX: Compiler errors: fix this 788 { 789 psMemId id = psMemGetId(); 790 pmSource *src1 = pmSourceAlloc(); 791 src1->peak = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE); 792 src1->peak->SN = 10.0; 793 pmSource *src2 = pmSourceAlloc(); 794 src2->peak = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE); 795 src2->peak->SN = 20.0; 796 797 int rc = pmSourceSortBySN((const void **) &src1, (const void **) &src2); 798 ok(rc == 1, "pmSourceSortBySN() returned correct result (source1 < source2) (%d)", rc); 799 rc = pmSourceSortBySN((const void **) &src2, (const void **) &src1); 800 ok(rc == -1, "pmSourceSortBySN() returned correct result (source2 < source1) (%d)", rc); 801 rc = pmSourceSortBySN((const void **) &src1, (const void **) &src1); 802 ok(rc == 0, "pmSourceSortBySN() returned correct result (source1 == source2) (%d)", rc); 803 804 psFree(src1); 805 psFree(src2); 806 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 807 } 808 809 810 // ---------------------------------------- 811 // pmSourceSortByY() tests 812 // int pmSourceSortByY (const void **a, const void **b) 813 // Call pmSourceSortByY() with acceptable input parameters. 814 // XXX: We don't test with NULL input parameters since this function has no PS_ASSERTS to protect 815 // against that. 816 { 817 psMemId id = psMemGetId(); 818 pmSource *src1 = pmSourceAlloc(); 819 src1->peak = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE); 820 src1->peak->y = 10.0; 821 pmSource *src2 = pmSourceAlloc(); 822 src2->peak = pmPeakAlloc(3, 4, 2.0, PM_PEAK_LONE); 823 src2->peak->y = 20.0; 824 825 int rc = pmSourceSortByY((const void **) &src1, (const void **) &src2); 826 ok(rc == -1, "pmSourceSortByY() returned correct result (source1 < source2) (%d)", rc); 827 rc = pmSourceSortByY((const void **) &src2, (const void **) &src1); 828 ok(rc == 1, "pmSourceSortByY() returned correct result (source2 < source1) (%d)", rc); 829 rc = pmSourceSortByY((const void **) &src1, (const void **) &src1); 830 ok(rc == 0, "pmSourceSortByY() returned correct result (source1 == source2) (%d)", rc); 831 832 psFree(src1); 833 psFree(src2); 834 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 835 } 836 */ 837 560 838 } -
trunk/psModules/test/objects/tap_pmSourceContour.c
r15726 r15985 5 5 #include "tap.h" 6 6 #include "pstap.h" 7 // XXX: We only test with unallowable input parameters. 8 7 /* STATUS: 8 XXX: All functions only tested with unallowable input parameters. 9 I tried to use acceptable data, but could not get the source code to work the 10 way I thought it should have. 11 */ 9 12 #define MISC_NUM 32 10 13 #define MISC_NAME "META00" 11 14 #define NUM_BIAS_DATA 10 12 #define TEST_NUM_ROWS (1 6)13 #define TEST_NUM_COLS ( 30)15 #define TEST_NUM_ROWS (10) 16 #define TEST_NUM_COLS (16) 14 17 #define VERBOSE 0 15 #define ERR_TRACE_LEVEL 018 #define ERR_TRACE_LEVEL 10 16 19 #define TEST_FLOATS_EQUAL(X, Y) (abs(X - Y) < 0.0001) 17 20 #define NUM_SOURCES 100 … … 21 24 psLogSetLevel(PS_LOG_INFO); 22 25 psTraceSetLevel("err", ERR_TRACE_LEVEL); 23 plan_tests(1 4);26 plan_tests(11); 24 27 25 28 … … 28 31 // psArray *pmSourceContour (psImage *image, int xc, int yc, float threshold) 29 32 // Call pmSourceContour() with NULL psImage input parameter 30 if (1){33 { 31 34 psMemId id = psMemGetId(); 32 35 psImage *img = psImageAlloc(TEST_NUM_COLS, TEST_NUM_ROWS, PS_TYPE_F32); … … 39 42 40 43 // Call pmSourceContour() with unallowed row/column numbers 41 if (1){44 { 42 45 psMemId id = psMemGetId(); 43 46 psImage *img = psImageAlloc(TEST_NUM_COLS, TEST_NUM_ROWS, PS_TYPE_F32); … … 57 60 58 61 // Call pmSourceContour() with acceptable input parameters 59 if (1) { 62 // XXX: These tests currently fail 63 if (0) { 60 64 psMemId id = psMemGetId(); 61 65 psImage *img = psImageAlloc(TEST_NUM_COLS, TEST_NUM_ROWS, PS_TYPE_F32); 62 66 for (int i = 0 ; i < img->numRows ; i++) { 63 67 for (int j = 0 ; j < img->numCols ; j++) { 64 if ((i >= TEST_NUM_ROWS/4) && (i < 3*TEST_NUM_ROWS/4) && 65 (j >= TEST_NUM_COLS/4) && (j < 3*TEST_NUM_COLS/4)) { 66 img->data.F32[i][j] = 5.0; 67 } else { 68 img->data.F32[i][j] = 0.0; 69 } 68 img->data.F32[i][j] = (float) ((TEST_NUM_ROWS + TEST_NUM_COLS) - (abs(i - (TEST_NUM_ROWS/2)) + abs(j - (TEST_NUM_COLS/2)))); 70 69 } 71 70 } 72 if ( 0) {71 if (1) { 73 72 for (int i = 0 ; i < img->numRows ; i++) { 74 73 for (int j = 0 ; j < img->numCols ; j++) { … … 79 78 } 80 79 81 img->data.F32[TEST_NUM_ROWS/2][TEST_NUM_COLS/2] = 5.0; 82 83 psArray *array = pmSourceContour(img, TEST_NUM_COLS/2, TEST_NUM_ROWS/2, 3.0); 80 psArray *array = pmSourceContour(img, TEST_NUM_COLS/2, TEST_NUM_ROWS/2, 22.0); 84 81 ok(array != NULL, "pmSourceContour() returned non-NULL with acceptable input parameters"); 82 for (int i = 0 ; i < array->n ; i++) { 83 psVector *vec = (psVector *) array->data[i]; 84 printf("Point %d: (%.2f %.2f)\n", i, vec->data.F32[0], vec->data.F32[1]); 85 } 85 86 86 87 psFree(array); … … 94 95 // psArray *pmSourceContour_Crude_Crude(pmSource *source, psImage *image, psF32 level) 95 96 // Call pmSourceContour_Crude() with NULL psSource input parameter 96 if (1){97 { 97 98 psMemId id = psMemGetId(); 98 99 pmSource *src = pmSourceAlloc(); … … 122 123 123 124 // Call pmSourceContour_Crude() with NULL psImage input parameter 124 if (1){125 { 125 126 psMemId id = psMemGetId(); 126 127 pmSource *src = pmSourceAlloc(); … … 150 151 151 152 // Call pmSourceContour_Crude() with acceptable input parameters 152 if (1) { 153 // XXX: Must correct this 154 if (0) { 153 155 psMemId id = psMemGetId(); 154 156 pmSource *src = pmSourceAlloc(); … … 159 161 psImage *img = psImageAlloc(TEST_NUM_COLS, TEST_NUM_ROWS, PS_TYPE_F32); 160 162 161 if (0) for (int i = 0 ; i < img->numRows ; i++) { 162 for (int j = 0 ; j < img->numCols ; j++) { 163 if ((i >= TEST_NUM_ROWS/4) && (i < 3*TEST_NUM_ROWS/4) && 164 (j >= TEST_NUM_COLS/4) && (j < 3*TEST_NUM_COLS/4)) { 165 img->data.F32[i][j] = 5.0; 166 } else { 167 img->data.F32[i][j] = 0.0; 163 if (0) { 164 for (int i = 0 ; i < img->numRows ; i++) { 165 for (int j = 0 ; j < img->numCols ; j++) { 166 img->data.F32[i][j] = (float) ((TEST_NUM_ROWS + TEST_NUM_COLS) - (abs(i - (TEST_NUM_ROWS/2)) + abs(j - (TEST_NUM_COLS/2)))); 168 167 } 169 168 } 170 169 } 171 // psArray *array = pmSourceContour_Crude(src, img, 3.0); 172 // ok(array != NULL, "pmSourceContour_Crude() returned non-NULL with NULL pmImage input parameter"); 170 printf("Calling pmSourceContour_Crude()\n"); 171 psArray *array = pmSourceContour_Crude(src, img, 22.0); 172 printf("Called pmSourceContour_Crude()\n"); 173 ok(array != NULL, "pmSourceContour_Crude() returned non-NULL with NULL pmImage input parameter"); 173 174 psFree(img); 174 175 psFree(src); … … 176 177 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 177 178 } 178 179 180 181 179 } -
trunk/psModules/test/objects/tap_pmSourceExtendedPars.c
r15726 r15985 5 5 #include "tap.h" 6 6 #include "pstap.h" 7 /* STATUS: 8 All functions are tested. 9 */ 7 10 8 11 #define VERBOSE 0 9 #define ERR_TRACE_LEVEL 1012 #define ERR_TRACE_LEVEL 0 10 13 11 14 int main(int argc, char* argv[]) … … 14 17 psLogSetLevel(PS_LOG_INFO); 15 18 psTraceSetLevel("err", ERR_TRACE_LEVEL); 16 plan_tests(3 6);19 plan_tests(35); 17 20 18 21 // ---------------------------------------------------------------------- -
trunk/psModules/test/objects/tap_pmSourceFitSet.c
r15726 r15985 5 5 #include "tap.h" 6 6 #include "pstap.h" 7 // XXX: This source code file is very lighted test so far. 7 /* STATUS: 8 All functions are tested except: 9 pmSourceFitSetCheckLimits() 10 pmSourceFitSetFunction() 11 Those functions set static variables which aer invisible to test code. 12 13 These functions are very lightly tested and must be augmented: 14 pmSourceFitSet() 15 pmSourceFitSetMasks() 16 */ 8 17 9 18 #define MISC_NUM 32 … … 17 26 #define NUM_MODELS 5 18 27 28 pmSource *create_pmSource() { 29 pmSource *src = pmSourceAlloc(); 30 if (1) { 31 src->pixels = psImageAlloc(TEST_NUM_COLS, TEST_NUM_ROWS, PS_TYPE_F32); 32 src->weight = psImageAlloc(TEST_NUM_COLS, TEST_NUM_ROWS, PS_TYPE_F32); 33 src->maskObj = psImageAlloc(TEST_NUM_COLS, TEST_NUM_ROWS, PS_TYPE_U8); 34 if (1) { 35 for (int i = 0 ; i < TEST_NUM_ROWS ; i++) { 36 for (int j = 0 ; j < TEST_NUM_COLS ; j++) { 37 src->pixels->data.F32[i][j] = 0.0; 38 src->weight->data.F32[i][j] = 1.0; 39 src->maskObj->data.U8[i][j] = 0; 40 } 41 } 42 } 43 if (1) { 44 int halfRows = TEST_NUM_ROWS/2; 45 int halfCols = TEST_NUM_COLS/2; 46 for (int i = halfRows-1 ; i < halfRows+1 ; i++) { 47 for (int j = halfCols-1 ; j < halfCols+1 ; j++) { 48 src->pixels->data.F32[i][j] = 1.0; 49 } 50 } 51 src->pixels->data.F32[halfRows][halfCols] = 5.0; 52 } 53 } 54 return(src); 55 } 56 57 bool call_pmSourceFitSet() { 58 psArray *modelSet = psArrayAlloc(NUM_MODELS); 59 for (int i = 0 ; i < NUM_MODELS ; i++) { 60 modelSet->data[i] = (psPtr *) pmModelAlloc(i); 61 } 62 pmSource *src = create_pmSource(); 63 bool rc = pmSourceFitSet(src, modelSet, PM_SOURCE_FIT_PSF, 1); 64 if (!rc) { 65 diag("ERROR: pmSourceFitSet() returned FALSE"); 66 return(false); 67 } 68 psFree(src); 69 for (int i = 0 ; i < NUM_MODELS ; i++) { 70 psFree(modelSet->data[i]); 71 modelSet->data[i] = NULL; 72 } 73 psFree(modelSet); 74 pmModelClassCleanup(); 75 76 return(true); 77 } 78 79 19 80 int main(int argc, char* argv[]) 20 81 { … … 22 83 psLogSetLevel(PS_LOG_INFO); 23 84 psTraceSetLevel("err", ERR_TRACE_LEVEL); 24 plan_tests( 14);85 plan_tests(70); 25 86 26 87 … … 28 89 // pmSourceFitSetDataAlloc() tests 29 90 // Call pmSourceFitSetDataAlloc() with NULL psArray input parameter 30 if (1){91 { 31 92 psMemId id = psMemGetId(); 32 93 psArray *modelSet = psArrayAlloc(NUM_MODELS); … … 44 105 45 106 // Call pmSourceFitSetDataAlloc() with acceptable input parameters 46 // STATUS: fully tested 47 if (1) { 107 { 48 108 psMemId id = psMemGetId(); 49 109 psArray *modelSet = psArrayAlloc(NUM_MODELS); … … 86 146 // ---------------------------------------------------------------------- 87 147 // pmSourceFitSetCheckLimits() tests 88 // bool pmSourceFitSetCheckLimits (psMinConstraintMode mode, int nParam,89 // float *params, float *betas)90 148 // Call pmSourceFitSetCheckLimits() with thisSet == NULL 91 if (1) { 149 // XXX: Can not test full functionality of pmSourceFitSetCheckLimits() because it 150 // requires that the static variable thisSet be allocated. 151 { 92 152 psMemId id = psMemGetId(); 93 153 #define NUM_PARAMS 10 … … 102 162 103 163 104 // Call pmSourceFitSetCheckLimits() with acceptable data 105 // XXX: Must finish this. Use pmSourceFitSet() to set thisSet 164 // ---------------------------------------------------------------------- 165 // pmSourceFitSetFunction() tests 166 // Call pmSourceFitSetFunction() with thisSet == NULL 167 // XXX: Can not test full functionality of pmSourceFitSetCheckLimits() because it 168 // requires that the static variable thisSet be allocated. 169 { 170 psMemId id = psMemGetId(); 171 #define NUM_PARAMS 10 172 psVector *deriv = psVectorAlloc(NUM_PARAMS, PS_TYPE_F32); 173 psVector *param = psVectorAlloc(NUM_PARAMS, PS_TYPE_F32); 174 psVector *x = psVectorAlloc(NUM_PARAMS, PS_TYPE_F32); 175 psF32 tmpF = pmSourceFitSetFunction(deriv, param, x); 176 ok(isnan(tmpF), "pmSourceFitSetFunction() returned NULL with thisSet == FALSE"); 177 psFree(deriv); 178 psFree(param); 179 psFree(x); 180 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 181 } 182 183 184 // ---------------------------------------------------------------------- 185 // pmSourceFitSetJoin() tests 186 // Call pmSourceFitSetJoin() with NULL pmSourceFitSetData input parameter 187 { 188 psMemId id = psMemGetId(); 189 #define NUM_PARAMS 10 190 psVector *deriv = psVectorAlloc(NUM_PARAMS, PS_TYPE_F32); 191 psVector *param = psVectorAlloc(NUM_PARAMS, PS_TYPE_F32); 192 psArray *modelSet = psArrayAlloc(NUM_MODELS); 193 for (int i = 0 ; i < modelSet->n ; i++) { 194 modelSet->data[i] = (psPtr *) pmModelAlloc(i); 195 } 196 pmSourceFitSetData *set = pmSourceFitSetDataAlloc(modelSet); 197 bool rc = pmSourceFitSetJoin(deriv, param, NULL); 198 ok(rc == false, "pmSourceFitSetJoin() returned FALSE with NULL pmSourceFitSetData input parameter"); 199 psFree(deriv); 200 psFree(param); 201 psFree(modelSet); 202 psFree(set); 203 pmModelClassCleanup(); 204 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 205 } 206 207 208 // Call pmSourceFitSetJoin() with unequal size set->paramSet and set->derivSet input parameters 209 { 210 psMemId id = psMemGetId(); 211 psVector *deriv = psVectorAlloc(1000, PS_TYPE_F32); 212 psVector *param = psVectorAlloc(1000, PS_TYPE_F32); 213 psArray *modelSet = psArrayAlloc(NUM_MODELS); 214 for (int i = 0 ; i < modelSet->n ; i++) { 215 modelSet->data[i] = (psPtr *) pmModelAlloc(i); 216 } 217 pmSourceFitSetData *set = pmSourceFitSetDataAlloc(modelSet); 218 psFree(set->paramSet); 219 set->paramSet = psArrayAlloc(set->derivSet->n + 1); 220 bool rc = pmSourceFitSetJoin(deriv, param, set); 221 ok(rc == false, "pmSourceFitSetJoin() returned FALSE with unequal size set->paramSet and set->derivSet input parameters"); 222 psFree(deriv); 223 psFree(param); 224 psFree(modelSet); 225 psFree(set); 226 pmModelClassCleanup(); 227 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 228 } 229 230 231 // Call pmSourceFitSetJoin() with deriv and param input psVector too small 232 // XXX: Must add a PS_ASSERT to the source code to detect this 106 233 if (0) { 107 234 psMemId id = psMemGetId(); 235 psVector *small = psVectorAlloc(1, PS_TYPE_F32); 236 psVector *big = psVectorAlloc(1000, PS_TYPE_F32); 237 psArray *modelSet = psArrayAlloc(NUM_MODELS); 238 for (int i = 0 ; i < modelSet->n ; i++) { 239 modelSet->data[i] = (psPtr *) pmModelAlloc(i); 240 } 241 pmSourceFitSetData *set = pmSourceFitSetDataAlloc(modelSet); 242 bool rc = pmSourceFitSetJoin(small, big, set); 243 ok(rc == false, "pmSourceFitSetJoin() returned FALSE with deriv input psVector too small"); 244 rc = pmSourceFitSetJoin(big, small, set); 245 ok(rc == false, "pmSourceFitSetJoin() returned FALSE with param input psVector too small"); 246 psFree(small); 247 psFree(big); 248 psFree(modelSet); 249 psFree(set); 250 pmModelClassCleanup(); 251 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 252 } 253 254 255 // Call pmSourceFitSetJoin() with acceptable input parameters 256 { 257 psMemId id = psMemGetId(); 258 psVector *deriv = psVectorAlloc(1000, PS_TYPE_F32); 259 psVector *param = psVectorAlloc(1000, PS_TYPE_F32); 260 psArray *modelSet = psArrayAlloc(NUM_MODELS); 261 for (int i = 0 ; i < modelSet->n ; i++) { 262 modelSet->data[i] = (psPtr *) pmModelAlloc(i); 263 } 264 pmSourceFitSetData *set = pmSourceFitSetDataAlloc(modelSet); 265 266 psF32 cnt = 0.0; 267 for (int i = 0; i < set->paramSet->n; i++) { 268 psVector *paramOne = set->paramSet->data[i]; 269 psVector *derivOne = set->derivSet->data[i]; 270 for (int j = 0; j < paramOne->n; j++) { 271 paramOne->data.F32[j] = cnt; 272 derivOne->data.F32[j] = cnt; 273 cnt = cnt + 1.0; 274 } 275 } 276 277 bool rc = pmSourceFitSetJoin(deriv, param, set); 278 ok(rc == true, "pmSourceFitSetJoin() returned TRUE acceptable input parameters"); 279 280 bool errorFlag = false; 281 for (int i = 0; i < (int) cnt ; i++) { 282 if (deriv->data.F32[i] != (float) i) { 283 diag("ERROR: deriv->data.F32[%d] is %.2ff, should be %.2f\n", i, deriv->data.F32[i], (float) i); 284 errorFlag = true; 285 } 286 if (param->data.F32[i] != (float) i) { 287 diag("ERROR: param->data.F32[%d] is %.2ff, should be %.2f\n", i, param->data.F32[i], (float) i); 288 errorFlag = true; 289 } 290 } 291 ok(!errorFlag, "pmSourceFitSetJoin() set the deriv and param psVectors correctly"); 292 293 psFree(deriv); 294 psFree(param); 295 psFree(modelSet); 296 psFree(set); 297 pmModelClassCleanup(); 298 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 299 } 300 301 302 // ---------------------------------------------------------------------- 303 // pmSourceFitSetSplit() tests 304 // Call pmSourceFitSetSplit() with NULL pmSourceFitSetData input parameter 305 { 306 psMemId id = psMemGetId(); 108 307 #define NUM_PARAMS 10 109 psF32 *params = (psF32 *) psAlloc(NUM_PARAMS * sizeof(psF32)); 110 psF32 *betas = (psF32 *) psAlloc(NUM_PARAMS * sizeof(psF32)); 111 bool rc = pmSourceFitSetCheckLimits(PS_MINIMIZE_PARAM_MIN, 10, params, betas); 112 ok(rc == false, "pmSourceFitSetCheckLimits() returned NULL with thisSet == FALSE"); 113 psFree(params); 114 psFree(betas); 308 psVector *deriv = psVectorAlloc(NUM_PARAMS, PS_TYPE_F32); 309 psVector *param = psVectorAlloc(NUM_PARAMS, PS_TYPE_F32); 310 psArray *modelSet = psArrayAlloc(NUM_MODELS); 311 for (int i = 0 ; i < modelSet->n ; i++) { 312 modelSet->data[i] = (psPtr *) pmModelAlloc(i); 313 } 314 pmSourceFitSetData *set = pmSourceFitSetDataAlloc(modelSet); 315 bool rc = pmSourceFitSetSplit(NULL, deriv, param); 316 ok(rc == false, "pmSourceFitSetSplit() returned FALSE with NULL pmSourceFitSetData input parameter"); 317 psFree(deriv); 318 psFree(param); 319 psFree(modelSet); 320 psFree(set); 321 pmModelClassCleanup(); 322 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 323 } 324 325 326 // Call pmSourceFitSetSplit() with NULL src->paramSet and src->derivSet input parameters and 327 // src->paramSet and src->derivSet of unequal size 328 { 329 psMemId id = psMemGetId(); 330 #define NUM_PARAMS 10 331 psVector *deriv = psVectorAlloc(NUM_PARAMS, PS_TYPE_F32); 332 psVector *param = psVectorAlloc(NUM_PARAMS, PS_TYPE_F32); 333 psArray *modelSet = psArrayAlloc(NUM_MODELS); 334 for (int i = 0 ; i < modelSet->n ; i++) { 335 modelSet->data[i] = (psPtr *) pmModelAlloc(i); 336 } 337 pmSourceFitSetData *set = pmSourceFitSetDataAlloc(modelSet); 338 psArray *tmpArray = set->paramSet; 339 set->paramSet = NULL; 340 bool rc = pmSourceFitSetSplit(set, deriv, param); 341 ok(rc == false, "pmSourceFitSetSplit() returned FALSE with NULL src->paramSet input parameter"); 342 set->paramSet = tmpArray; 343 344 tmpArray = set->derivSet; 345 set->derivSet = NULL; 346 rc = pmSourceFitSetSplit(set, deriv, param); 347 ok(rc == false, "pmSourceFitSetSplit() returned FALSE with NULL src->derivSet input parameter"); 348 set->derivSet = tmpArray; 349 350 psFree(set->paramSet); 351 set->paramSet = psArrayAlloc(set->derivSet->n + 1); 352 ok(rc == false, "pmSourceFitSetSplit() returned FALSE with src->paramSet and src->derivSet of unequal size"); 353 354 psFree(deriv); 355 psFree(param); 356 psFree(modelSet); 357 psFree(set); 358 pmModelClassCleanup(); 359 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 360 } 361 362 363 // Call pmSourceFitSetSplit() with NULL param input parameter 364 { 365 psMemId id = psMemGetId(); 366 psVector *deriv = psVectorAlloc(1000, PS_TYPE_F32); 367 psVector *param = psVectorAlloc(1000, PS_TYPE_F32); 368 for (int i = 0 ; i < 1000 ; i++) { 369 param->data.F32[i] = (float) i; 370 deriv->data.F32[i] = (float) i; 371 } 372 psArray *modelSet = psArrayAlloc(NUM_MODELS); 373 for (int i = 0 ; i < modelSet->n ; i++) { 374 modelSet->data[i] = (psPtr *) pmModelAlloc(i); 375 } 376 pmSourceFitSetData *set = pmSourceFitSetDataAlloc(modelSet); 377 bool rc = pmSourceFitSetSplit(set, deriv, NULL); 378 ok(rc == false, "pmSourceFitSetSplit() returned FALSE with NULL param input parameter"); 379 psFree(deriv); 380 psFree(param); 381 psFree(modelSet); 382 psFree(set); 383 pmModelClassCleanup(); 384 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 385 } 386 387 388 // Call pmSourceFitSetSplit() with acceptable input parameters 389 { 390 psMemId id = psMemGetId(); 391 psVector *deriv = psVectorAlloc(1000, PS_TYPE_F32); 392 psVector *param = psVectorAlloc(1000, PS_TYPE_F32); 393 for (int i = 0 ; i < 1000 ; i++) { 394 deriv->data.F32[i] = (float) i; 395 param->data.F32[i] = (float) i; 396 } 397 psArray *modelSet = psArrayAlloc(NUM_MODELS); 398 for (int i = 0 ; i < modelSet->n ; i++) { 399 modelSet->data[i] = (psPtr *) pmModelAlloc(i); 400 } 401 pmSourceFitSetData *set = pmSourceFitSetDataAlloc(modelSet); 402 bool rc = pmSourceFitSetSplit(set, deriv, param); 403 ok(rc == true, "pmSourceFitSetSplit() returned FALSE with acceptable input parameters"); 404 405 bool errorFlag = false; 406 psF32 cnt = 0.0; 407 for (int i = 0; i < set->paramSet->n; i++) { 408 psVector *paramOne = set->paramSet->data[i]; 409 psVector *derivOne = set->derivSet->data[i]; 410 for (int j = 0; j < paramOne->n; j++) { 411 if (paramOne->data.F32[j] != cnt) { 412 diag("ERROR: paramOne->data.F32[%d] is %.2ff, should be %.2f\n", i, paramOne->data.F32[i], (float) i); 413 errorFlag = true; 414 } 415 if (derivOne->data.F32[j] != cnt) { 416 diag("ERROR: derivOne->data.F32[%d] is %.2ff, should be %.2f\n", i, derivOne->data.F32[i], (float) i); 417 errorFlag = true; 418 } 419 cnt = cnt + 1.0; 420 } 421 } 422 ok(!errorFlag, "pmSourceFitSetSplit() set the deriv and param psVectors correctly"); 423 424 psFree(deriv); 425 psFree(param); 426 psFree(modelSet); 427 psFree(set); 428 pmModelClassCleanup(); 429 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 430 } 431 432 433 // ---------------------------------------------------------------------- 434 // pmSourceFitSetValues() tests 435 // Call pmSourceFitSetValues() with bad input parameters 436 { 437 psMemId id = psMemGetId(); 438 #define VEC_SIZE 1000 439 #define NUM_ITER 32 440 #define TOL 0.1 441 psVector *param = psVectorAlloc(VEC_SIZE, PS_TYPE_F32); 442 psVector *dparam = psVectorAlloc(VEC_SIZE, PS_TYPE_F32); 443 psArray *modelSet = psArrayAlloc(NUM_MODELS); 444 for (int i = 0 ; i < modelSet->n ; i++) { 445 modelSet->data[i] = (psPtr *) pmModelAlloc(i); 446 } 447 pmSourceFitSetData *set = pmSourceFitSetDataAlloc(modelSet); 448 pmSource *src = create_pmSource(); 449 psMinimization *myMin = psMinimizationAlloc(NUM_ITER, TOL); 450 int nPix = 10; 451 bool fitStatus = true; 452 // NULL set input parameter 453 bool rc = pmSourceFitSetValues(NULL, dparam, param, src, myMin, nPix, fitStatus); 454 ok(rc == false, "pmSourceFitSetValues() returned FALSE with NULL set input parameter"); 455 456 // NULL set->paramSet 457 psArray *tmpArray = set->paramSet; 458 set->paramSet = NULL; 459 rc = pmSourceFitSetValues(set, dparam, param, src, myMin, nPix, fitStatus); 460 ok(rc == false, "pmSourceFitSetValues() returned FALSE with NULL set->paramSet"); 461 set->paramSet = tmpArray; 462 463 // NULL dparam input parameter 464 rc = pmSourceFitSetValues(set, NULL, param, src, myMin, nPix, fitStatus); 465 ok(rc == false, "pmSourceFitSetValues() returned FALSE with NULL dparam input parameter"); 466 467 // NULL param input parameter 468 rc = pmSourceFitSetValues(set, dparam, NULL, src, myMin, nPix, fitStatus); 469 ok(rc == false, "pmSourceFitSetValues() returned FALSE with NULL param input parameter"); 470 471 // NULL pmSource input parameter 472 rc = pmSourceFitSetValues(set, dparam, param, NULL, myMin, nPix, fitStatus); 473 ok(rc == false, "pmSourceFitSetValues() returned FALSE with NULL pmSource input parameter"); 474 475 // NULL pmSource->pixels input parameter 476 psImage *tmpImg = src->pixels; 477 src->pixels = NULL; 478 rc = pmSourceFitSetValues(set, dparam, param, src, myMin, nPix, fitStatus); 479 ok(rc == false, "pmSourceFitSetValues() returned FALSE with NULL pmSource->pixels input parameter"); 480 src->pixels = tmpImg; 481 482 // NULL psMinimization input parameter 483 rc = pmSourceFitSetValues(set, dparam, param, src, NULL, nPix, fitStatus); 484 ok(rc == false, "pmSourceFitSetValues() returned FALSE with NULL psMinimization input parameter"); 485 486 psFree(param); 487 psFree(dparam); 488 psFree(modelSet); 489 psFree(set); 490 psFree(src); 491 psFree(myMin); 492 pmModelClassCleanup(); 493 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 494 } 495 496 497 // pmSourceFitSetValues() tests 498 // Call pmSourceFitSetValues() with acceptable input parameters 499 { 500 psMemId id = psMemGetId(); 501 #define VEC_SIZE 1000 502 #define NUM_ITER 32 503 #define TOL 0.1 504 #define MIN_VALUE 22.0 505 #define NUM_PIX 100 506 psVector *param = psVectorAlloc(VEC_SIZE, PS_TYPE_F32); 507 psVector *dparam = psVectorAlloc(VEC_SIZE, PS_TYPE_F32); 508 for (int i = 0 ; i < VEC_SIZE ; i++) { 509 param->data.F32[i] = (float) i; 510 dparam->data.F32[i] = (float) i; 511 } 512 psArray *modelSet = psArrayAlloc(NUM_MODELS); 513 for (int i = 0 ; i < modelSet->n ; i++) { 514 modelSet->data[i] = (psPtr *) pmModelAlloc(i); 515 } 516 pmSourceFitSetData *set = pmSourceFitSetDataAlloc(modelSet); 517 pmSource *src = create_pmSource(); 518 psMinimization *myMin = psMinimizationAlloc(NUM_ITER, TOL); 519 int nPix = NUM_PIX; 520 bool fitStatus = true; 521 522 bool rc = pmSourceFitSetValues(set, dparam, param, src, myMin, nPix, fitStatus); 523 ok(rc == true, "pmSourceFitSetValues() returned TRUE with acceptable input paramaters"); 524 525 bool errorFlag = false; 526 psF32 cnt = 0.0; 527 for (int i = 0; i < set->paramSet->n; i++) { 528 pmModel *model = set->modelSet->data[i]; 529 for (int j = 0; j < model->params->n; j++) { 530 if (model->params->data.F32[j] != cnt) { 531 diag("ERROR: model->params->data.F32[%d] is %.2ff, should be %.2f\n", i, model->params->data.F32[i], (float) i); 532 errorFlag = true; 533 } 534 if (model->dparams->data.F32[j] != cnt) { 535 diag("ERROR: model->dparams->data.F32[%d] is %.2ff, should be %.2f\n", i, model->dparams->data.F32[i], (float) i); 536 errorFlag = true; 537 } 538 if (model->chisq != myMin->value) { 539 diag("ERROR: model->chisq is %.2f, should be %.2f", model->chisq, MIN_VALUE); 540 errorFlag = true; 541 } 542 if (model->nIter != myMin->iter) { 543 diag("ERROR: model->nIter is %.2f, should be %.2f", model->nIter, NUM_ITER); 544 errorFlag = true; 545 } 546 if (model->nDOF != NUM_PIX - model->params->n) { 547 diag("ERROR: model->nDOF is %d, should be %d", model->nDOF, NUM_PIX-model->params->n); 548 errorFlag = true; 549 } 550 551 cnt = cnt + 1.0; 552 } 553 } 554 ok(!errorFlag, "pmSourceFitSetValues() set the deriv and param psVectors correctly"); 555 556 psFree(param); 557 psFree(dparam); 558 psFree(modelSet); 559 psFree(set); 560 psFree(src); 561 psFree(myMin); 562 pmModelClassCleanup(); 563 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 564 } 565 566 567 568 // ---------------------------------------------------------------------- 569 // pmSourceFitSetMasks() tests 570 // Call pmSourceFitSetMasks() with bad input parameters 571 { 572 psMemId id = psMemGetId(); 573 #define VEC_SIZE 1000 574 #define NUM_ITER 32 575 #define TOL 0.1 576 psArray *modelSet = psArrayAlloc(NUM_MODELS); 577 for (int i = 0 ; i < modelSet->n ; i++) { 578 modelSet->data[i] = (psPtr *) pmModelAlloc(i); 579 } 580 pmSourceFitSetData *set = pmSourceFitSetDataAlloc(modelSet); 581 psMinConstraint *constraint = psMinConstraintAlloc(); 582 583 // NULL psMinConstraint input parameter 584 bool rc = pmSourceFitSetMasks(NULL, set, PM_SOURCE_FIT_NORM); 585 ok(rc == false, "pmSourceFitSetMasks() returned TRUE with NULL psMinConstraint input parameter"); 586 587 // NULL pmSourceFitSetData input parameter 588 rc = pmSourceFitSetMasks(constraint, NULL, PM_SOURCE_FIT_NORM); 589 ok(rc == false, "pmSourceFitSetMasks() returned TRUE with NULL pmSourceFitSetData input parameter"); 590 591 psFree(modelSet); 592 psFree(set); 593 psFree(constraint); 594 pmModelClassCleanup(); 595 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 596 } 597 598 599 // Call pmSourceFitSetMasks() with acceptable input parameters 600 // For thoroughness, we should test the PM_SOURCE_FIT_PSF and PM_SOURCE_FIT_EXT mode 601 { 602 psMemId id = psMemGetId(); 603 #define VEC_SIZE 1000 604 #define NUM_ITER 32 605 #define TOL 0.1 606 psArray *modelSet = psArrayAlloc(NUM_MODELS); 607 for (int i = 0 ; i < modelSet->n ; i++) { 608 modelSet->data[i] = (psPtr *) pmModelAlloc(i); 609 } 610 pmSourceFitSetData *set = pmSourceFitSetDataAlloc(modelSet); 611 psMinConstraint *constraint = psMinConstraintAlloc(); 612 constraint->paramMask = psVectorAlloc(1000, PS_TYPE_F32); 613 614 // Acceptable input parameters 615 bool rc = pmSourceFitSetMasks(constraint, set, PM_SOURCE_FIT_NORM); 616 ok(rc == true, "pmSourceFitSetMasks() returned TRUE with acceptable input parameters"); 617 618 bool errorFlag = false; 619 int n = 0; 620 for (int i = 0; i < set->paramSet->n; i++) { 621 psVector *paramOne = set->paramSet->data[i]; 622 for (int j = 0; j < paramOne->n; j++) { 623 if (j == PM_PAR_I0) continue; 624 if (constraint->paramMask->data.U8[n + j] != 1) { 625 diag("ERROR: constraint->paramMask->data.U8[%d] is %d, should be a", 626 n + j, constraint->paramMask->data.U8[n + j]); 627 errorFlag = true; 628 } 629 } 630 n += paramOne->n; 631 } 632 ok(!errorFlag, "pmSourceFitSetMasks() constraint->paramMask psVector correctly"); 633 634 psFree(modelSet); 635 psFree(set); 636 psFree(constraint); 637 pmModelClassCleanup(); 115 638 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 116 639 } … … 119 642 // ---------------------------------------------------------------------- 120 643 // pmSourceFitSet() tests 121 // bool pmSourceFitSet (pmSource *source, psArray *modelSet, 122 // pmSourceFitMode mode, psMaskType maskVal) 123 // Call pmSourceFitSet() with thisSet == NULL 644 // Call pmSourceFitSet() with NULL psSource input parameter 645 { 646 psMemId id = psMemGetId(); 647 psArray *modelSet = psArrayAlloc(NUM_MODELS); 648 for (int i = 0 ; i < NUM_MODELS ; i++) { 649 modelSet->data[i] = (psPtr *) pmModelAlloc(i); 650 } 651 pmSource *src = create_pmSource(); 652 bool rc = pmSourceFitSet(NULL, modelSet, PM_SOURCE_FIT_PSF, 1); 653 ok(rc == false, "pmSourceFitSet() returned FALSE with NULL psSource input parameter"); 654 psFree(src); 655 for (int i = 0 ; i < NUM_MODELS ; i++) { 656 psFree(modelSet->data[i]); 657 modelSet->data[i] = NULL; 658 } 659 psFree(modelSet); 660 pmModelClassCleanup(); 661 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 662 } 663 664 665 // Call pmSourceFitSet() with NULL psSource pixels, weight, maskObj input parameters 666 { 667 psMemId id = psMemGetId(); 668 psArray *modelSet = psArrayAlloc(NUM_MODELS); 669 for (int i = 0 ; i < NUM_MODELS ; i++) { 670 modelSet->data[i] = (psPtr *) pmModelAlloc(i); 671 } 672 pmSource *src = create_pmSource(); 673 psImage *tmpImg = src->pixels; 674 src->pixels = NULL; 675 bool rc = pmSourceFitSet(src, modelSet, PM_SOURCE_FIT_PSF, 1); 676 ok(rc == false, "pmSourceFitSet() returned FALSE with NULL src->pixels input parameter"); 677 src->pixels = tmpImg; 678 679 tmpImg = src->weight; 680 src->weight = NULL; 681 rc = pmSourceFitSet(src, modelSet, PM_SOURCE_FIT_PSF, 1); 682 ok(rc == false, "pmSourceFitSet() returned FALSE with NULL src->weight input parameter"); 683 src->weight = tmpImg; 684 685 tmpImg = src->maskObj; 686 src->maskObj = NULL; 687 rc = pmSourceFitSet(src, modelSet, PM_SOURCE_FIT_PSF, 1); 688 ok(rc == false, "pmSourceFitSet() returned FALSE with NULL src->maskObj input parameter"); 689 src->maskObj = tmpImg; 690 psFree(src); 691 for (int i = 0 ; i < NUM_MODELS ; i++) { 692 psFree(modelSet->data[i]); 693 modelSet->data[i] = NULL; 694 } 695 psFree(modelSet); 696 pmModelClassCleanup(); 697 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 698 } 699 700 701 // Call pmSourceFitSet() with acceptable input parameters 702 // This is a verly limited test. It only uses a simple object in the pmSource 703 // parameter and simply tests that pmSourceFitSet() returns teh correct type and mode. 704 // Must add more extensive input types. 124 705 if (1) { 125 706 psMemId id = psMemGetId(); 126 #define NUM_PARAMS 10 127 pmSource *src = pmSourceAlloc(); 128 src->pixels = psImageAlloc(TEST_NUM_COLS, TEST_NUM_ROWS, PS_TYPE_F32); 129 src->weight = psImageAlloc(TEST_NUM_COLS, TEST_NUM_ROWS, PS_TYPE_F32); 130 src->maskObj = psImageAlloc(TEST_NUM_COLS, TEST_NUM_ROWS, PS_TYPE_U8); 131 psArray *set = psArrayAlloc(NUM_MODELS); 132 for (int i = 0 ; i < set->n ; i++) { 133 set->data[i] = (psPtr *) pmModelAlloc(i); 134 } 135 bool rc = pmSourceFitSet(src, set, PM_SOURCE_FIT_PSF, 1); 136 ok(rc == false, "pmSourceFitSet() returned NULL with thisSet == FALSE"); 707 psArray *modelSet = psArrayAlloc(NUM_MODELS); 708 for (int i = 0 ; i < NUM_MODELS ; i++) { 709 modelSet->data[i] = (psPtr *) pmModelAlloc(i); 710 } 711 pmSource *src = create_pmSource(); 712 bool rc = pmSourceFitSet(src, modelSet, PM_SOURCE_FIT_PSF, 1); 713 ok(rc == true, "pmSourceFitSet() returned TRUE with acceptable parameters"); 714 ok(src->mode & PM_SOURCE_MODE_FITTED, "pmSourceFitSet() set source->mode |= PM_SOURCE_MODE_FITTED (%d)", src->mode); 715 ok(src->type == PM_SOURCE_TYPE_UNKNOWN, "pmSourceFitSet() set source->type correctly (%d)", src->type); 716 137 717 psFree(src); 138 psFree(set); 139 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 140 } 141 718 for (int i = 0 ; i < NUM_MODELS ; i++) { 719 psFree(modelSet->data[i]); 720 modelSet->data[i] = NULL; 721 } 722 psFree(modelSet); 723 pmModelClassCleanup(); 724 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 725 } 142 726 } -
trunk/psModules/test/objects/tap_pmSourceIO_PS1_DEV_0.c
r15726 r15985 5 5 #include "tap.h" 6 6 #include "pstap.h" 7 /* STATUS: 8 All functions are tested. 9 XX: These tests read/write a file. Must choose a more unique name. 10 */ 7 11 8 12 #define VERBOSE 0 … … 10 14 #define TEST_FLOATS_EQUAL(X, Y) (abs(X - Y) < 0.0001) 11 15 #define NUM_SOURCES 5 16 #define FITS_FILENAME ".tmp00" 12 17 int main(int argc, char* argv[]) 13 18 { … … 20 25 // ---------------------------------------------------------------------- 21 26 // pmSourcesWrite_PS1_DEV_0() tests 22 // bool pmSourcesWrite_PS1_DEV_0 (psFits *fits, psArray *sources,23 // psMetadata *imageHeader, psMetadata *tableHeader, char *extname)24 27 // Call pmSourcesWrite_PS1_DEV_0() with NULL psFits input parameter 25 if (1){26 psMemId id = psMemGetId(); 27 psFits* fitsFile = psFitsOpen( ".tmp00", "w");28 { 29 psMemId id = psMemGetId(); 30 psFits* fitsFile = psFitsOpen(FITS_FILENAME, "w"); 28 31 psArray *sources = psArrayAlloc(NUM_SOURCES); 29 32 for (int i = 0 ; i < sources->n ; i++) { … … 48 51 49 52 // Call pmSourcesWrite_PS1_DEV_0() with NULL pmSource input parameter 50 if (1){51 psMemId id = psMemGetId(); 52 psFits* fitsFile = psFitsOpen( ".tmp00", "w");53 { 54 psMemId id = psMemGetId(); 55 psFits* fitsFile = psFitsOpen(FITS_FILENAME, "w"); 53 56 psArray *sources = psArrayAlloc(NUM_SOURCES); 54 57 for (int i = 0 ; i < sources->n ; i++) { … … 72 75 73 76 // Call pmSourcesWrite_PS1_DEV_0() with NULL extname input parameter 74 if (1){75 psMemId id = psMemGetId(); 76 psFits* fitsFile = psFitsOpen( ".tmp00", "w");77 { 78 psMemId id = psMemGetId(); 79 psFits* fitsFile = psFitsOpen(FITS_FILENAME, "w"); 77 80 psArray *sources = psArrayAlloc(NUM_SOURCES); 78 81 for (int i = 0 ; i < sources->n ; i++) { … … 97 100 // ---------------------------------------------------------------------- 98 101 // pmSourcesRead_PS1_DEV_0() tests 99 // psArray *pmSourcesRead_PS1_DEV_0 (psFits *fits, psMetadata *header)100 //101 102 // Call pmSourcesRead_PS1_DEV_0() with NULL psFits input parameter 102 if (1){103 psMemId id = psMemGetId(); 104 psFits* fitsFile = psFitsOpen( ".tmp00", "r");103 { 104 psMemId id = psMemGetId(); 105 psFits* fitsFile = psFitsOpen(FITS_FILENAME, "r"); 105 106 psMetadata *header = psMetadataAlloc(); 106 107 psArray *array = pmSourcesRead_PS1_DEV_0(NULL, header); … … 113 114 114 115 // Call pmSourcesRead_PS1_DEV_0() with NULL header input parameter 115 if (1){116 psMemId id = psMemGetId(); 117 psFits* fitsFile = psFitsOpen( ".tmp00", "r");116 { 117 psMemId id = psMemGetId(); 118 psFits* fitsFile = psFitsOpen(FITS_FILENAME, "r"); 118 119 psMetadata *header = psMetadataAlloc(); 119 120 psArray *array = pmSourcesRead_PS1_DEV_0(fitsFile, NULL); … … 137 138 #define TEST_BASE_PIX_WEIGHT 90.0 138 139 #define TEST_BASE_PEAK_FLUX 120.0 139 if (1){140 psMemId id = psMemGetId(); 141 psFits* fitsFile = psFitsOpen( ".tmp00", "w");140 { 141 psMemId id = psMemGetId(); 142 psFits* fitsFile = psFitsOpen(FITS_FILENAME, "w"); 142 143 psArray *sources = psArrayAlloc(NUM_SOURCES); 143 144 for (int i = 0 ; i < sources->n ; i++) { … … 187 188 188 189 // Call pmSourcesRead_PS1_DEV_0() with acceptable input parameters 189 if (1){190 psMemId id = psMemGetId(); 191 psFits* fitsFile = psFitsOpen( ".tmp00", "r");190 { 191 psMemId id = psMemGetId(); 192 psFits* fitsFile = psFitsOpen(FITS_FILENAME, "r"); 192 193 psMetadata *header = psMetadataAlloc(); 193 194 psArray *array = pmSourcesRead_PS1_DEV_0(fitsFile, header); -
trunk/psModules/test/objects/tap_pmSourceIO_PS1_DEV_1.c
r15726 r15985 5 5 #include "tap.h" 6 6 #include "pstap.h" 7 /* STATUS: 8 No test for pmSourcesWrite_PS1_DEV_1_XSRC() since there is no associated 9 read function. 10 All other functions are tested. 11 XX: These tests read/write a file. Must choose a more unique name. 12 */ 7 13 8 14 #define MISC_NUM 32 … … 12 18 #define TEST_NUM_COLS (16) 13 19 #define VERBOSE 0 14 #define ERR_TRACE_LEVEL 1020 #define ERR_TRACE_LEVEL 0 15 21 #define TEST_FLOATS_EQUAL(X, Y) (abs(X - Y) < 0.0001) 16 22 #define NUM_SOURCES 5 … … 23 29 psLogSetLevel(PS_LOG_INFO); 24 30 psTraceSetLevel("err", ERR_TRACE_LEVEL); 25 plan_tests( 80);31 plan_tests(79); 26 32 27 33 28 34 // ---------------------------------------------------------------------- 29 35 // pmSourcesWrite_PS1_DEV_1() tests 30 // bool pmSourcesWrite_PS1_DEV_1 (psFits *fits, psArray *sources,31 // psMetadata *imageHeader, psMetadata *tableHeader, char *extname char *xsrcname)32 36 // Call pmSourcesWrite_PS1_DEV_1() with NULL psFits input parameter 33 if (1){37 { 34 38 psMemId id = psMemGetId(); 35 39 psFits* fitsFile = psFitsOpen(TABLE_FILENAME, "w"); … … 56 60 57 61 // Call pmSourcesWrite_PS1_DEV_1() with NULL pmSource input parameter 58 if (1){62 { 59 63 psMemId id = psMemGetId(); 60 64 psFits* fitsFile = psFitsOpen(TABLE_FILENAME, "w"); … … 80 84 81 85 // Call pmSourcesWrite_PS1_DEV_1() with NULL extname input parameter 82 if (1){86 { 83 87 psMemId id = psMemGetId(); 84 88 psFits* fitsFile = psFitsOpen(TABLE_FILENAME, "w"); … … 105 109 // ---------------------------------------------------------------------- 106 110 // pmSourcesRead_PS1_DEV_1() tests 107 // psArray *pmSourcesRead_PS1_DEV_1 (psFits *fits, psMetadata *header)108 //109 111 // Call pmSourcesRead_PS1_DEV_1() with NULL psFits input parameter 110 if (1){112 { 111 113 psMemId id = psMemGetId(); 112 114 psFits* fitsFile = psFitsOpen(TABLE_FILENAME, "r"); … … 121 123 122 124 // Call pmSourcesRead_PS1_DEV_1() with NULL header input parameter 123 if (1){125 { 124 126 psMemId id = psMemGetId(); 125 127 psFits* fitsFile = psFitsOpen(TABLE_FILENAME, "r"); … … 150 152 #define TEST_BASE_MODE 1 151 153 152 if (1){154 { 153 155 psMemId id = psMemGetId(); 154 156 psFits* fitsFile = psFitsOpen(TABLE_FILENAME, "w"); … … 203 205 src->sky = TEST_BASE_SKY + (float) i; 204 206 src->skyErr = TEST_BASE_SKY_ERR + (float) i; 205 src->psfProb = TEST_BASE_PSF_PROB + (float) i;207 // src->psfProb = TEST_BASE_PSF_PROB + (float) i; 206 208 src->crNsigma = TEST_BASE_CR_N_SIGMA + (float) i; 207 209 src->extNsigma = TEST_BASE_EXT_N_SIGMA + (float) i; … … 226 228 227 229 // Call pmSourcesRead_PS1_DEV_1() with acceptable input parameters 228 if (1){230 { 229 231 psMemId id = psMemGetId(); 230 232 psFits* fitsFile = psFitsOpen(tableFilename, "rw"); … … 304 306 pmModelClassCleanup(); 305 307 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 306 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");307 308 } 308 309 } -
trunk/psModules/test/objects/tap_pmSourceIO_SMPDATA.c
r15726 r15985 5 5 #include "tap.h" 6 6 #include "pstap.h" 7 /* STATUS: 8 All functions are tested. 9 */ 7 10 8 11 #define VERBOSE 0 … … 20 23 // ---------------------------------------------------------------------- 21 24 // pmSourcesWrite_SMPDATA() tests 22 // bool pmSourcesWrite_SMPDATA (psFits *fits, psArray *sources,23 // psMetadata *imageHeader, psMetadata *tableHeader, char *extname)24 25 // Call pmSourcesWrite_SMPDATA() with NULL psFits input parameter 25 if (1){26 { 26 27 psMemId id = psMemGetId(); 27 28 psFits* fitsFile = psFitsOpen(".tmp00", "w"); … … 48 49 49 50 // Call pmSourcesWrite_SMPDATA() with NULL pmSource input parameter 50 if (1){51 { 51 52 psMemId id = psMemGetId(); 52 53 psFits* fitsFile = psFitsOpen(".tmp00", "w"); … … 72 73 73 74 // Call pmSourcesWrite_SMPDATA() with NULL extname input parameter 74 if (1){75 { 75 76 psMemId id = psMemGetId(); 76 77 psFits* fitsFile = psFitsOpen(".tmp00", "w"); … … 97 98 // ---------------------------------------------------------------------- 98 99 // pmSourcesRead_SMPDATA() tests 99 // psArray *pmSourcesRead_SMPDATA (psFits *fits, psMetadata *header)100 //101 100 // Call pmSourcesRead_SMPDATA() with NULL psFits input parameter 102 if (1){101 { 103 102 psMemId id = psMemGetId(); 104 103 psFits* fitsFile = psFitsOpen(".tmp00", "r"); … … 113 112 114 113 // Call pmSourcesRead_SMPDATA() with NULL header input parameter 115 if (1){114 { 116 115 psMemId id = psMemGetId(); 117 116 psFits* fitsFile = psFitsOpen(".tmp00", "r"); … … 140 139 #define TEST_BASE_AP_MAG 160.0 141 140 // XXX: The following metadata items are not tested: FWHM_X, FWHM_Y, THETA 142 if (1){141 { 143 142 psMemId id = psMemGetId(); 144 143 psFits* fitsFile = psFitsOpen(".tmp00", "w"); … … 191 190 192 191 // Call pmSourcesRead_SMPDATA() with acceptable input parameters 193 if (1){192 { 194 193 psMemId id = psMemGetId(); 195 194 psFits* fitsFile = psFitsOpen(".tmp00", "r"); … … 241 240 src->type, PM_SOURCE_TYPE_EXTENDED); 242 241 } 243 tmpF = PS_MIN(255, PS_MAX(0, (255*(TEST_BASE_PIX_WEIGHT + (float) i)))) / 255.0; 242 psU8 tmpU8 = (psU8) PS_MIN(255, PS_MAX(0, (255*(TEST_BASE_PIX_WEIGHT + (float) i)))); 243 tmpF = (psF32) (tmpU8 / 255.0); 244 244 ok(src->pixWeight == tmpF, "pmSourcesRead_SMPDATA() set src->pixWeight correctly (is %.2f, should be %.2f)", 245 245 src->pixWeight, tmpF); -
trunk/psModules/test/objects/tap_pmSourceSky.c
r15726 r15985 5 5 #include "tap.h" 6 6 #include "pstap.h" 7 /* STATUS: 8 All functions are tested. 9 pmSourceLocalSky(): needs more thorough testing with acceptable input params. 10 pmSourceLocalSkyVariance(): needs more thorough testing with acceptable input params. 11 */ 7 12 8 13 #define MISC_NUM 32 -
trunk/psModules/test/objects/tap_pmSourceUtils.c
r15726 r15985 5 5 #include "tap.h" 6 6 #include "pstap.h" 7 // XXX: We only test with unallowable input parameters so far. 7 /* STATUS 8 All functions are tested. 9 pmSourceFromModel(): Must verify the pmSourceDefinePixels() set the 10 values correctly. 11 */ 8 12 9 13 #define MISC_NUM 32 … … 14 18 #define VERBOSE 0 15 19 #define ERR_TRACE_LEVEL 0 16 #define TEST_FLOATS_EQUAL(X, Y) (abs( X - Y) < 0.0001)20 #define TEST_FLOATS_EQUAL(X, Y) (abs((X) - (Y)) < 0.0001) 17 21 #define NUM_SOURCES 100 18 22 … … 83 87 } 84 88 85 //XXX: Should the region be set some other way? Like through the various config files?86 // psRegion *region = psRegionAlloc(0.0, TEST_NUM_COLS-1, 0.0, TEST_NUM_ROWS-1);87 89 psRegion *region = psRegionAlloc(0.0, 0.0, 0.0, 0.0); 88 90 // You shouldn't have to remove the key from the metadata. Find out how to simply change the key value. … … 108 110 psTraceSetLevel("err", ERR_TRACE_LEVEL); 109 111 psTraceSetLevel("psModules.objects", 0); 110 plan_tests( 14);112 plan_tests(23); 111 113 112 114 113 115 // ---------------------------------------------------------------------- 114 116 // pmSourceModelGuess() tests 115 // pmModel *pmSourceModelGuess(pmSource *source, pmModelType modelType)116 117 // Call pmSourceModelGuess() with NULL pmSource input parameter 117 if (1){118 { 118 119 psMemId id = psMemGetId(); 119 120 pmSource *src = pmSourceAlloc(); … … 130 131 131 132 // Call pmSourceModelGuess() with NULL pmSource->peak input parameter 132 if (1){133 { 133 134 psMemId id = psMemGetId(); 134 135 pmSource *src = pmSourceAlloc(); … … 144 145 145 146 // Call pmSourceModelGuess() with NULL pmSource->moments input parameter 146 if (1){147 { 147 148 psMemId id = psMemGetId(); 148 149 pmSource *src = pmSourceAlloc(); … … 159 160 // pmModel *pmSourceModelGuess(pmSource *source, pmModelType modelType) 160 161 // Call pmSourceModelGuess() with acceptable input parameters 161 // XXX: Must verify that the values of the new pmModel are set correctly. 162 if (1) { 162 // We only test a single model (PS_MODEL_GAUSS), but since this function is mostly 163 // a wrapper to the model functions, that will suffice. 164 { 163 165 psMemId id = psMemGetId(); 164 166 pmSource *src = pmSourceAlloc(); … … 174 176 src->moments->y = 7.0; 175 177 176 pmModelType type = pmModelClassGetType ("PS_MODEL_GAUSS");178 pmModelType type = pmModelClassGetType("PS_MODEL_GAUSS"); 177 179 pmModel *testModel = pmModelAlloc(type); 178 180 testModel->modelGuess(testModel, src); 179 181 pmModel *model = pmSourceModelGuess(src, type); 180 182 ok(model != NULL, "pmSourceModelGuess() returned non-NULL with acceptable input parameters"); 181 183 psF32 *PAR = model->params->data.F32; 184 psEllipseMoments emoments; 185 emoments.x2 = src->moments->Sx; 186 emoments.y2 = src->moments->Sy; 187 emoments.xy = src->moments->Sxy; 188 // force the axis ratio to be < 20.0 189 psEllipseAxes axes = psEllipseMomentsToAxes (emoments, 20.0); 190 psEllipseShape shape = psEllipseAxesToShape (axes); 191 ok(TEST_FLOATS_EQUAL(PAR[PM_PAR_SKY], src->moments->Sky), "pmSourceModelGuess() returned set model->params[PM_PAR_SKY] correctly"); 192 ok(TEST_FLOATS_EQUAL(PAR[PM_PAR_I0], src->moments->Peak - src->moments->Sky), "pmSourceModelGuess() returned set model->params[PM_PAR_IO] correctly"); 193 ok(TEST_FLOATS_EQUAL(PAR[PM_PAR_XPOS], src->moments->x), "pmSourceModelGuess() returned set model->params[PM_PAR_XPOS] correctly"); 194 ok(TEST_FLOATS_EQUAL(PAR[PM_PAR_YPOS], src->moments->y), "pmSourceModelGuess() returned set model->params[PM_PAR_YPOS] correctly"); 195 ok(TEST_FLOATS_EQUAL(PAR[PM_PAR_SXX], PS_MAX(0.5, M_SQRT2*shape.sx)), "pmSourceModelGuess() returned set model->params[PM_PAR_SXX] correctly"); 196 ok(TEST_FLOATS_EQUAL(PAR[PM_PAR_SYY], PS_MAX(0.5, M_SQRT2*shape.sy)), "pmSourceModelGuess() returned set model->params[PM_PAR_SYY] correctly"); 197 ok(TEST_FLOATS_EQUAL(PAR[PM_PAR_SXY], shape.sxy), "pmSourceModelGuess() returned set model->params[PM_PAR_SXY] correctly"); 182 198 psFree(src); 183 199 psFree(testModel); … … 190 206 // ---------------------------------------------------------------------- 191 207 // pmSourceModelGuess() tests 192 // pmSource *pmSourceFromModel (pmModel *model, pmReadout *readout,193 // float radius, pmSourceType type)194 208 // Call pmSourceFromModel() with NULL pmModel input parameter 195 if (1){209 { 196 210 psMemId id = psMemGetId(); 197 211 pmModelType type = pmModelClassGetType ("PS_MODEL_GAUSS"); … … 210 224 211 225 // Call pmSourceFromModel() with NULL pmReadout input parameter 212 if (1){226 { 213 227 psMemId id = psMemGetId(); 214 228 … … 227 241 228 242 // Call pmSourceFromModel() with acceptable input parameters 229 // XXX: Must verify that the values of the new pmSource are set correctly. 230 if (1) { 231 psMemId id = psMemGetId(); 232 233 pmModelType type = pmModelClassGetType ("PS_MODEL_GAUSS"); 234 pmModel *model = pmModelAlloc(type); 243 // XXX: Must verify the pmSourceDefinePixels() set the values correctly. 244 { 245 psMemId id = psMemGetId(); 246 247 pmModel *model = pmModelAlloc(pmModelClassGetType("PS_MODEL_GAUSS")); 248 float Io = model->params->data.F32[PM_PAR_I0] = 2.0; 249 float xChip = model->params->data.F32[PM_PAR_XPOS] = 3.0; 250 float yChip = model->params->data.F32[PM_PAR_YPOS] = 5.0; 235 251 pmCell *cell = generateSimpleCell(NULL); 236 252 pmReadout *readout = cell->readouts->data[0]; 237 253 pmSource *src = pmSourceFromModel(model, readout, 10.0, PM_SOURCE_TYPE_STAR); 238 254 ok(src != NULL, "pmSourceFromModel() returned non-NULL with acceptable input parameters"); 255 ok(src->modelPSF == model, "pmSourceFromModel() set pmSource->modelPSF correctly"); 256 257 pmPeak *tmpPeak = pmPeakAlloc (xChip, yChip, Io, PM_PEAK_LONE); 258 ok(src->peak->x == xChip, "pmSourceFromModel() set pmSource->peak->x correctly (%.2f %.2f)", src->peak->x, xChip); 259 239 260 psFree(model); 240 261 // XXX: We get psMemory aborts if the following is not done. 241 262 // There is probably an issue with psMemIncrRefCounter() in pmSourceUtils.c 263 242 264 src->modelPSF = NULL; 243 265 src->modelEXT = NULL; 244 266 psFree(src); 267 psFree(tmpPeak); 245 268 myFreeCell(cell); 246 269 pmModelClassCleanup(); 247 270 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 248 271 } 249 250 251 } 252 272 } -
trunk/psModules/test/objects/tap_pmTrend2D.c
r15726 r15985 5 5 #include "tap.h" 6 6 #include "pstap.h" 7 /* STATUS: 8 All functions are tested. 9 pmTrend2DFit(): Must test the PM_TREND_MAP case. 10 */ 7 11 8 12 #define NUM_ROWS 8 9 13 #define NUM_COLS 16 10 14 #define ERR_TRACE_LEVEL 0 15 #define TEST_FLOATS_EQUAL(X, Y) (abs(X - Y) < 0.01) 11 16 12 17 int main(int argc, char* argv[]) … … 15 20 psLogSetLevel(PS_LOG_INFO); 16 21 psTraceSetLevel("err", ERR_TRACE_LEVEL); 17 plan_tests( 35);22 plan_tests(91); 18 23 19 24 // ------------------------------------------------------------------------ 20 25 // Test pmTrend2DAlloc() 21 // pmTrend2D *pmTrend2DAlloc(pmTrend2DMode mode, psImage *image,22 // int nXtrend, int nYtrend, psStats *stats)23 26 // Call pmTrend2DAlloc() with NULL psImage input parameter (PM_TREND_MAP) 24 27 { … … 121 124 // ------------------------------------------------------------------------ 122 125 // Test pmTrend2DNoImageAlloc() 123 // pmTrend2D *pmTrend2DNoImageAlloc (pmTrend2DMode mode,124 // psImageBinning *binning, psStats *stats)125 126 // Call pmTrend2DNoImageAlloc() with NULL psImageBinning input parameter 126 127 { … … 132 133 psFree(stats); 133 134 psFree(binning); 135 psFree(trend); 134 136 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 135 137 } … … 192 194 } 193 195 196 194 197 // ------------------------------------------------------------------------ 195 198 // Test pmTrend2DFieldAlloc() 196 // pmTrend2D *pmTrend2DFieldAlloc (pmTrend2DMode mode, int nXfield,197 // int nYfield, int nXtrend, int nYtrend, psStats *stats)198 //199 199 // Call pmTrend2DFieldAlloc() with NULL psStats input parameter 200 200 { … … 221 221 ok(trend->poly->nY == 4, "pmTrend2DFieldAlloc() set trend->poly->nY correctly"); 222 222 psFree(trend); 223 trend = NULL; 223 224 224 225 // Create a new pmTrend with PM_TREND_MAP 225 226 // XXX: This currently fails due to a big in pmTrend2DFieldAlloc(): 226 // psImageMapAlloc() is called with a NULL field input parameter. 227 { 227 if (0) { 228 228 trend = pmTrend2DFieldAlloc(PM_TREND_MAP, 1, 2, 3, 4, stats); 229 229 ok(trend->map != NULL && psMemCheckImageMap(trend->map), … … 241 241 // psString pmTrend2DModeToString (pmTrend2DMode mode) 242 242 // Call pmTrend2DModeToString() with unallowed pmTrend2DMode. 243 // XX X: We comment this out because pmTrend2DModeToString() aborts.243 // XX: We comment this out because pmTrend2DModeToString() aborts. 244 244 if (0) { 245 245 psMemId id = psMemGetId(); … … 251 251 252 252 // Call pmTrend2DModeToString() with unallowed pmTrend2DMode. 253 // XXX: We comment this out because pmTrend2DModeToString() aborts.254 253 { 255 254 psMemId id = psMemGetId(); … … 276 275 // ------------------------------------------------------------------------ 277 276 // Test pmTrend2DModeFromString() 278 // pmTrend2DMode pmTrend2DModeFromString (psString name) {279 277 // Call pmTrend2DModeFromString() with NULL input parameter 280 278 { … … 295 293 296 294 297 // Call pmTrend2DModeFromString() with unallowedinput string295 // Call pmTrend2DModeFromString() with acceptable input string 298 296 { 299 297 psMemId id = psMemGetId(); … … 304 302 305 303 306 // Call pmTrend2DModeFromString() with unallowedinput string304 // Call pmTrend2DModeFromString() with acceptable input string 307 305 { 308 306 psMemId id = psMemGetId(); … … 313 311 314 312 315 // Call pmTrend2DModeFromString() with unallowedinput string313 // Call pmTrend2DModeFromString() with acceptable input string 316 314 { 317 315 psMemId id = psMemGetId(); … … 322 320 323 321 324 // Call pmTrend2DModeFromString() with unallowedinput string322 // Call pmTrend2DModeFromString() with acceptable input string 325 323 { 326 324 psMemId id = psMemGetId(); … … 331 329 332 330 331 // ------------------------------------------------------------------------ 332 // Test pmTrend2DFit() 333 // Call pmTrend2DFit() with bad input parameters 334 { 335 #define VEC_SIZE 9 336 psMemId id = psMemGetId(); 337 psImage *img = psImageAlloc(NUM_COLS, NUM_ROWS, PS_TYPE_F32); 338 psStats *stats = psStatsAlloc(PS_STAT_SAMPLE_MEAN | PS_STAT_SAMPLE_STDEV); 339 pmTrend2D *trend = pmTrend2DAlloc(PM_TREND_POLY_ORD, img, 4, 4, stats); 340 ok(trend != NULL && psMemCheckTrend2D(trend), 341 "pmTrend2DAlloc() returned non-NULL with acceptable input parameters"); 342 psVector *x = psVectorAlloc(VEC_SIZE, PS_TYPE_F32); 343 psVector *y = psVectorAlloc(VEC_SIZE, PS_TYPE_F32); 344 psVector *f = psVectorAlloc(VEC_SIZE, PS_TYPE_F32); 345 psVector *mask = psVectorAlloc(VEC_SIZE, PS_TYPE_U8); 346 psVector *df = psVectorAlloc(VEC_SIZE, PS_TYPE_F32); 347 for (int i = 0 ; i < VEC_SIZE ; i++) { 348 x->data.F32[i] = (float) (i); 349 y->data.F32[i] = (float) (2 * i); 350 f->data.F32[i] = x->data.F32[i] * y->data.F32[i]; 351 mask->data.U8[i] = 0; 352 df->data.F32[i] = 0.0; 353 } 354 355 // NULL pmTrend2D input parameter 356 bool rc = pmTrend2DFit(NULL, mask, 0, x, y, f, df); 357 ok(rc == false, "pmTrend2DFit() returned FALSE with NULL pmTrend2D input parameter"); 358 359 // NULL mask input parameter 360 rc = pmTrend2DFit(trend, NULL, 0, x, y, f, df); 361 ok(rc == false, "pmTrend2DFit() returned FALSE with NULL mask input parameter"); 362 363 // NULL x psVector input parameter 364 rc = pmTrend2DFit(trend, mask, 0, NULL, y, f, df); 365 ok(rc == false, "pmTrend2DFit() returned FALSE with NULL x psVector input parameter"); 366 367 // NULL y psVector input parameter 368 rc = pmTrend2DFit(trend, mask, 0, x, NULL, f, df); 369 ok(rc == false, "pmTrend2DFit() returned FALSE with NULL y psVector input parameter"); 370 371 // NULL f psVector input parameter 372 rc = pmTrend2DFit(trend, mask, 0, x, y, NULL, df); 373 ok(rc == false, "pmTrend2DFit() returned FALSE with NULL f psVector input parameter"); 374 375 // NULL df psVector input parameter 376 rc = pmTrend2DFit(trend, mask, 0, x, y, f, NULL); 377 ok(rc == true, "pmTrend2DFit() returned TRUE with NULL df psVector input parameter"); 378 379 psFree(img); 380 psFree(stats); 381 psFree(trend); 382 psFree(x); 383 psFree(y); 384 psFree(f); 385 psFree(mask); 386 psFree(df); 387 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 388 } 389 390 391 // ------------------------------------------------------------------------ 392 // Test pmTrend2DEval() 393 // Call pmTrend2DEval() with bad input parameters 394 { 395 psMemId id = psMemGetId(); 396 psF64 tmpD = pmTrend2DEval(NULL, 0.0, 0.0); 397 ok(TEST_FLOATS_EQUAL(tmpD, 0.0), "pmTrend2DEval() returned 0.0 with NULL pmTrend2D input parameter"); 398 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 399 } 400 401 402 // ------------------------------------------------------------------------ 403 // Test pmTrend2DEvalVector() 404 // psVector *pmTrend2DEvalVector (pmTrend2D *trend, psVector *x, psVector *y) 405 // Call pmTrend2DEvalVector() with bad input parameters 406 { 407 psMemId id = psMemGetId(); 408 psImage *img = psImageAlloc(NUM_COLS, NUM_ROWS, PS_TYPE_F32); 409 psStats *stats = psStatsAlloc(PS_STAT_SAMPLE_MEAN | PS_STAT_SAMPLE_STDEV); 410 pmTrend2D *trend = pmTrend2DAlloc(PM_TREND_POLY_ORD, img, 4, 4, stats); 411 psVector *x = psVectorAlloc(VEC_SIZE, PS_TYPE_F32); 412 psVector *y = psVectorAlloc(VEC_SIZE, PS_TYPE_F32); 413 414 // NULL pmTrend2D input parameter 415 psVector *f = pmTrend2DEvalVector(NULL, x, y); 416 ok(f == NULL, "pmTrend2DEvalVector() returned NULL with NULL pmTrend2D input parameter"); 417 418 // NULL x psVector input parameter 419 f = pmTrend2DEvalVector(trend, NULL, y); 420 ok(f == NULL, "pmTrend2DEvalVector() returned NULL with NULL x psVector input parameter"); 421 422 // NULL y psVector input parameter 423 f = pmTrend2DEvalVector(trend, x, NULL); 424 ok(f == NULL, "pmTrend2DEvalVector() returned NULL with NULL y psVector input parameter"); 425 426 psFree(img); 427 psFree(stats); 428 psFree(trend); 429 psFree(x); 430 psFree(y); 431 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 432 } 433 434 435 // Test pmTrend2DFit(), pmTrend2DEval(), pmTrend2DEvalVector() with acceptable input parameters 436 // NOTE: We only test with a very simple 2D polynomial fit. This is appropriate since the 437 // polynomial testing routines are tested extensively elsewhere. 438 // XXX: Must test the PM_TREND_MAP case. 439 { 440 #define VEC_SIZE 9 441 psMemId id = psMemGetId(); 442 psImage *img = psImageAlloc(NUM_COLS, NUM_ROWS, PS_TYPE_F32); 443 psStats *stats = psStatsAlloc(PS_STAT_SAMPLE_MEAN | PS_STAT_SAMPLE_STDEV); 444 pmTrend2D *trend = pmTrend2DAlloc(PM_TREND_POLY_ORD, img, 4, 4, stats); 445 ok(trend != NULL && psMemCheckTrend2D(trend), 446 "pmTrend2DAlloc() returned non-NULL with acceptable input parameters"); 447 psVector *x = psVectorAlloc(VEC_SIZE, PS_TYPE_F32); 448 psVector *y = psVectorAlloc(VEC_SIZE, PS_TYPE_F32); 449 psVector *f = psVectorAlloc(VEC_SIZE, PS_TYPE_F32); 450 psVector *mask = psVectorAlloc(VEC_SIZE, PS_TYPE_U8); 451 psVector *df = psVectorAlloc(VEC_SIZE, PS_TYPE_F32); 452 453 int cnt = 0; 454 for (int i = 0 ; i < 3 ; i++) { 455 for (int j = 0 ; j < 3 ; j++) { 456 x->data.F32[cnt] = (float) i; 457 y->data.F32[cnt] = (float) j; 458 f->data.F32[cnt] = x->data.F32[cnt] * y->data.F32[cnt]; 459 mask->data.U8[cnt] = 0; 460 df->data.F32[cnt] = 0.0; 461 cnt++; 462 } 463 } 464 465 bool rc = pmTrend2DFit(trend, mask, 0, x, y, f, NULL); 466 ok(rc == true, "pmTrend2DFit() returned TRUE with acceptable input parameters"); 467 468 // Test pmTrend2DFit, pmTrend2DEval() 469 bool errorFlag = false; 470 for (int i = 0 ; i < VEC_SIZE ; i++) { 471 if (!TEST_FLOATS_EQUAL(pmTrend2DEval(trend, x->data.F32[i], y->data.F32[i]), f->data.F32[i])) { 472 diag("ERROR: at (%.2f %.2f), eval is %.2f, should be %.2f\n", x->data.F32[i], y->data.F32[i], 473 pmTrend2DEval(trend, x->data.F32[i], y->data.F32[i]), f->data.F32[i]); 474 errorFlag = true; 475 } 476 } 477 ok(!errorFlag, "pmTrend2DFit() and pmTrend2DEval() set and evaluated the 2DTrend polynomial correctly"); 478 479 // Test pmTrend2DEvalVector() 480 psVector *fTest = pmTrend2DEvalVector(trend, x, y); 481 errorFlag = false; 482 for (int i = 0 ; i < VEC_SIZE ; i++) { 483 if (!TEST_FLOATS_EQUAL(fTest->data.F32[i], f->data.F32[i])) { 484 diag("ERROR: at (%.2f %.2f), eval is %.2f, should be %.2f\n", 485 x->data.F32[i], y->data.F32[i], fTest->data.F32[i], f->data.F32[i]); 486 errorFlag = true; 487 } 488 } 489 ok(!errorFlag, "pmTrend2DFit() and pmTrend2DEval() set and evaluated the 2DTrend polynomial correctly"); 490 491 492 psFree(img); 493 psFree(stats); 494 psFree(trend); 495 psFree(x); 496 psFree(y); 497 psFree(f); 498 psFree(fTest); 499 psFree(mask); 500 psFree(df); 501 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 502 } 503 333 504 }
Note:
See TracChangeset
for help on using the changeset viewer.
