Index: /trunk/psModules/test/tst_pmSubtractSky.c
===================================================================
--- /trunk/psModules/test/tst_pmSubtractSky.c	(revision 2760)
+++ /trunk/psModules/test/tst_pmSubtractSky.c	(revision 2761)
@@ -7,6 +7,6 @@
  *  @author GLG, MHPCC
  *
- *  @version $Revision: 1.1 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2004-12-18 02:28:33 $
+ *  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2004-12-20 21:39:14 $
  *
  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
@@ -15,9 +15,10 @@
 #include "pslib.h"
 #include "pmSubtractSky.h"
-#define NUM_ROWS 5
-#define NUM_COLS 5
+#define NUM_ROWS 512
+#define NUM_COLS 512
 #define POLY_X_ORDER 3
-#define POLY_Y_ORDER 5
-
+#define POLY_Y_ORDER 3
+#define TOL 1.0
+#define OBJECT_INTENSITY 2000.0
 static int test00(void);
 testDescription tests[] = {
@@ -49,5 +50,4 @@
         for (j=0;j<numCols;j++) {
             myReadout->image->data.F32[i][j] = func(i, j);
-            //printf("data[%d][%d] is %.2f\n", i, j, myReadout->image->data.F32[i][j]);
         }
     }
@@ -57,5 +57,5 @@
     for (i=0;i<numRows;i++) {
         for (j=0;j<numCols;j++) {
-            if (1.0 < fabs(myReadout->image->data.F32[i][j])) {
+            if (TOL < fabs(myReadout->image->data.F32[i][j])) {
                 printf("ERROR: image[%d][%d] is %f, should be 0.0\n", i, j, myReadout->image->data.F32[i][j]);
                 testStatus = 1;
@@ -78,21 +78,22 @@
     psStats *myStats = psStatsAlloc(PS_STAT_SAMPLE_MEAN);
     psPolynomial2D *myPoly = psPolynomial2DAlloc(POLY_X_ORDER, POLY_Y_ORDER, PS_POLYNOMIAL_ORD);
+    psImage *trueImage = psImageAlloc(numCols, numRows, PS_TYPE_F32);
+    psF32 errorTolerance = TOL * ((psF32) binFactor);
 
     for (i=0;i<numRows;i++) {
         for (j=0;j<numCols;j++) {
             myReadout->image->data.F32[i][j] = func(i, j);
-            //printf("data[%d][%d] is %.2f\n", i, j, myReadout->image->data.F32[i][j]);
         }
     }
     // We insert a few bright spots in the image.
-    myReadout->image->data.F32[NUM_ROWS/4][NUM_COLS/4]+= 1000.0;
-    myReadout->image->data.F32[NUM_ROWS/4][3*NUM_COLS/4]+= 1000.0;
-    myReadout->image->data.F32[3*NUM_ROWS/4][NUM_COLS/4]+= 1000.0;
-    myReadout->image->data.F32[3*NUM_ROWS/4][3*NUM_COLS/4]+= 1000.0;
-    for (i=0;i<numRows;i++) {
-        for (j=0;j<numCols;j++) {
-            printf("data[%d][%d] is %.2f\n", i, j, myReadout->image->data.F32[i][j]);
-        }
-    }
+    myReadout->image->data.F32[NUM_ROWS/4][NUM_COLS/4]+= OBJECT_INTENSITY;
+    myReadout->image->data.F32[NUM_ROWS/4][3*NUM_COLS/4]+= OBJECT_INTENSITY;
+    myReadout->image->data.F32[3*NUM_ROWS/4][NUM_COLS/4]+= OBJECT_INTENSITY;
+    myReadout->image->data.F32[3*NUM_ROWS/4][3*NUM_COLS/4]+= OBJECT_INTENSITY;
+    PS_IMAGE_SET_F32(trueImage, 0.0);
+    trueImage->data.F32[NUM_ROWS/4][NUM_COLS/4]+= OBJECT_INTENSITY;
+    trueImage->data.F32[NUM_ROWS/4][3*NUM_COLS/4]+= OBJECT_INTENSITY;
+    trueImage->data.F32[3*NUM_ROWS/4][NUM_COLS/4]+= OBJECT_INTENSITY;
+    trueImage->data.F32[3*NUM_ROWS/4][3*NUM_COLS/4]+= OBJECT_INTENSITY;
 
     myReadout = pmSubtractSky(myReadout, (void *) myPoly, PM_FIT_POLYNOMIAL,
@@ -100,6 +101,7 @@
     for (i=0;i<numRows;i++) {
         for (j=0;j<numCols;j++) {
-            if (1.0 < fabs(myReadout->image->data.F32[i][j])) {
-                printf("ERROR: image[%d][%d] is %f, should be 0.0\n", i, j, myReadout->image->data.F32[i][j]);
+            if (errorTolerance < fabs(myReadout->image->data.F32[i][j] - trueImage->data.F32[i][j])) {
+                printf("ERROR: image[%d][%d] is %f, should be %f\n", i, j,
+                       myReadout->image->data.F32[i][j], trueImage->data.F32[i][j]);
                 testStatus = 1;
             }
@@ -109,4 +111,5 @@
     psFree(myStats);
     psFree(myPoly);
+    psFree(trueImage);
     return(testStatus);
 }
@@ -118,17 +121,46 @@
 
     psTraceSetLevel(".", 0);
+
     // Bin Factor == 1
-    //    testStatus |= doSubtractSkySimple(1, 1, 1);
-    //    testStatus |= doSubtractSkySimple(NUM_COLS, 1, 1);
-    //    testStatus |= doSubtractSkySimple(1, NUM_ROWS, 1);
-    //    testStatus |= doSubtractSkySimple(NUM_COLS, NUM_ROWS, 1);
+    /*
+    */
+    printf("doSubtractSkySimple(1, 1, 1)\n");
+    testStatus |= doSubtractSkySimple(1, 1, 1);
+    printf("doSubtractSkySimple(NUM_COLS, 1, 1)\n");
+    testStatus |= doSubtractSkySimple(NUM_COLS, 1, 1);
+
+    printf("doSubtractSkySimple(1, NUM_ROWS, 1)\n");
+    testStatus |= doSubtractSkySimple(1, NUM_ROWS, 1);
+    printf("doSubtractSkySimple(NUM_COLS, NUM_ROWS, 1)\n");
+    testStatus |= doSubtractSkySimple(NUM_COLS, NUM_ROWS, 1);
 
     // Bin Factor == 2
-    //    testStatus |= doSubtractSkySimple(1, 1, 2);
-    //    testStatus |= doSubtractSkySimple(NUM_COLS, 1, 2);
-    //    testStatus |= doSubtractSkySimple(1, NUM_ROWS, 2);
-    //    testStatus |= doSubtractSkySimple(NUM_COLS, NUM_ROWS, 2);
+    printf("doSubtractSkySimple(1, 1, 2)\n");
+    testStatus |= doSubtractSkySimple(1, 1, 2);
+    printf("doSubtractSkySimple(NUM_COLS, 1, 2)\n");
+    testStatus |= doSubtractSkySimple(NUM_COLS, 1, 2);
+    printf("doSubtractSkySimple(1, NUM_ROWS, 2)\n");
+    testStatus |= doSubtractSkySimple(1, NUM_ROWS, 2);
+    printf("doSubtractSkySimple(NUM_COLS, NUM_ROWS, 2)\n");
+    testStatus |= doSubtractSkySimple(NUM_COLS, NUM_ROWS, 2);
 
+    printf("doSubtractSkyWithObjects(NUM_COLS, NUM_ROWS, 1)\n");
     testStatus |= doSubtractSkyWithObjects(NUM_COLS, NUM_ROWS, 1);
+    printf("doSubtractSkyWithObjects(NUM_COLS, NUM_ROWS, 2)\n");
+    testStatus |= doSubtractSkyWithObjects(NUM_COLS, NUM_ROWS, 2);
+    printf("doSubtractSkyWithObjects(NUM_COLS, NUM_ROWS, 4)\n");
+    testStatus |= doSubtractSkyWithObjects(NUM_COLS, NUM_ROWS, 4);
+    printf("doSubtractSkyWithObjects(NUM_COLS, NUM_ROWS, 8)\n");
+    testStatus |= doSubtractSkyWithObjects(NUM_COLS, NUM_ROWS, 8);
+    printf("doSubtractSkyWithObjects(NUM_COLS, NUM_ROWS, 16)\n");
+    testStatus |= doSubtractSkyWithObjects(NUM_COLS, NUM_ROWS, 16);
+    printf("doSubtractSkyWithObjects(NUM_COLS, NUM_ROWS, 32)\n");
+    testStatus |= doSubtractSkyWithObjects(NUM_COLS, NUM_ROWS, 32);
+    printf("doSubtractSkyWithObjects(NUM_COLS, NUM_ROWS, 64)\n");
+    testStatus |= doSubtractSkyWithObjects(NUM_COLS, NUM_ROWS, 64);
+    printf("doSubtractSkyWithObjects(NUM_COLS, NUM_ROWS, 128)\n");
+    testStatus |= doSubtractSkyWithObjects(NUM_COLS, NUM_ROWS, 128);
+    printf("doSubtractSkyWithObjects(NUM_COLS, NUM_ROWS, 256)\n");
+    testStatus |= doSubtractSkyWithObjects(NUM_COLS, NUM_ROWS, 256);
 
     return(testStatus);
