Changeset 13614 for trunk/psLib/test/imageops
- Timestamp:
- Jun 4, 2007, 10:25:32 AM (19 years ago)
- Location:
- trunk/psLib/test/imageops
- Files:
-
- 4 edited
-
tap_psImageGeomManip.c (modified) (6 diffs)
-
tap_psImagePixelExtract.c (modified) (4 diffs)
-
tap_psImagePixelManip.c (modified) (3 diffs)
-
tap_psImageStructManip.c (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/test/imageops/tap_psImageGeomManip.c
r13123 r13614 5 5 * @author Robert DeSonia, MHPCC 6 6 * 7 * @version $Revision: 1. 8$ $Name: not supported by cvs2svn $8 * @date $Date: 2007-0 5-02 04:14:33$7 * @version $Revision: 1.9 $ $Name: not supported by cvs2svn $ 8 * @date $Date: 2007-06-04 20:25:32 $ 9 9 * 10 10 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 16 16 #include "pstap.h" 17 17 #define VERBOSE 0 18 19 void genericImageRollTest(int numRows, int numCols) 20 { 21 psMemId id = psMemGetId(); 22 psImage *in; 23 psImage *out; 24 psImage *out2; 25 26 // The function psImageRoll shall generate a new psImage structure by 27 // rolling the input image the correponding number of pixels in the vertical 28 // and/or horizontal direction. The image output image shall be the same size 29 // as the input image. Values which roll off the image are wrapped to the 30 // other side. 31 // 32 // Verify the returned psImage structure contains expected values, if the 33 // input image contains known values and the roll performed is known. 34 // Cases should include no roll, vertical roll, horizontal roll and 35 // combination vertical/horizontal rolls. Positive and negative rolls 36 // should be performed. 37 38 in = psImageAlloc(numCols,numRows,PS_TYPE_F32); 39 for (psS32 row=0;row<numRows;row++) { 40 for (psS32 col=0;col<numCols;col++) { 41 in->data.F32[row][col] = (psF32)row+(psF32)col/1000.0f; 42 } 43 } 44 45 out = psImageRoll(NULL,in,0,0); 46 bool errorFlag = false; 47 for (psS32 row=0;row<numRows;row++) { 48 psF32 *inRow = in->data.F32[row]; 49 psF32 *outRow = out->data.F32[row]; 50 for (psS32 col=0;col<numCols;col++) { 51 if (inRow[col] != outRow[col]) { 52 diag("psImageRoll didn't produce expected result " 53 "at %d,%d (%f vs %f) for dx=0, dy=0", 54 col,row,inRow[col],outRow[col]); 55 errorFlag = true; 56 } 57 } 58 } 59 ok(!errorFlag, "psImageRoll() produced the correct data values (no roll)"); 60 61 errorFlag = false; 62 out2 = psImageRoll(out,in,numCols/4,0); 63 for (psS32 row=0;row<numRows;row++) 64 { 65 psF32 *inRow = in->data.F32[row]; 66 psF32 *outRow = out->data.F32[row]; 67 for (psS32 col=0;col<numCols;col++) { 68 if (inRow[(col+numCols/4) % numCols] != outRow[col]) { 69 diag("psImageRoll didn't produce expected result " 70 "at %d,%d (%f vs %f) for dx=numCols/4, dy=0", 71 col,row,inRow[(col+numCols/4) % numCols],outRow[col]); 72 errorFlag = true; 73 } 74 } 75 } 76 ok(!errorFlag, "psImageRoll() produced the correct data values (column roll only"); 77 78 // Verify the returned psImage structure pointer is equal to the input 79 // parameter out if provided. 80 ok(out2 == out, "psImageRoll did recycle the out psImage"); 81 82 errorFlag = false; 83 out = psImageRoll(out,in,0,numRows/4); 84 for (psS32 row=0;row<numRows;row++) 85 { 86 psF32 *inRow = in->data.F32[(row+numRows/4)%numRows]; 87 psF32 *outRow = out->data.F32[row]; 88 for (psS32 col=0;col<numCols;col++) { 89 if (inRow[col] != outRow[col]) { 90 diag("psImageRoll didn't produce expected result " 91 "at %d,%d (%f vs %f) for dx=0, dy=numRows/4", 92 col,row,inRow[col],outRow[col]); 93 errorFlag = true; 94 } 95 } 96 } 97 ok(!errorFlag, "psImageRoll() produced the correct data values (row roll onlt)"); 98 99 errorFlag = false; 100 out = psImageRoll(out,in,numCols/4,numRows/4); 101 for (psS32 row=0;row<numRows;row++) 102 { 103 psF32 *inRow = in->data.F32[(row+numRows/4)%numRows]; 104 psF32 *outRow = out->data.F32[row]; 105 for (psS32 col=0;col<numCols;col++) { 106 if (inRow[(col+numCols/4) % numCols] != outRow[col]) { 107 diag("psImageRoll didn't produce expected result " 108 "at %d,%d (%f vs %f) for dx=numCols/4, dy=numRows/4", 109 col,row,inRow[(col+numCols/4) % numCols],outRow[col]); 110 errorFlag = true; 111 } 112 } 113 } 114 ok(!errorFlag, "psImageRoll() produced the correct data values (column and row roll)"); 115 116 errorFlag = false; 117 out = psImageRoll(out,in,-numCols/4,0); 118 for (psS32 row=0;row<numRows;row++) 119 { 120 psF32 *inRow = in->data.F32[row]; 121 psF32 *outRow = out->data.F32[row]; 122 for (psS32 col=0;col<numCols;col++) { 123 if (inRow[(col+(numCols-numCols/4)) % numCols] != outRow[col]) { 124 diag("psImageRoll didn't produce expected result " 125 "at %d,%d (%f vs %f) for dx=-numCols/4, dy=0", 126 col,row,inRow[(col+(numCols-numCols/4)) % numCols],outRow[col]); 127 errorFlag = true; 128 } 129 } 130 } 131 ok(!errorFlag, "psImageRoll() produced the correct data values (negative column roll)"); 132 133 errorFlag = false; 134 out = psImageRoll(out,in,0,-numRows/4); 135 for (psS32 row=0;row<numRows;row++) 136 { 137 psF32 *inRow = in->data.F32[(row+numRows-numRows/4)%numRows]; 138 psF32 *outRow = out->data.F32[row]; 139 for (psS32 col=0;col<numCols;col++) { 140 if (inRow[col] != outRow[col]) { 141 diag("psImageRoll didn't produce expected result " 142 "at %d,%d (%f vs %f) for dx=0, dy=-numRows/4", 143 col,row,inRow[col],outRow[col]); 144 errorFlag = true; 145 } 146 } 147 } 148 ok(!errorFlag, "psImageRoll() produced the correct data values (negative row roll)"); 149 150 errorFlag = false; 151 out = psImageRoll(out,in,-numCols/4,-numRows/4); 152 for (psS32 row=0;row<numRows;row++) 153 { 154 psF32 *inRow = in->data.F32[(row+numRows-numRows/4)%numRows]; 155 psF32 *outRow = out->data.F32[row]; 156 for (psS32 col=0;col<numCols;col++) { 157 if (inRow[(col+numCols-numCols/4) % numCols] != outRow[col]) { 158 diag("psImageRoll didn't produce expected result " 159 "at %d,%d (%f vs %f) for dx=numCols/4, dy=numRows/4", 160 col,row,inRow[(col+numCols-numCols/4) % numCols],outRow[col]); 161 errorFlag = true; 162 } 163 } 164 } 165 ok(!errorFlag, "psImageRoll() produced the correct data values (negative column and row roll)"); 166 psFree(in); 167 psFree(out); 168 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 169 } 170 171 18 172 19 173 bool testImageShiftCase(psS32 cols, … … 152 306 psLogSetFormat("HLNM"); 153 307 psLogSetLevel(PS_LOG_INFO); 154 plan_tests(2 37);308 plan_tests(280); 155 309 156 310 // test psImageRebin() … … 366 520 if (1) { 367 521 psMemId id = psMemGetId(); 522 // Perform generic tests with various image sizes 523 genericImageRollTest(8, 1); 524 genericImageRollTest(1, 8); 525 genericImageRollTest(8, 8); 526 genericImageRollTest(8, 16); 527 genericImageRollTest(16, 8); 528 368 529 psImage *in; 369 530 psImage *out; … … 373 534 psS32 rows1 = 8; 374 535 psS32 cols1 = 8; 375 376 // The function psImageRoll shall generate a new psImage structure by377 // rolling the input image the correponding number of pixels in the vertical378 // and/or horizontal direction. The image output image shall be the same size379 // as the input image. Values which roll off the image are wrapped to the380 // other side.381 //382 // Verify the returned psImage structure contains expected values, if the383 // input image contains known values and the roll performed is known.384 // Cases should include no roll, vertical roll, horizontal roll and385 // combination vertical/horizontal rolls. Positive and negative rolls386 // should be performed.387 388 536 in = psImageAlloc(cols,rows,PS_TYPE_F32); 389 537 for (psS32 row=0;row<rows;row++) { … … 393 541 } 394 542 395 out = psImageRoll(NULL,in,0,0);396 543 bool errorFlag = false; 397 for (psS32 row=0;row<rows;row++) {398 psF32 *inRow = in->data.F32[row];399 psF32 *outRow = out->data.F32[row];400 for (psS32 col=0;col<cols;col++) {401 if (inRow[col] != outRow[col]) {402 diag("psImageRoll didn't produce expected result "403 "at %d,%d (%f vs %f) for dx=0, dy=0",404 col,row,inRow[col],outRow[col]);405 errorFlag = true;406 }407 }408 }409 ok(!errorFlag, "psImageRoll() produced the correct data values");410 411 errorFlag = false;412 out2 = psImageRoll(out,in,cols/4,0);413 for (psS32 row=0;row<rows;row++)414 {415 psF32 *inRow = in->data.F32[row];416 psF32 *outRow = out->data.F32[row];417 for (psS32 col=0;col<cols;col++) {418 if (inRow[(col+cols/4) % cols] != outRow[col]) {419 diag("psImageRoll didn't produce expected result "420 "at %d,%d (%f vs %f) for dx=cols/4, dy=0",421 col,row,inRow[(col+cols/4) % cols],outRow[col]);422 errorFlag = true;423 }424 }425 }426 ok(!errorFlag, "psImageRoll() produced the correct data values");427 428 // Verify the returned psImage structure pointer is equal to the input429 // parameter out if provided.430 ok(out2 == out, "psImageRoll didt recycle the out psImage");431 432 errorFlag = false;433 out = psImageRoll(out,in,0,rows/4);434 for (psS32 row=0;row<rows;row++)435 {436 psF32 *inRow = in->data.F32[(row+rows/4)%rows];437 psF32 *outRow = out->data.F32[row];438 for (psS32 col=0;col<cols;col++) {439 if (inRow[col] != outRow[col]) {440 diag("psImageRoll didn't produce expected result "441 "at %d,%d (%f vs %f) for dx=0, dy=rows/4",442 col,row,inRow[col],outRow[col]);443 errorFlag = true;444 }445 }446 }447 ok(!errorFlag, "psImageRoll() produced the correct data values");448 449 errorFlag = false;450 out = psImageRoll(out,in,cols/4,rows/4);451 for (psS32 row=0;row<rows;row++)452 {453 psF32 *inRow = in->data.F32[(row+rows/4)%rows];454 psF32 *outRow = out->data.F32[row];455 for (psS32 col=0;col<cols;col++) {456 if (inRow[(col+cols/4) % cols] != outRow[col]) {457 diag("psImageRoll didn't produce expected result "458 "at %d,%d (%f vs %f) for dx=cols/4, dy=rows/4",459 col,row,inRow[(col+cols/4) % cols],outRow[col]);460 errorFlag = true;461 }462 }463 }464 ok(!errorFlag, "psImageRoll() produced the correct data values");465 466 errorFlag = false;467 out = psImageRoll(out,in,-cols/4,0);468 for (psS32 row=0;row<rows;row++)469 {470 psF32 *inRow = in->data.F32[row];471 psF32 *outRow = out->data.F32[row];472 for (psS32 col=0;col<cols;col++) {473 if (inRow[(col+(cols-cols/4)) % cols] != outRow[col]) {474 diag("psImageRoll didn't produce expected result "475 "at %d,%d (%f vs %f) for dx=-cols/4, dy=0",476 col,row,inRow[(col+(cols-cols/4)) % cols],outRow[col]);477 errorFlag = true;478 }479 }480 }481 ok(!errorFlag, "psImageRoll() produced the correct data values");482 483 errorFlag = false;484 out = psImageRoll(out,in,0,-rows/4);485 for (psS32 row=0;row<rows;row++)486 {487 psF32 *inRow = in->data.F32[(row+rows-rows/4)%rows];488 psF32 *outRow = out->data.F32[row];489 for (psS32 col=0;col<cols;col++) {490 if (inRow[col] != outRow[col]) {491 diag("psImageRoll didn't produce expected result "492 "at %d,%d (%f vs %f) for dx=0, dy=-rows/4",493 col,row,inRow[col],outRow[col]);494 errorFlag = true;495 }496 }497 }498 ok(!errorFlag, "psImageRoll() produced the correct data values");499 500 errorFlag = false;501 out = psImageRoll(out,in,-cols/4,-rows/4);502 for (psS32 row=0;row<rows;row++)503 {504 psF32 *inRow = in->data.F32[(row+rows-rows/4)%rows];505 psF32 *outRow = out->data.F32[row];506 for (psS32 col=0;col<cols;col++) {507 if (inRow[(col+cols-cols/4) % cols] != outRow[col]) {508 diag("psImageRoll didn't produce expected result "509 "at %d,%d (%f vs %f) for dx=cols/4, dy=rows/4",510 col,row,inRow[(col+cols-cols/4) % cols],outRow[col]);511 errorFlag = true;512 }513 }514 }515 ok(!errorFlag, "psImageRoll() produced the correct data values");516 517 518 544 // Verify the returned psImage structure pointer is NULL and program 519 545 // execution doesn't stop, if input parameter input is NULL. -
trunk/psLib/test/imageops/tap_psImagePixelExtract.c
r13127 r13614 6 6 * @author Robert DeSonia, MHPCC 7 7 * 8 * @version $Revision: 1. 5$ $Name: not supported by cvs2svn $9 * @date $Date: 2007-0 5-02 04:34:13$8 * @version $Revision: 1.6 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2007-06-04 20:25:32 $ 10 10 * 11 11 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 17 17 #include "pstap.h" 18 18 19 void genericImageRowColTests(int numRows, int numCols) 20 { 21 psMemId id = psMemGetId(); 22 psImage *image = psImageAlloc(numCols, numRows, PS_TYPE_F32); 23 for (int i = 0 ; i < numRows; i++) { 24 for (int j = 0 ; j < numCols; j++) { 25 image->data.F32[0][0] = (float) i+j; 26 } 27 } 28 29 bool errorFlag = false; 30 for (int i = 0 ; i < numRows; i++) { 31 psVector *out = psImageRow(NULL, image, i); 32 ok(out != NULL, "psImageRow returned non-NULL"); 33 if (out != NULL) { 34 for (int j = 0 ; j < numCols; j++) { 35 if (out->data.F32[j] != image->data.F32[i][j]) { 36 diag("TEST ERROR: image->data.F32[%d][%d] is %f, should be %f", i, j, 37 image->data.F32[i][j], out->data.F32[j]); 38 errorFlag = true; 39 } 40 } 41 psFree(out); 42 } else { 43 errorFlag = true; 44 } 45 } 46 ok(!errorFlag, "psImageRow() passed tests with correct data inputs"); 47 psFree(image); 48 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 49 } 50 51 52 19 53 psS32 main(psS32 argc, char* argv[]) 20 54 { 21 55 psLogSetFormat("HLNM"); 22 56 psLogSetLevel(PS_LOG_INFO); 23 plan_tests(2 48);57 plan_tests(295); 24 58 25 59 // test psImageSlice() … … 807 841 ok(out == NULL, "psImageCol() returned NULL"); 808 842 809 810 //Test valid cases. 811 //XXX: We do not verify the data values. 812 P_PSIMAGE_SET_COL0(image, 10); 813 P_PSIMAGE_SET_ROW0(image, 5); 814 *(int*)&(image->numRows) = 3; 815 *(int*)&(image->numCols) = 3; 843 // Test on correct input data for several sizes 844 genericImageRowColTests(1, 8); 845 genericImageRowColTests(8, 1); 846 genericImageRowColTests(8, 8); 847 genericImageRowColTests(8, 16); 848 genericImageRowColTests(16, 8); 849 psFree(image); 850 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 851 } 852 853 // testImageRowColF64() 854 { 855 psMemId id = psMemGetId(); 856 psVector *rowcol = NULL; 857 psVector *empty = NULL; 858 psImage *image = NULL; 859 860 image = psImageAlloc(3, 3, PS_TYPE_F64); 861 rowcol = psVectorAlloc(3, PS_TYPE_F64); 862 816 863 image->data.F64[0][0] = 666.666; 817 864 image->data.F64[1][0] = 66.6; … … 823 870 image->data.F64[1][2] = 666.66; 824 871 image->data.F64[2][2] = 66.66; 825 num = 7;826 out = psImageRow(out, image, num);827 828 829 ok(out != NULL, "psImageRow returned non-NULL");830 psFree(out);831 out = NULL;832 num = 11;833 out = psImageCol(NULL, image, num);834 ok(out != NULL, "psImageCol returned non-NULL");835 psFree(out);836 out = NULL;837 838 839 num = -3;840 out = psImageRow(out, image, num);841 ok(out != NULL, "psImageRow returned non-NULL");842 psFree(out);843 out = NULL;844 845 846 num = -1;847 out = psImageCol(NULL, image, num);848 ok(out != NULL, "psImageCol returned non-NULL");849 psFree(out);850 psFree(image);851 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks");852 }853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 // testImageRowColF64()870 {871 psMemId id = psMemGetId();872 psVector *rowcol = NULL;873 psVector *empty = NULL;874 psImage *image = NULL;875 876 image = psImageAlloc(3, 3, PS_TYPE_F64);877 rowcol = psVectorAlloc(3, PS_TYPE_F64);878 879 image->data.F64[0][0] = 666.666;880 image->data.F64[1][0] = 66.6;881 image->data.F64[2][0] = 6.66;882 image->data.F64[0][1] = 6.6;883 image->data.F64[1][1] = 6.666;884 image->data.F64[2][1] = 66.666;885 image->data.F64[0][2] = 666.6;886 image->data.F64[1][2] = 666.66;887 image->data.F64[2][2] = 66.66;888 872 889 873 //Test for error with NULL image -
trunk/psLib/test/imageops/tap_psImagePixelManip.c
r13123 r13614 6 6 * @author Robert DeSonia, MHPCC 7 7 * 8 * @version $Revision: 1. 7$ $Name: not supported by cvs2svn $9 * @date $Date: 2007-0 5-02 04:14:33$8 * @version $Revision: 1.8 $ $Name: not supported by cvs2svn $ 9 * @date $Date: 2007-06-04 20:25:32 $ 10 10 * 11 11 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 18 18 #define VERBOSE false 19 19 20 void genericImageClipTest(int numRows, int numCols) { 21 psMemId id = psMemGetId(); 22 23 psImage *image = psImageAlloc(numCols, numRows, PS_TYPE_F32); 24 for (int row = 0 ; row < numRows ; row++) { 25 for (int col = 0 ; col < numCols ; col++) { 26 image->data.F32[row][col] = (float) (row + col); 27 } 28 } 29 psF32 min = (psF64)numRows/2.0; 30 psF32 max = (psF64)numRows; 31 32 psS32 retVal = psImageClip(image, min, (double)PS_MIN_F32, max, (double)PS_MAX_F32); 33 int numClipped = 0; 34 bool errorFlag = false; 35 for (int row=0;row<numRows;row++) { 36 for (int col=0;col<numCols;col++) { 37 psF32 value = (psF32)(row+col); 38 if (value < min) { 39 numClipped++; 40 value = PS_MIN_F32; 41 } else if (value > max) { 42 numClipped++; 43 value = PS_MAX_F32; 44 } 45 if (fabsf(image->data.F32[row][col]-value) > FLT_EPSILON) { 46 diag("Pixel value is not as expected (%g vs %g) at %u,%u", 47 (psF64)image->data.F32[row][col], (psF64)value, col, row); 48 errorFlag = true; 49 } 50 } 51 } 52 ok(!errorFlag, "psImageClip() produced the correct data values"); 53 ok(retVal == numClipped, "Got the expected number of clips"); 54 psFree(image); 55 56 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 57 } 58 59 20 60 psS32 main(psS32 argc, char* argv[]) 21 61 { 22 62 psLogSetFormat("HLNM"); 23 63 psLogSetLevel(PS_LOG_INFO); 24 plan_tests(1 07);64 plan_tests(122); 25 65 26 66 // test psImageClip() … … 49 89 // and program executions doesn't stop, if input parameter min is larger than max. 50 90 // create image 91 92 genericImageClipTest(8, 1); 93 genericImageClipTest(1, 8); 94 genericImageClipTest(8, 8); 95 genericImageClipTest(8, 16); 96 genericImageClipTest(16, 8); 97 51 98 #define testImageClipByType(datatype) \ 52 99 { \ -
trunk/psLib/test/imageops/tap_psImageStructManip.c
r13123 r13614 5 5 * @author Robert DeSonia, MHPCC 6 6 * 7 * @version $Revision: 1.3 $ $Name: not supported by cvs2svn $ 8 * @date $Date: 2007-05-02 04:14:33 $ 7 * psLib functions tested: 8 * psImageSubset() 9 * psImageCopy() 10 * psImageTrim() 11 * 12 * @version $Revision: 1.4 $ $Name: not supported by cvs2svn $ 13 * @date $Date: 2007-06-04 20:25:32 $ 9 14 * 10 15 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 16 21 #include "pstap.h" 17 22 18 psS32 main( psS32 argc, char* argv[] ) 23 24 void genericImageSubsetTest(int numRows, int numCols) 19 25 { 20 psLogSetFormat("HLNM");21 psLogSetLevel(PS_LOG_INFO);22 plan_tests(185);23 24 25 26 // psImageSubset shall create child image of a specified size from a 26 27 // parent psImage structure … … 29 30 psMemId id = psMemGetId(); 30 31 psImage preSubsetStruct; 31 psS32 c = 128; 32 psS32 r = 256; 33 psRegion region1 = psRegionSet(0, c/2, 0, r/2); 34 psRegion region2 = psRegionSet(c/4, c/4+c/2, r/4, r/4+r/2); 35 36 psImage* original = psImageAlloc(c,r,PS_TYPE_U32); 37 for (psS32 row=0;row<r;row++) { 38 for (psS32 col=0;col<c;col++) { 32 psRegion region1 = psRegionSet(0, numCols/2, 0, numRows/2); 33 psRegion region2 = psRegionSet(numCols/4, numCols/4+numCols/2, numRows/4, numRows/4+numRows/2); 34 35 psImage* original = psImageAlloc(numCols,numRows,PS_TYPE_U32); 36 for (psS32 row=0;row<numRows;row++) { 37 for (psS32 col=0;col<numCols;col++) { 39 38 original->data.F32[row][col] = row*1000+col; 40 39 } 41 40 } 42 41 43 memcpy(&preSubsetStruct, original,sizeof(psImage));44 psImage* subset2 = psImageSubset(original, region2);42 memcpy(&preSubsetStruct, original, sizeof(psImage)); 43 psImage* subset2 = psImageSubset(original, region2); 45 44 ok(subset2, "psImageSubset() returned non-NULL (subset2)"); 46 45 skip_start(subset2 == NULL, 25, "Skipping tests because psImageSubset() returned NULL"); 47 psImage* subset3 = psImageSubset(original, region1);46 psImage* subset3 = psImageSubset(original, region1); 48 47 ok(subset3, "psImageSubset() returned non-NULL (subset3)"); 49 48 skip_start(subset3 == NULL, 24, "Skipping tests because psImageSubset() returned NULL"); … … 51 50 // Verify the returned psImage structure members nrow and ncol are equal to 52 51 // the input parameter nrow and ncol respectively 53 ok(subset2->numCols == c/2 && subset2->numRows == r/2,52 ok(subset2->numCols == numCols/2 && subset2->numRows == numRows/2, 54 53 "psImageSubset output size set properly"); 55 ok(subset3->numCols == c/2 && subset3->numRows == r/2,54 ok(subset3->numCols == numCols/2 && subset3->numRows == numRows/2, 56 55 "psImageSubset output size set properly"); 57 56 58 57 // Verify the returned psImage structure contains expected values in the 59 58 // row member, if the input psImage structure image contains known values 60 61 59 bool errorFlag = false; 62 for (psS32 row=0;row< r/2;row++) {63 for (psS32 col=0;col< c/2;col++) {64 if (subset2->data.U32[row][col] != original->data.U32[row+ r/4][col+c/4]) {60 for (psS32 row=0;row<numRows/2;row++) { 61 for (psS32 col=0;col<numCols/2;col++) { 62 if (subset2->data.U32[row][col] != original->data.U32[row+numRows/4][col+numCols/4]) { 65 63 diag("psImageSubset output #1 was wrong at %dx%d (%d vs %d).", 66 row,col,subset2->data.U32[row][col], original->data.U32[row+ r/4][col+c/4]);64 row,col,subset2->data.U32[row][col], original->data.U32[row+numRows/4][col+numCols/4]); 67 65 errorFlag = true; 68 66 } … … 83 81 // Verify the returned psImage structure members row0 and col0 are equal to 84 82 // the input parameters row0 and col0 respectively 85 ok(subset2->col0 == c/4 && subset2->row0 == r/4,83 ok(subset2->col0 == numCols/4 && subset2->row0 == numRows/4, 86 84 "psImageSubset() set col0/row0 correctly (subset2)"); 87 85 ok(subset3->col0 == 0 && subset3->row0 == 0, … … 101 99 ok(original->children->data[0] == subset2 && original->children->data[1] == subset3, 102 100 "psImageSubset did properly store the children pointers."); 103 104 101 105 102 // Verify the returned psImage structure pointer is null and program … … 111 108 ok(subset1 == NULL, "psImageSubset returned NULL when input image was NULL."); 112 109 113 114 110 // Verify the returned psImage structure pointer is null and program 115 111 // execution doesn't stop, if the input parameters nrow and/or ncol are zero. … … 117 113 // An error should follow... 118 114 // XXX: Verify error 119 memcpy(&preSubsetStruct,original,sizeof(psImage)); 120 subset1 = psImageSubset(original, psRegionSet(0,c/2,r/2,r/2)); 121 ok(subset1 == NULL, "psImageSubset returned NULL when numRows=0."); 122 // An error should follow... 123 // XXX: Verify error 124 subset1 = psImageSubset(original,psRegionSet(c/2,c/2,0,r/2)); 125 ok(subset1 == NULL, "psImageSubset returned NULL when numCols=0."); 126 ok(memcmp(original,&preSubsetStruct,sizeof(psImage)) == 0, 127 "psImageSubset didn't change the original struct though it failed to subset."); 115 { 116 memcpy(&preSubsetStruct,original,sizeof(psImage)); 117 subset1 = psImageSubset(original, psRegionSet(0,numCols/2,numRows/2,numRows/2)); 118 ok(subset1 == NULL, "psImageSubset returned NULL when numRows=0."); 119 // An error should follow... 120 // XXX: Verify error 121 subset1 = psImageSubset(original,psRegionSet(numCols/2,numCols/2,0,numRows/2)); 122 ok(subset1 == NULL, "psImageSubset returned NULL when numCols=0."); 123 ok(memcmp(original,&preSubsetStruct,sizeof(psImage)) == 0, 124 "psImageSubset didn't change the original struct though it failed to subset."); 125 } 128 126 129 127 // Verify the returned psImage structure pointer is null and program … … 132 130 // An error should follow... 133 131 // XXX: Verify error 134 subset1 = psImageSubset(original, psRegionSet(0,c/2, 0,r*2)); 135 ok(subset1 == NULL, 136 "psImageSubset returned NULL when subset origin was outside of image (via cols)"); 137 // An error should follow... 138 // XXX: Verify error 139 subset1 = psImageSubset(original,psRegionSet(0,c*2,0,r/2)); 140 ok(subset1 == NULL, 141 "psImageSubset returned NULL when subset origin was outside of image (via rows)"); 142 // An error should follow... 143 // XXX: Verify error 144 subset1 = psImageSubset(original, psRegionSet(-1,c/2,0,r/2)); 145 ok(subset1 == NULL, 146 "psImageSubset returned NULL when subset origin was outside of image (col0=-1)"); 147 // An error should follow... 148 // XXX: Verify error 149 subset1 = psImageSubset(original, psRegionSet(0,c/2,-1,r/2)); 150 ok(subset1 == NULL, 151 "psImageSubset returned NULL when subset origin was outside of image (row0=-1)"); 152 132 { 133 subset1 = psImageSubset(original, psRegionSet(0,numCols/2, 0,numRows*2)); 134 ok(subset1 == NULL, 135 "psImageSubset returned NULL when subset origin was outside of image (via cols)"); 136 // An error should follow... 137 // XXX: Verify error 138 subset1 = psImageSubset(original,psRegionSet(0,numCols*2,0,numRows/2)); 139 ok(subset1 == NULL, 140 "psImageSubset returned NULL when subset origin was outside of image (via rows)"); 141 // An error should follow... 142 // XXX: Verify error 143 subset1 = psImageSubset(original, psRegionSet(-1,numCols/2,0,numRows/2)); 144 ok(subset1 == NULL, 145 "psImageSubset returned NULL when subset origin was outside of image (col0=-1)"); 146 // An error should follow... 147 // XXX: Verify error 148 subset1 = psImageSubset(original, psRegionSet(0,numCols/2,-1,numRows/2)); 149 ok(subset1 == NULL, 150 "psImageSubset returned NULL when subset origin was outside of image (row0=-1)"); 151 } 153 152 154 153 // Verify the returned psImage structure pointer is null and program … … 158 157 // An error should follow... 159 158 // XXX: Verify error 160 subset1 = psImageSubset(original,psRegionSet(0,c/2,0,r+1)); 161 ok(subset1 == NULL, 162 "psImageSubset returned NULL when subset was outside of image (via rows)"); 163 // An error should follow... 164 // XXX: Verify error 165 subset1 = psImageSubset(original, psRegionSet(0,c+1,0,r/2)); 166 ok(subset1 == NULL, 167 "psImageSubset returned NULL when subset was outside of image (via cols)"); 168 // An error should follow... 169 // XXX: Verify error 170 subset1 = psImageSubset(original,psRegionSet(0,c+1,0,r+1)); 171 ok(subset1 == NULL, 172 "psImageSubset returned NULL when subset was outside of image (via row+cols)"); 173 159 { 160 subset1 = psImageSubset(original,psRegionSet(0,numCols/2,0,numRows+1)); 161 ok(subset1 == NULL, 162 "psImageSubset returned NULL when subset was outside of image (via rows)"); 163 // An error should follow... 164 // XXX: Verify error 165 subset1 = psImageSubset(original, psRegionSet(0,numCols+1,0,numRows/2)); 166 ok(subset1 == NULL, 167 "psImageSubset returned NULL when subset was outside of image (via cols)"); 168 // An error should follow... 169 // XXX: Verify error 170 subset1 = psImageSubset(original,psRegionSet(0,numCols+1,0,numRows+1)); 171 ok(subset1 == NULL, 172 "psImageSubset returned NULL when subset was outside of image (via row+cols)"); 173 } 174 174 175 175 // psImageFreeChildren shall deallocate any children images of a … … 196 196 ok(!psMemCheckLeaks (id, NULL, NULL, false), "no memory leaks"); 197 197 } 198 } 199 200 psS32 main(psS32 argc, char* argv[]) 201 { 202 psLogSetFormat("HLNM"); 203 psLogSetLevel(PS_LOG_INFO); 204 plan_tests(239); 205 206 genericImageSubsetTest(128, 256); 207 genericImageSubsetTest(256, 128); 208 genericImageSubsetTest(128, 128); 198 209 199 210 // psImageCopy()
Note:
See TracChangeset
for help on using the changeset viewer.
