/** Tests the {@link ImageWorker#tile()} methods. Some trivial tests are performed before. */
  @Test
  public void testReTile() {
    assertTrue("Assertions should be enabled.", ImageWorker.class.desiredAssertionStatus());
    ImageWorker worker = new ImageWorker(worldImage);

    assertSame(worldImage, worker.getRenderedImage());
    assertEquals(4, worker.getNumBands());
    assertEquals(-1, worker.getTransparentPixel());
    assertTrue(worker.isBytes());
    assertFalse(worker.isBinary());
    assertFalse(worker.isIndexed());
    assertTrue(worker.isColorSpaceRGB());
    assertFalse(worker.isColorSpaceGRAYScale());
    assertTrue(worker.isTranslucent());

    assertSame("Expected no operation.", worldImage, worker.rescaleToBytes().getRenderedImage());
    assertSame(
        "Expected no operation.", worldImage, worker.forceComponentColorModel().getRenderedImage());
    assertSame(
        "Expected no operation.", worldImage, worker.forceColorSpaceRGB().getRenderedImage());
    assertSame("Expected no operation.", worldImage, worker.retainBands(4).getRenderedImage());

    // Following will change image, so we need to test after the above assertions.
    worker.setRenderingHint(
        JAI.KEY_IMAGE_LAYOUT,
        new ImageLayout()
            .setTileGridXOffset(0)
            .setTileGridYOffset(0)
            .setTileHeight(64)
            .setTileWidth(64));
    worker.tile();
    assertSame("Expected 64.", 64, worker.getRenderedImage().getTileWidth());
    assertSame("Expected 64.", 64, worker.getRenderedImage().getTileHeight());
  }
  /** Tests the conversion between RGB and indexed color model. */
  @Test
  public void testRGB2Palette() {
    assertTrue("Assertions should be enabled.", ImageWorker.class.desiredAssertionStatus());
    final ImageWorker worker = new ImageWorker(worldImage);
    show(worker, "Input file");
    worker.forceIndexColorModelForGIF(true);

    // Convert to to index color bitmask
    ColorModel cm = worker.getRenderedImage().getColorModel();
    assertTrue("wrong color model", cm instanceof IndexColorModel);
    assertEquals("wrong transparency model", Transparency.BITMASK, cm.getTransparency());
    assertEquals("wrong transparency index", 255, ((IndexColorModel) cm).getTransparentPixel());
    show(worker, "Paletted bitmask");

    // Go back to rgb.
    worker.forceComponentColorModel();
    cm = worker.getRenderedImage().getColorModel();
    assertTrue("wrong color model", cm instanceof ComponentColorModel);
    assertEquals("wrong bands number", 4, cm.getNumComponents());

    show(worker, "RGB translucent");
    assertEquals("wrong transparency model", Transparency.TRANSLUCENT, cm.getTransparency());
    show(worker, "RGB translucent");
  }