Changeset 1849 for trunk/psModules/src/tst_pmFlatField.c
- Timestamp:
- Sep 22, 2004, 9:58:57 AM (22 years ago)
- File:
-
- 1 edited
-
trunk/psModules/src/tst_pmFlatField.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/tst_pmFlatField.c
r1832 r1849 1 /** @file filename.h 2 * 3 * @brief Contains the definitions for ... 4 * 5 * Detailed Description goes here. 1 /** @file tst_pmFlatField.c 2 * 3 * @brief Contains the tests for pmFlatField.c: 6 4 * 7 5 * @author Ross Harman, MHPCC 8 6 * 9 * @version $Revision: 1. 3$ $Name: not supported by cvs2svn $10 * @date $Date: 2004-09-2 0 20:36:46$7 * @version $Revision: 1.4 $ $Name: not supported by cvs2svn $ 8 * @date $Date: 2004-09-22 19:58:57 $ 11 9 * 12 10 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii 13 11 */ 14 12 13 #include<stdlib.h> 14 15 #include "psTest.h" 16 #include "pslib.h" 15 17 #include "pmFlatField.h" 16 18 17 19 18 #define PRINT_MATRIX(IMAGE,TYPE) \ 19 for(int i=IMAGE->numRows-1; i>-1; i--) { \ 20 for(int j=0; j<IMAGE->numCols; j++) { \ 21 if(PS_IS_PSELEMTYPE_COMPLEX(IMAGE->type.type)) { \ 22 printf("%f+%fi ", creal(IMAGE->data.TYPE[i][j]), cimag(IMAGE->data.TYPE[i][j])); \ 23 } else if(PS_IS_PSELEMTYPE_INT(IMAGE->type.type)) { \ 24 printf("%d ", (int)IMAGE->data.TYPE[i][j]); \ 25 } else { \ 26 printf("%f ", (double)IMAGE->data.TYPE[i][j]); \ 27 } \ 28 } \ 29 printf("\n"); \ 30 } \ 20 #define PRINT_MATRIX(IMAGE,TYPE,STRING) \ 21 printf(STRING); \ 22 printf("\n"); \ 23 for(int i=IMAGE->numRows-1; i>-1; i--) { \ 24 for(int j=0; j<IMAGE->numCols; j++) { \ 25 if(PS_IS_PSELEMTYPE_COMPLEX(IMAGE->type.type)) { \ 26 printf("%f+%fi ", creal(IMAGE->data.TYPE[i][j]), cimag(IMAGE->data.TYPE[i][j])); \ 27 } else if(PS_IS_PSELEMTYPE_INT(IMAGE->type.type)) { \ 28 printf("%d ", (int)IMAGE->data.TYPE[i][j]); \ 29 } else { \ 30 printf("%f ", (double)IMAGE->data.TYPE[i][j]); \ 31 } \ 32 } \ 33 printf("\n"); \ 34 } \ 31 35 printf("\n"); 32 36 33 37 34 int main(void) 38 #define CREATE_AND_SET_IMAGE(NAME,TYPE,VALUE,NROWS,NCOLS) \ 39 psImage *NAME = (psImage*)psImageAlloc(NCOLS,NROWS,PS_TYPE_##TYPE); \ 40 for(int i=0; i<NAME->numRows; i++) { \ 41 for(int j=0; j<NAME->numCols; j++) { \ 42 NAME->data.TYPE[i][j] = VALUE; \ 43 } \ 44 } 45 46 47 static int testFlatField(void); 48 49 50 testDescription tests[] = { 51 {testFlatField, 884, "pmFlatField", 0, false}, 52 {NULL} 53 }; 54 55 56 int main(int argc, char* argv[]) 35 57 { 36 psImage *inImage = psImageAlloc(3, 3, PS_TYPE_F64); 37 psImage *flatImage1 = psImageAlloc(3, 3, PS_TYPE_F64); 38 psImage *flatImage2 = psImageAlloc(3, 3, PS_TYPE_F64); 58 return !runTestSuite(stderr, "Test Point Driver", tests, argc, argv); 59 } 60 61 62 int testFlatField( void ) 63 { 64 // Test A - Divide input image by flat image 65 printPositiveTestHeader(stdout, "pmFlatField", "Test A - Divide input image by flat image"); 66 printf("Divide input image by flat image\n\n"); 67 CREATE_AND_SET_IMAGE(inImage,F64,6.0,3,3) 39 68 psReadout *inReadout = psReadoutAlloc(0, 0, inImage); 69 PRINT_MATRIX(inImage,F64,"Input image:"); 70 CREATE_AND_SET_IMAGE(flatImage1,F64,2.0,3,3) 40 71 psReadout *flatReadout = psReadoutAlloc(0, 0, flatImage1); 41 42 for(int r=0;r<3;r++) { 43 for(int c=0;c<3;c++) { 44 inImage->data.F64[r][c]=8.0; 45 flatImage1->data.F64[r][c]=4.0; 46 flatImage2->data.F64[r][c]=0.0; 47 } 48 } 49 50 PRINT_MATRIX(inImage,F64); 51 PRINT_MATRIX(flatImage1, F64); 52 pmFlatField(inReadout, flatReadout); 53 PRINT_MATRIX(inImage,F64); 54 55 PRINT_MATRIX(inImage, F64); 56 PRINT_MATRIX(flatImage2, F64); 72 PRINT_MATRIX(flatImage1,F64,"Flat image:"); 73 pmFlatField(inReadout, flatReadout); 74 PRINT_MATRIX(inImage,F64, "Resulting image:"); 75 printFooter(stdout, "pmFlatField", "Test A - Divide input image by flat image", true); 76 printf("\n\n\n"); 77 78 79 // Test B - Mask flat image data 80 printPositiveTestHeader(stdout, "pmFlatField", "Test B - Mask flat image data"); 81 PRINT_MATRIX(inImage, F64, "Input image:"); 82 CREATE_AND_SET_IMAGE(flatImage2,F64,0.0,3,3) 83 PRINT_MATRIX(flatImage2, F64, "Flat image:"); 57 84 flatReadout->image = flatImage2; 58 85 pmFlatField(inReadout, flatReadout); 59 PRINT_MATRIX(inReadout->mask, PS_TYPE_MASK_DATA); 86 PRINT_MATRIX(inReadout->mask, PS_TYPE_MASK_DATA, "Resulting mask:"); 87 printFooter(stdout, "pmFlatField", "Test B - Mask flat image data", true); 88 printf("\n\n\n"); 89 90 91 // Test C - Mask flat image data starting with non-null mask 92 printf("Mask flat image data starting with non-null mask\n\n"); 93 printPositiveTestHeader(stdout, "pmFlatField", "Test C - Mask flat image data starting with non-null mask"); 94 PRINT_MATRIX(inImage, F64, "Input image:"); 95 flatImage2->data.F64[0][0] = 1.0; 96 PRINT_MATRIX(flatImage2, F64, "Flat image:"); 97 CREATE_AND_SET_IMAGE(mask1,U8,0,3,3); 98 psFree(inReadout->mask); 99 inReadout->mask = mask1; 100 pmFlatField(inReadout, flatReadout); 101 PRINT_MATRIX(inReadout->mask, PS_TYPE_MASK_DATA,"Resulting mask:"); 102 printFooter(stdout, "pmFlatField", "Test C - Mask flat image data starting with non-null mask", true); 103 printf("\n\n\n"); 104 105 106 // Test D - Attempt to use null flat readout 107 printNegativeTestHeader(stdout,"pmFlatField", "Test D - Attempt to use null flat readout", 108 "Null not allowed for flat readout", 0); 109 pmFlatField(inReadout, NULL); 110 printFooter(stdout, "pmFlatField", "Test D - Attempt to use null flat readout", true); 111 printf("\n\n\n"); 112 113 114 // Test E - Attempt to use null input image 115 printNegativeTestHeader(stdout,"pmFlatField", "Test E - Attempt to use null input image", 116 "Null not allowed for input image", 0); 117 psImage *temp = inReadout->image; 118 inReadout->image = NULL; 119 pmFlatField(inReadout, flatReadout); 120 inReadout->image = temp; 121 printFooter(stdout, "pmFlatField", "Test E - Attempt to use null input image", true); 122 printf("\n\n\n"); 123 124 125 // Test F - Attempt tp use null flat image 126 printNegativeTestHeader(stdout,"pmFlatField", "Test F - Attempt tp use null flat image", 127 "Null not allowed for flat image", 0); 128 temp = flatReadout->image; 129 flatReadout->image = NULL; 130 pmFlatField(inReadout, flatReadout); 131 flatReadout->image = temp; 132 printFooter(stdout, "pmFlatField", "Test F - Attempt tp use null flat image", true); 133 printf("\n\n\n"); 134 135 136 // Test G - Attempt to use input image bigger than flat image 137 printNegativeTestHeader(stdout,"pmFlatField", "Test G - Attempt to use input image bigger than flat image", 138 "Input image size exceeds that of flat image", 0); 139 CREATE_AND_SET_IMAGE(smallFlat,F64,0.0,2,2); 140 temp = flatReadout->image; 141 flatReadout->image = smallFlat; 142 pmFlatField(inReadout, flatReadout); 143 flatReadout->image = temp; 144 printFooter(stdout, "pmFlatField", "Test G - Attempt to use input image bigger than flat image", true); 145 printf("\n\n\n"); 146 147 148 // Test H - Attempt to use input image mask bigger than flat image 149 printNegativeTestHeader(stdout,"pmFlatField", "Test H - Attempt to use input image mask bigger than flat image", 150 "Input image mask size exceeds that of flat image", 0); 151 CREATE_AND_SET_IMAGE(largeMask,F64,0.0,4,4); 152 temp = inReadout->mask; 153 inReadout->mask = largeMask; 154 pmFlatField(inReadout, flatReadout); 155 inReadout->mask = temp; 156 printFooter(stdout, "pmFlatField", "Test H - Attempt to use input image mask bigger than flat image", true); 157 printf("\n\n\n"); 158 159 160 // Test I - Attempt to use offset greater than input image 161 printNegativeTestHeader(stdout,"pmFlatField", "Test I - Attempt to use offset greater than input image", 162 "Total offset >= input image size", 0); 163 *(int*)&inReadout->col0 = 50; 164 *(int*)&inReadout->row0 = 50; 165 pmFlatField(inReadout, flatReadout); 166 *(int*)&inReadout->col0 = 0; 167 *(int*)&inReadout->row0 = 0; 168 printFooter(stdout, "pmFlatField", "Test I - Attempt to use offset greater than input image", true); 169 printf("\n\n\n"); 170 171 172 // Test J - Attempt to use complex input image 173 printNegativeTestHeader(stdout,"pmFlatField", "Test J - Attempt to use complex input image", 174 "Complex types not allowed for input image", 0); 175 *(psElemType* ) & inReadout->image->type.type = PS_TYPE_C64; 176 pmFlatField(inReadout, flatReadout); 177 *(psElemType* ) & inReadout->image->type.type = PS_TYPE_F64; 178 printFooter(stdout, "pmFlatField", "Test J - Attempt to use complex input image", true); 179 printf("\n\n\n"); 180 181 182 // Test K - Attempt to use complex flat image 183 printNegativeTestHeader(stdout,"pmFlatField", "Test K - Attempt to use complex flat image", 184 "Complex types not allowed for flat image", 0); 185 *(psElemType* ) & flatReadout->image->type.type = PS_TYPE_C64; 186 pmFlatField(inReadout, flatReadout); 187 *(psElemType* ) & flatReadout->image->type.type = PS_TYPE_F64; 188 printFooter(stdout, "pmFlatField", "Test K - Attempt to use complex flat image", true); 189 printf("\n\n\n"); 190 191 192 // Test L - Attempt to use non-equal input and flat image types 193 printNegativeTestHeader(stdout,"pmFlatField", "Test L - Attempt to use non-equal input and flat image types", 194 "Input and flat image types differ", 0); 195 *(psElemType* ) & flatReadout->image->type.type = PS_TYPE_F32; 196 pmFlatField(inReadout, flatReadout); 197 *(psElemType* ) & flatReadout->image->type.type = PS_TYPE_F64; 198 printFooter(stdout, "pmFlatField", "Test L - Attempt to use non-equal input and flat image types", true); 199 printf("\n\n\n"); 200 201 202 // Test M - Attempt to use non-mask type mask image 203 printNegativeTestHeader(stdout,"pmFlatField", "Test M - Attempt to use non-mask type mask image", 204 "Mask must be PS_TYPE_MASK type", 0); 205 *(psElemType* ) & inReadout->mask->type.type = PS_TYPE_F32; 206 pmFlatField(inReadout, flatReadout); 207 *(psElemType* ) & inReadout->mask->type.type = PS_TYPE_MASK; 208 printFooter(stdout, "pmFlatField", "Test M - Attempt to use non-mask type mask image", true); 209 printf("\n\n\n"); 210 211 212 // Free memory 213 psFree(inReadout); 214 psFree(flatReadout); 215 psFree(inImage); 216 psFree(flatImage1); 217 psFree(flatImage1); 218 psFree(smallFlat); 219 psFree(largeMask); 220 60 221 return 0; 61 222 } 223
Note:
See TracChangeset
for help on using the changeset viewer.
