Changeset 6006


Ignore:
Timestamp:
03/09/10 12:05:30 (10 years ago)
Author:
callan
Message:

#466 Complete coverage of the required IFD entries for a grayscale image.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/cleanup/components/bio-formats/test/loci/formats/utests/tiff/TiffParserGrayscaleTest.java

    r6004 r6006  
    8989    long next = ENTRY_VALUE_BEGIN_OFFSET; 
    9090    // IFD entry count 
    91     handle.writeShort(7); 
     91    handle.writeShort(10); 
    9292    // IMAGE_WIDTH 
    9393    writeIFDEntry((short) IFD.IMAGE_WIDTH, IFDType.SHORT, IMAGE_WIDTH); 
     
    9696    // BITS_PER_SAMPLE 
    9797    writeIFDEntry((short) IFD.BITS_PER_SAMPLE, IFDType.SHORT, 
    98                         BITS_PER_SAMPLE); 
     98                  BITS_PER_SAMPLE); 
    9999    // COMPRESSION 
    100100    writeIFDEntry((short) IFD.COMPRESSION, IFDType.SHORT, 
     
    102102    // PHOTOMETRIC_INTERPRETATION 
    103103    writeIFDEntry((short) IFD.PHOTOMETRIC_INTERPRETATION, IFDType.SHORT, 
    104                         PhotoInterp.RGB.getCode()); 
     104                  PhotoInterp.RGB.getCode()); 
    105105    // STRIP_OFFSETS 
    106106    next = writeIFDEntry((short) IFD.STRIP_OFFSETS, IFDType.LONG, 
    107                                STRIP_OFFSETS, next); 
     107                         STRIP_OFFSETS, next); 
    108108    // ROWS_PER_STRIP 
    109109    next = writeIFDEntry((short) IFD.ROWS_PER_STRIP, IFDType.LONG, 
    110                                ROWS_PER_STRIP, next); 
     110                         ROWS_PER_STRIP, next); 
     111    // X_RESOLUTION 
     112    next = writeIFDEntry((short) IFD.X_RESOLUTION, IFDType.RATIONAL, 
     113                         X_RESOLUTION, next); 
     114    // Y_RESOLUTION 
     115    next = writeIFDEntry((short) IFD.Y_RESOLUTION, IFDType.RATIONAL, 
     116                         Y_RESOLUTION, next); 
     117    // RESOLUTION_UNIT 
     118    writeIFDEntry((short) IFD.RESOLUTION_UNIT, IFDType.SHORT, 
     119                  RESOLUTION_UNIT); 
    111120    // Terminating IFD offset 
    112121    handle.writeInt(0); 
     
    139148  } 
    140149 
     150  private long writeIFDEntry(short tag, IFDType type, TiffRational values, 
     151                             long offset) throws IOException { 
     152    handle.writeShort(tag);  // IFD entry tag 
     153    handle.writeShort(type.getCode());  // IFD entry type 
     154    handle.writeInt(1);  // IFD entry value count 
     155    handle.writeInt((int) offset); // The offset to the value 
     156    long before = handle.getFilePointer(); 
     157    handle.seek(offset); 
     158    handle.writeInt((int) values.getNumerator()); 
     159    handle.writeInt((int) values.getDenominator()); 
     160    long after = handle.getFilePointer(); 
     161    handle.seek(before); 
     162    return after; 
     163  } 
     164 
    141165  @Test 
    142166  public void testHeader() throws IOException { 
     
    229253  } 
    230254 
     255  @Test 
     256  public void testGetXResolution() throws IOException, FormatException { 
     257    // TODO: Must be called first 
     258    assertTrue(tiffParser.checkHeader()); 
     259    int tag = IFD.X_RESOLUTION; 
     260    assertTrue(X_RESOLUTION.equals( 
     261        tiffParser.getFirstIFD().getIFDRationalValue(tag))); 
     262  } 
     263 
     264  @Test 
     265  public void testGetYResolution() throws IOException, FormatException { 
     266    // TODO: Must be called first 
     267    assertTrue(tiffParser.checkHeader()); 
     268    int tag = IFD.Y_RESOLUTION; 
     269    assertTrue(Y_RESOLUTION.equals( 
     270        tiffParser.getFirstIFD().getIFDRationalValue(tag))); 
     271  } 
     272 
     273  @Test 
     274  public void testGetResolutionUnit() throws IOException, FormatException { 
     275    // TODO: Must be called first 
     276    assertTrue(tiffParser.checkHeader()); 
     277    int tag = IFD.RESOLUTION_UNIT; 
     278    assertEquals(RESOLUTION_UNIT, 
     279                 tiffParser.getFirstIFD().getIFDIntValue(tag)); 
     280  } 
     281 
    231282  // TODO: Test non-uniform rows per strip exception 
    232283  // TODO: Test bits per sample array length != samples per pixel exception 
     284  // TODO: Test wrong type exceptions 
    233285} 
Note: See TracChangeset for help on using the changeset viewer.