IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Dec 23, 2004, 10:27:51 AM (22 years ago)
Author:
gusciora
Message:

Fixed a few bugs in pmSubtractSky.c. Added tests for various input parameter
error conditions.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/test/tst_pmSubtractSky.c

    r2777 r2810  
    77 *  @author GLG, MHPCC
    88 *
    9  *  @version $Revision: 1.3 $ $Name: not supported by cvs2svn $
    10  *  @date $Date: 2004-12-21 20:41:29 $
     9 *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
     10 *  @date $Date: 2004-12-23 20:27:51 $
    1111 *
    1212 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    2222#define OBJECT_INTENSITY 2000.0
    2323static int test00(void);
     24static int test01(void);
    2425testDescription tests[] = {
    2526                              {test00, 000, "pmSubtractSky", 0, false},
     27                              {test01, 000, "pmSubtractSky: warning, error messages", 0, false},
    2628                              {NULL}
    2729                          };
     
    4547    int j;
    4648    int testStatus = 0;
    47     psImage *tmpImage1 = psImageAlloc(numCols, numRows, PS_TYPE_F32);
    48     psReadout *myReadout = psReadoutAlloc(numCols, numRows, tmpImage1);
     49    psImage *tmpImageF32 = psImageAlloc(numCols, numRows, PS_TYPE_F32);
     50    psReadout *myReadout = psReadoutAlloc(numCols, numRows, tmpImageF32);
    4951    psStats *myStats = psStatsAlloc(PS_STAT_SAMPLE_MEAN);
    5052    psPolynomial2D *myPoly = psPolynomial2DAlloc(POLY_X_ORDER, POLY_Y_ORDER, PS_POLYNOMIAL_ORD);
     
    7981    int j;
    8082    int testStatus = 0;
    81     psImage *tmpImage1 = psImageAlloc(numCols, numRows, PS_TYPE_F32);
    82     psReadout *myReadout = psReadoutAlloc(numCols, numRows, tmpImage1);
     83    psImage *tmpImageF32 = psImageAlloc(numCols, numRows, PS_TYPE_F32);
     84    psReadout *myReadout = psReadoutAlloc(numCols, numRows, tmpImageF32);
    8385    psStats *myStats = psStatsAlloc(PS_STAT_SAMPLE_MEAN);
    8486    psPolynomial2D *myPoly = psPolynomial2DAlloc(POLY_X_ORDER, POLY_Y_ORDER, PS_POLYNOMIAL_ORD);
     
    169171    return(testStatus);
    170172}
     173
     174#define NUM_ROWS_SMALL 16
     175#define NUM_COLS_SMALL 16
     176int test01( void )
     177{
     178    int testStatus = 0;
     179    psS32 i;
     180    psS32 j;
     181    psImage *tmpImageF32 = psImageAlloc(NUM_COLS_SMALL, NUM_ROWS_SMALL, PS_TYPE_F32);
     182    psImage *tmpImageF64 = psImageAlloc(NUM_COLS_SMALL, NUM_ROWS_SMALL, PS_TYPE_F64);
     183    psReadout *myReadout = psReadoutAlloc(NUM_COLS_SMALL, NUM_ROWS_SMALL, tmpImageF32);
     184    psReadout *rc = NULL;
     185    psStats *myStats = psStatsAlloc(PS_STAT_SAMPLE_MEAN);
     186    psPolynomial2D *myPoly = psPolynomial2DAlloc(POLY_X_ORDER, POLY_Y_ORDER, PS_POLYNOMIAL_ORD);
     187    for (i=0;i<NUM_ROWS_SMALL;i++) {
     188        for (j=0;j<NUM_COLS_SMALL;j++) {
     189            myReadout->image->data.F32[i][j] = func(i, j);
     190        }
     191    }
     192
     193    printf("----------------------------------------------------------------\n");
     194    printf("Calling pmSubtractSky() with NULL psReadout.  Should error.\n\n");
     195    rc = pmSubtractSky(NULL, (void *) myPoly, PM_FIT_POLYNOMIAL, 1, myStats, 2.0);
     196    if (rc != NULL) {
     197        printf("ERROR: pmSubtractSky() returned a non-NULL psReadout\n");
     198        testStatus = false;
     199    }
     200
     201    printf("----------------------------------------------------------------\n");
     202    printf("Calling pmSubtractSky() with NULL psReadout->image.  Should error.\n\n");
     203    myReadout->image = NULL;
     204    rc = pmSubtractSky(myReadout, (void *) myPoly, PM_FIT_POLYNOMIAL, 1, myStats, 2.0);
     205    if (rc != NULL) {
     206        printf("ERROR: pmSubtractSky() returned a non-NULL psReadout\n");
     207        testStatus = false;
     208    }
     209    myReadout->image = tmpImageF32;
     210
     211    printf("----------------------------------------------------------------\n");
     212    printf("Calling pmSubtractSky() with PS_TYPE_F64 psReadout->image.  Should error.\n\n");
     213    myReadout->image = tmpImageF64;
     214    rc = pmSubtractSky(myReadout, (void *) myPoly, PM_FIT_POLYNOMIAL, 1, myStats, 2.0);
     215    if (rc != NULL) {
     216        printf("ERROR: pmSubtractSky() returned a non-NULL psReadout\n");
     217        testStatus = false;
     218    }
     219    myReadout->image = tmpImageF32;
     220
     221    printf("----------------------------------------------------------------\n");
     222    printf("Calling pmSubtractSky() with NULL fitSpec.  Should return image, no ERROR, no WARNING.\n\n");
     223    rc = pmSubtractSky(myReadout, NULL, PM_FIT_POLYNOMIAL, 1, myStats, 2.0);
     224    if (rc != myReadout) {
     225        printf("ERROR: pmSubtractSky() returned something other than psReadout\n");
     226        testStatus = false;
     227    }
     228
     229    printf("----------------------------------------------------------------\n");
     230    printf("Calling pmSubtractSky() with PM_FIT_NONE fit.  Should return image, no ERROR, no WARNING.\n\n");
     231    rc = pmSubtractSky(myReadout, (void *) myPoly, PM_FIT_NONE, 1, myStats, 2.0);
     232    if (rc != myReadout) {
     233        printf("ERROR: pmSubtractSky() returned something other than psReadout\n");
     234        testStatus = false;
     235    }
     236
     237    printf("----------------------------------------------------------------\n");
     238    printf("Calling pmSubtractSky() with PM_FIT_SPLINE fit.  Should return image, no ERROR, no WARNING.\n\n");
     239    rc = pmSubtractSky(myReadout, (void *) myPoly, PM_FIT_SPLINE, 1, myStats, 2.0);
     240    if (rc != myReadout) {
     241        printf("ERROR: pmSubtractSky() returned something other than psReadout\n");
     242        testStatus = false;
     243    }
     244
     245    printf("----------------------------------------------------------------\n");
     246    printf("Calling pmSubtractSky() with NULL myStats.  Should fit entire image, generate WARNING.\n\n");
     247    rc = pmSubtractSky(myReadout, (void *) myPoly, PM_FIT_POLYNOMIAL, 1, NULL, 2.0);
     248    for (i=0;i<NUM_ROWS_SMALL;i++) {
     249        for (j=0;j<NUM_COLS_SMALL;j++) {
     250            if (ERROR_TOLERANCE < fabs(rc->image->data.F32[i][j])) {
     251                printf("ERROR: image[%d][%d] is %f, should be 0.0\n", i, j,
     252                       rc->image->data.F32[i][j]);
     253                testStatus = false;
     254            }
     255        }
     256    }
     257
     258    printf("----------------------------------------------------------------\n");
     259    psU64 oldOptions = myStats->options;
     260    myStats->options = 0;
     261    printf("Calling pmSubtractSky() with no myStats->options specified.  Should fit entire image, generate WARNING.\n\n");
     262    rc = pmSubtractSky(myReadout, (void *) myPoly, PM_FIT_POLYNOMIAL, 1, myStats, 2.0);
     263    for (i=0;i<NUM_ROWS_SMALL;i++) {
     264        for (j=0;j<NUM_COLS_SMALL;j++) {
     265            if (ERROR_TOLERANCE < fabs(rc->image->data.F32[i][j])) {
     266                printf("ERROR: image[%d][%d] is %f, should be 0.0\n", i, j,
     267                       rc->image->data.F32[i][j]);
     268                testStatus = false;
     269            }
     270        }
     271    }
     272    myStats->options = oldOptions;
     273
     274    printf("----------------------------------------------------------------\n");
     275    oldOptions = myStats->options;
     276    myStats->options = PS_STAT_SAMPLE_MEAN | PS_STAT_SAMPLE_MEDIAN;
     277    printf("Calling pmSubtractSky() with multiple myStats->options specified.  Should fit entire image, generate WARNING.\n\n");
     278    rc = pmSubtractSky(myReadout, (void *) myPoly, PM_FIT_POLYNOMIAL, 1, myStats, 2.0);
     279    for (i=0;i<NUM_ROWS_SMALL;i++) {
     280        for (j=0;j<NUM_COLS_SMALL;j++) {
     281            if (ERROR_TOLERANCE < fabs(rc->image->data.F32[i][j])) {
     282                printf("ERROR: image[%d][%d] is %f, should be 0.0\n", i, j,
     283                       rc->image->data.F32[i][j]);
     284                testStatus = false;
     285            }
     286        }
     287    }
     288    myStats->options = oldOptions;
     289
     290    printf("----------------------------------------------------------------\n");
     291    printf("Calling pmSubtractSky() with 0 binFactor.  Should fit entire image, generate WARNING.\n\n");
     292    rc = pmSubtractSky(myReadout, (void *) myPoly, PM_FIT_POLYNOMIAL, 0, myStats, 2.0);
     293    for (i=0;i<NUM_ROWS_SMALL;i++) {
     294        for (j=0;j<NUM_COLS_SMALL;j++) {
     295            if (ERROR_TOLERANCE < fabs(rc->image->data.F32[i][j])) {
     296                printf("ERROR: image[%d][%d] is %f, should be 0.0\n", i, j,
     297                       rc->image->data.F32[i][j]);
     298                testStatus = false;
     299            }
     300        }
     301    }
     302
     303    printf("----------------------------------------------------------------\n");
     304    printf("Calling pmSubtractSky() with -1 binFactor.  Should fit entire image, generate WARNING.\n\n");
     305    rc = pmSubtractSky(myReadout, (void *) myPoly, PM_FIT_POLYNOMIAL, -1, myStats, 2.0);
     306    for (i=0;i<NUM_ROWS_SMALL;i++) {
     307        for (j=0;j<NUM_COLS_SMALL;j++) {
     308            if (ERROR_TOLERANCE < fabs(rc->image->data.F32[i][j])) {
     309                printf("ERROR: image[%d][%d] is %f, should be 0.0\n", i, j,
     310                       rc->image->data.F32[i][j]);
     311                testStatus = false;
     312            }
     313        }
     314    }
     315
     316    printf("----------------------------------------------------------------\n");
     317    printf("Calling pmSubtractSky() with -1.0 clipSD.  Should fit entire image, generate WARNING.\n\n");
     318    rc = pmSubtractSky(myReadout, (void *) myPoly, PM_FIT_POLYNOMIAL, 1, myStats, -1.0);
     319    for (i=0;i<NUM_ROWS_SMALL;i++) {
     320        for (j=0;j<NUM_COLS_SMALL;j++) {
     321            if (ERROR_TOLERANCE < fabs(rc->image->data.F32[i][j])) {
     322                printf("ERROR: image[%d][%d] is %f, should be 0.0\n", i, j,
     323                       rc->image->data.F32[i][j]);
     324                testStatus = false;
     325            }
     326        }
     327    }
     328
     329
     330    //    myReadout = pmSubtractSky(myReadout, (void *) myPoly, PM_FIT_POLYNOMIAL,
     331    //                              1, myStats, 2.0);
     332
     333
     334    printf("----------------------------------------------------------------\n");
     335    psFree(myReadout);
     336    psFree(myStats);
     337    psFree(myPoly);
     338    psFree(tmpImageF64);
     339    return(testStatus);
     340}
     341// This code will
Note: See TracChangeset for help on using the changeset viewer.