Changeset 6344


Ignore:
Timestamp:
05/18/10 17:21:03 (10 years ago)
Author:
bdezonia
Message:

more work on color tests. work on memoryRecord test too.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/components/loci-plugins/test/loci/plugins/in/ImporterTest.java

    r6331 r6344  
    55package loci.plugins.in; 
    66 
     7import org.junit.Test; 
     8 
    79import static org.junit.Assert.assertEquals; 
    8 import static org.junit.Assert.assertArrayEquals; 
    910import static org.junit.Assert.assertNotNull; 
    1011import static org.junit.Assert.assertTrue; 
     
    1314 
    1415import ij.CompositeImage; 
     16import ij.IJ; 
    1517import ij.ImagePlus; 
    1618import ij.ImageStack; 
     19import ij.WindowManager; 
    1720import ij.process.ImageProcessor; 
     21import ij.process.LUT; 
    1822 
    1923import java.awt.Color; 
     
    2731import loci.plugins.BF; 
    2832 
    29 import org.junit.Test; 
    3033 
    3134// TODO 
     
    7073 
    7174    //String template = "test_C%s_TP%s&sizeX=50&sizeY=20&sizeZ=7.fake"; 
    72     String template = constructFakeFilename("test_C%s_TP%s", FormatTools.INT32, 50, 20, 7, 1, 1, -1); 
     75    String template = constructFakeFilename("test_C%s_TP%s", FormatTools.INT32, 50, 20, 7, 1, 1, -1, false, -1, false); 
    7376                                                                        // BDZ - INT32 is desirable for the color tests 
    7477     
     
    101104 
    102105  private static String constructFakeFilename(String title, 
    103       int pixelType, int sizeX, int sizeY, int sizeZ, int sizeC, int sizeT, int numSeries) 
     106      int pixelType, int sizeX, int sizeY, int sizeZ, int sizeC, int sizeT, int numSeries, 
     107      boolean indexed, int rgb, boolean falseColor) 
    104108  { 
    105109    // some tests rely on each image being large enough to get the s,i,z,t,c index pixels of a 
     
    119123    fileName += "&sizeT=" + sizeT; 
    120124    if (numSeries > 0) fileName += "&series=" + numSeries; 
     125    if (indexed) fileName += "&indexed=true"; 
     126    if (rgb != -1) fileName += "&rgb=" + rgb; 
     127    if (falseColor) fileName += "&falseColor=true"; 
    121128    fileName += ".fake"; 
    122129     
     
    348355  private void defaultBehaviorTest(int pixType, int x, int y, int z, int c, int t) 
    349356  { 
    350     String path = constructFakeFilename("default", pixType, x, y, z, c, t, -1); 
     357    String path = constructFakeFilename("default", pixType, x, y, z, c, t, -1, false, -1, false); 
    351358    ImagePlus[] imps = null; 
    352359     
     
    370377  private void outputStackOrderTest(int pixType, String order, int x, int y, int z, int c, int t) 
    371378  { 
    372     String path = constructFakeFilename(order, pixType, x, y, z, c, t, -1); 
     379    String path = constructFakeFilename(order, pixType, x, y, z, c, t, -1, false, -1, false); 
    373380     
    374381    ImagePlus[] imps = null; 
     
    426433  { 
    427434    int c = 3; String origOrder = "XYZCT", swappedOrder = "XYTCZ"; 
    428     String path = constructFakeFilename("swapDims", pixType, x, y, z, c, t, -1); 
     435    String path = constructFakeFilename("swapDims", pixType, x, y, z, c, t, -1, false, -1, false); 
    429436    ImagePlus[] imps = null; 
    430437    try { 
     
    468475  private void datasetOpenAllSeriesTest(int x, int y, int z, int c, int t, int s) 
    469476  { 
    470     String path = constructFakeFilename("XYZCT", FormatTools.UINT32, x, y, z, c, t, s); 
     477    String path = constructFakeFilename("XYZCT", FormatTools.UINT32, x, y, z, c, t, s, false, -1, false); 
    471478     
    472479    // try it when false 
     
    525532    // open all series as one 
    526533     
    527     String path = constructFakeFilename(order, pixType, x, y, z, c, t, s); 
     534    String path = constructFakeFilename(order, pixType, x, y, z, c, t, s, false, -1, false); 
    528535    ImagePlus[] imps = null; 
    529536    try { 
     
    569576  { 
    570577    final int sizeZ = 2, sizeC = 3, sizeT = 4, sizeX = 51, sizeY = 16; 
    571     final String path = constructFakeFilename("autoscale",pixType, sizeX, sizeY, sizeZ, sizeC, sizeT, -1); 
     578    final String path = constructFakeFilename("autoscale",pixType, sizeX, sizeY, sizeZ, sizeC, sizeT, -1, false, -1, false); 
    572579     
    573580    ImagePlus[] imps = null; 
     
    622629      int originCropX, int originCropY, int sizeCrop) 
    623630  { 
    624     final String path = constructFakeFilename("cropAutoscale",pixType, sizeX, sizeY, sizeZ, sizeC, sizeT, numSeries); 
     631    final String path = constructFakeFilename("cropAutoscale",pixType, sizeX, sizeY, sizeZ, sizeC, sizeT, numSeries, false, -1, false); 
    625632     
    626633    // needed for this test 
     
    672679      int x = 604, y = 531, z = 7, c = 1, t = 1; 
    673680       
    674       String path = constructFakeFilename("vstack", FormatTools.UINT16, x, y, z, c, t, -1); 
     681      String path = constructFakeFilename("vstack", FormatTools.UINT16, x, y, z, c, t, -1, false, -1, false); 
    675682       
    676683      // open stack 
     
    701708  private void memoryRecordModificationsTest(boolean wantToRemember) 
    702709  { 
    703     int x = 444, y = 387, z = 7, c = 1, t = 1; 
    704     String path = constructFakeFilename("memRec", FormatTools.UINT8, x, y, z, c, t, -1); 
     710    int x = 50, y = 40, z = 3, c = 1, t = 1; 
     711    String path = constructFakeFilename("memRec", FormatTools.UINT8, x, y, z, c, t, -1, false, -1, false); 
    705712    ImagePlus[] imps = null; 
    706713    ImagePlus imp = null; 
     
    727734    assertEquals(1,imps.length); 
    728735    imp = imps[0]; 
    729     assertNotNull(imp); 
    730736    xyzctTest(imp,x,y,z,c,t); 
    731737 
    732738    // change data in slice 1, swap to slice 2, swap back, see whether data reverts 
    733739 
    734     // original way - looks correct 
    735740    imp.setSlice(1); 
    736     assertEquals(0,(int)imp.getProcessor().getPixelValue(0,10)); 
    737     imp.getProcessor().invert(); 
    738     //IJ.runPlugIn(imp, "Invert", "");  // this makes no difference 
    739     assertEquals(255,(int)imp.getProcessor().getPixelValue(0,10)); 
     741    assertEquals(10,(int)imp.getProcessor().getPixelValue(10,25)); 
     742 
     743    // run a plugin whose changes are recorded 
     744    WindowManager.setTempCurrentImage(imp); 
     745    IJ.run("Flip Horizontally","slice"); 
     746 
     747    assertEquals(39,(int)imp.getProcessor().getPixelValue(10,25)); 
    740748    imp.setSlice(2); 
    741     assertEquals(0,(int)imp.getProcessor().getPixelValue(0,10)); 
     749    assertEquals(10,(int)imp.getProcessor().getPixelValue(10,25)); 
    742750    imp.setSlice(1); 
    743     int expectedVal = wantToRemember ? 255 : 0; 
    744     assertEquals(expectedVal,(int)imp.getProcessor().getPixelValue(0,10)); 
    745      
    746     /* 
    747     // alternative way - should be equivalent but testing to be sure 
    748     imp.setSlice(1); 
    749     assertEquals(0,(int)imp.getStack().getProcessor(1).getPixelValue(0,10)); 
    750     imp.getStack().getProcessor(1).invert(); 
    751     assertEquals(255,(int)imp.getStack().getProcessor(1).getPixelValue(0,10)); 
    752     imp.setSlice(2); 
    753     assertEquals(0,(int)imp.getStack().getProcessor(2).getPixelValue(0,10)); 
    754     imp.setSlice(1); 
    755     int expectedVal = wantToRemember ? 255 : 0; 
    756     assertEquals(expectedVal,(int)imp.getStack().getProcessor(1).getPixelValue(0,10)); 
    757     */ 
     751    int expectedVal = wantToRemember ? 39 : 10; 
     752    assertEquals(expectedVal,(int)imp.getProcessor().getPixelValue(10,25)); 
    758753  } 
    759754   
     
    764759  {  
    765760    int pixType = FormatTools.UINT8, x=50, y=5, s=-1; 
    766     String path = constructFakeFilename("range", pixType, x, y, z, c, t, s); 
     761    String path = constructFakeFilename("range", pixType, x, y, z, c, t, s, false, -1, false); 
    767762    ImagePlus[] imps = null; 
    768763    try { 
     
    818813  private void memoryCropTest(int pixType, int x, int y, int cx, int cy) 
    819814  { 
    820     String path = constructFakeFilename("crop", pixType, x, y, 1, 1, 1, 1); 
     815    String path = constructFakeFilename("crop", pixType, x, y, 1, 1, 1, 1, false, -1, false); 
    821816     
    822817    // open image 
     
    976971    int sizeX = 100, sizeY = 120, sizeZ = 2, sizeC = 7, sizeT = 4, numSeries = 3; 
    977972     
    978     String path = constructFakeFilename("colorized", FormatTools.UINT8, sizeX, sizeY, sizeZ, sizeC, sizeT, numSeries); 
     973    String path = constructFakeFilename("colorDefault", FormatTools.UINT8, sizeX, sizeY, sizeZ, sizeC, sizeT, numSeries, false, -1, false); 
    979974     
    980975    ImagePlus[] imps = null; 
     
    1001996     
    1002997    assertFalse(imp.isComposite()); 
     998 
     999    // TODO - not a composite - need to determine what to test 
    10031000     
    10041001    fail("unfinished"); 
    10051002  } 
    10061003   
     1004  // channel is 0-based 
     1005  private void lutTest(CompositeImage ci, int channel, int minR, int minG, int minB, int maxR, int maxG, int maxB) 
     1006  { 
     1007    LUT lut = null; 
     1008     
     1009    byte[] reds = new byte[256]; 
     1010    byte[] blues = new byte[256]; 
     1011    byte[] greens = new byte[256]; 
     1012     
     1013    lut = ci.getChannelLut(channel+1);  // IJ is 1-based 
     1014    lut.getReds(reds); 
     1015    lut.getGreens(greens); 
     1016    lut.getBlues(blues); 
     1017     
     1018    assertEquals((byte)minR,reds[0]); 
     1019    assertEquals((byte)maxR,reds[255]); 
     1020    assertEquals((byte)minG,greens[0]); 
     1021    assertEquals((byte)maxG,greens[255]); 
     1022    assertEquals((byte)minB,blues[0]); 
     1023    assertEquals((byte)maxB,blues[255]); 
     1024  } 
     1025   
    10071026  @Test 
    10081027  public void testColorComposite() 
     
    10101029    int sizeX = 100, sizeY = 120, sizeZ = 2, sizeC = 7, sizeT = 4, numSeries = 3; 
    10111030     
    1012     String path = constructFakeFilename("colorized", FormatTools.UINT8, sizeX, sizeY, sizeZ, sizeC, sizeT, numSeries); 
     1031    String path = constructFakeFilename("colorComposite", FormatTools.UINT8, sizeX, sizeY, sizeZ, sizeC, sizeT, numSeries, false, -1, false); 
    10131032     
    10141033    ImagePlus[] imps = null; 
     
    10401059     
    10411060    assertFalse(ci.hasCustomLuts()); 
    1042     assertArrayEquals(new int[]{0,0,0,0}, ci.getPixel(55,22)); 
    1043     fail("unfinished"); 
     1061 
     1062    assertEquals(CompositeImage.COMPOSITE, ci.getMode()); 
     1063     
     1064    lutTest(ci,0,0,0,0,255,0,0); 
     1065    if (sizeC > 1) 
     1066      lutTest(ci,1,0,0,0,0,255,0); 
     1067    if (sizeC > 2) 
     1068      lutTest(ci,2,0,0,0,0,0,255); 
     1069    if (sizeC > 3) 
     1070      lutTest(ci,3,0,0,0,255,255,255); 
     1071    if (sizeC > 4) 
     1072      lutTest(ci,4,0,0,0,0,255,255); 
     1073    if (sizeC > 5) 
     1074      lutTest(ci,5,0,0,0,255,0,255); 
     1075    if (sizeC > 6) 
     1076      lutTest(ci,6,0,0,0,255,255,0); 
     1077     
     1078    fail("partial impl"); 
    10441079  } 
    10451080   
     
    10491084    int sizeX = 100, sizeY = 120, sizeZ = 2, sizeC = 7, sizeT = 4, numSeries = 3; 
    10501085     
    1051     String path = constructFakeFilename("colorized", FormatTools.UINT8, sizeX, sizeY, sizeZ, sizeC, sizeT, numSeries); 
     1086    String path = constructFakeFilename("colorColorized", FormatTools.UINT8, sizeX, sizeY, sizeZ, sizeC, sizeT, numSeries, false, -1, false); 
    10521087     
    10531088    ImagePlus[] imps = null; 
     
    10791114     
    10801115    assertFalse(ci.hasCustomLuts()); 
    1081     assertArrayEquals(new int[]{0,0,0,0}, ci.getPixel(55,22)); 
     1116 
     1117    assertEquals(CompositeImage.COLOR, ci.getMode()); 
     1118     
     1119    lutTest(ci,0,0,0,0,255,0,0); 
     1120    if (sizeC > 1) 
     1121      lutTest(ci,1,0,0,0,0,255,0); 
     1122    if (sizeC > 2) 
     1123      lutTest(ci,2,0,0,0,0,0,255); 
     1124    if (sizeC > 3) 
     1125      lutTest(ci,3,0,0,0,255,255,255); 
     1126    if (sizeC > 4) 
     1127      lutTest(ci,4,0,0,0,0,255,255); 
     1128    if (sizeC > 5) 
     1129      lutTest(ci,5,0,0,0,255,0,255); 
     1130    if (sizeC > 6) 
     1131      lutTest(ci,6,0,0,0,255,255,0); 
     1132 
    10821133    fail("unfinished"); 
    10831134  } 
     
    10881139    int sizeX = 100, sizeY = 120, sizeZ = 2, sizeC = 7, sizeT = 4, numSeries = 3; 
    10891140     
    1090     String path = constructFakeFilename("colorized", FormatTools.UINT8, sizeX, sizeY, sizeZ, sizeC, sizeT, numSeries); 
     1141    String path = constructFakeFilename("colorGrayscale", FormatTools.UINT8, sizeX, sizeY, sizeZ, sizeC, sizeT, numSeries, false, -1, false); 
    10911142     
    10921143    ImagePlus[] imps = null; 
     
    11181169     
    11191170    assertFalse(ci.hasCustomLuts()); 
    1120     assertArrayEquals(new int[]{0,0,0,0}, ci.getPixel(55,22)); 
     1171 
     1172    assertEquals(CompositeImage.GRAYSCALE, ci.getMode()); 
     1173 
     1174    lutTest(ci,0,0,0,0,255,0,0); 
     1175    if (sizeC > 1) 
     1176      lutTest(ci,1,0,0,0,0,255,0); 
     1177    if (sizeC > 2) 
     1178      lutTest(ci,2,0,0,0,0,0,255); 
     1179    if (sizeC > 3) 
     1180      lutTest(ci,3,0,0,0,255,255,255); 
     1181    if (sizeC > 4) 
     1182      lutTest(ci,4,0,0,0,0,255,255); 
     1183    if (sizeC > 5) 
     1184      lutTest(ci,5,0,0,0,255,0,255); 
     1185    if (sizeC > 6) 
     1186      lutTest(ci,6,0,0,0,255,255,0); 
     1187 
    11211188    fail("unfinished"); 
    11221189  } 
     
    11271194    int sizeX = 100, sizeY = 120, sizeZ = 2, sizeC = 7, sizeT = 4, numSeries = 3; 
    11281195     
    1129     String path = constructFakeFilename("colorized", FormatTools.UINT8, sizeX, sizeY, sizeZ, sizeC, sizeT, numSeries); 
     1196    String path = constructFakeFilename("colorCustom", FormatTools.UINT8, sizeX, sizeY, sizeZ, sizeC, sizeT, numSeries, false, -1, false); 
    11301197     
    11311198    ImagePlus[] imps = null; 
     
    11361203      ImporterOptions options = new ImporterOptions(); 
    11371204      options.setColorMode(ImporterOptions.COLOR_MODE_CUSTOM); 
    1138       int series = 0; int channel = 0; 
    1139       options.setCustomColor(series, channel, Color.BLUE); 
     1205      for (int s = 0; s < numSeries; s++) 
     1206      { 
     1207        options.setCustomColor(s, 0, Color.BLUE); 
     1208        if (sizeC > 1) 
     1209          options.setCustomColor(s, 1, Color.RED); 
     1210        if (sizeC > 2) 
     1211          options.setCustomColor(s, 2, Color.GREEN); 
     1212        if (sizeC > 3) 
     1213          options.setCustomColor(s, 3, Color.MAGENTA); 
     1214        if (sizeC > 4) 
     1215          options.setCustomColor(s, 4, Color.CYAN); 
     1216        if (sizeC > 5) 
     1217          options.setCustomColor(s, 5, Color.YELLOW); 
     1218        if (sizeC > 6) 
     1219          options.setCustomColor(s, 6, Color.GRAY); 
     1220      } 
    11401221      options.setId(path); 
    11411222      imps = BF.openImagePlus(options); 
     
    11591240     
    11601241    assertFalse(ci.hasCustomLuts()); 
    1161     assertArrayEquals(new int[]{0,0,0,0}, ci.getPixel(55,22)); 
     1242 
     1243    assertEquals(CompositeImage.COLOR, ci.getMode()); 
     1244 
     1245    lutTest(ci,0,0,0,0,0,0,255);        // blue 
     1246    if (sizeC >= 2) 
     1247      lutTest(ci,1,0,0,0,255,0,0);      // red 
     1248    if (sizeC >= 3) 
     1249      lutTest(ci,2,0,0,0,0,255,0);      // green 
     1250    if (sizeC >= 4) 
     1251      lutTest(ci,3,0,0,0,255,0,255);    // magenta 
     1252    if (sizeC >= 5) 
     1253      lutTest(ci,4,0,0,0,0,255,255);    // cyan 
     1254    if (sizeC >= 7) 
     1255      lutTest(ci,5,0,0,0,255,255,0);    // yellow 
     1256    if (sizeC >= 7) 
     1257      lutTest(ci,6,0,0,0,255,255,255);  // gray 
     1258 
    11621259    fail("unfinished"); 
    11631260  } 
     
    15701667    final int sizeX = 50, sizeY = 20, sizeZ = 5, sizeC = 3, sizeT = 7; 
    15711668    final String path = constructFakeFilename("splitC", 
    1572       FormatTools.UINT8, sizeX, sizeY, sizeZ, sizeC, sizeT, -1); 
     1669      FormatTools.UINT8, sizeX, sizeY, sizeZ, sizeC, sizeT, -1, false, -1, false); 
    15731670 
    15741671    // open image 
     
    16141711    final int sizeX = 50, sizeY = 20, sizeZ = 5, sizeC = 3, sizeT = 7; 
    16151712    final String path = constructFakeFilename("splitZ", 
    1616       FormatTools.UINT8, sizeX, sizeY, sizeZ, sizeC, sizeT, -1); 
     1713      FormatTools.UINT8, sizeX, sizeY, sizeZ, sizeC, sizeT, -1, false, -1, false); 
    16171714 
    16181715    // open image 
     
    16581755    final int sizeX = 50, sizeY = 20, sizeZ = 5, sizeC = 3, sizeT = 7; 
    16591756    final String path = constructFakeFilename("splitT", 
    1660       FormatTools.UINT8, 50, 20, sizeZ, sizeC, sizeT, -1); 
     1757      FormatTools.UINT8, 50, 20, sizeZ, sizeC, sizeT, -1, false, -1, false); 
    16611758 
    16621759    // open image 
Note: See TracChangeset for help on using the changeset viewer.