package org.hipi.test;
import static org.junit.Assert.*;
import org.hipi.image.RasterImage;
import org.hipi.image.FloatImage;
import org.hipi.image.ByteImage;
import org.hipi.image.HipiImageFactory;
import org.hipi.image.HipiImageHeader;
import org.hipi.image.HipiImage.HipiImageType;
import org.hipi.image.HipiImageHeader.HipiColorSpace;
import org.hipi.image.HipiImageHeader.HipiImageFormat;
import org.hipi.image.io.ImageCodec;
import org.hipi.image.io.ImageDecoder;
import org.hipi.image.io.JpegCodec;
import org.hipi.image.io.PpmCodec;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.lang.ArrayUtils;
import org.junit.Test;
import org.hipi.image.io.ImageEncoder;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.File;
public class FloatImageTestCase {
@Test
public void testSanity() throws IOException {
FloatImage floatImage = new FloatImage();
assertEquals(floatImage.getType(), HipiImageType.FLOAT);
assertEquals(floatImage.getData(), null);
assertFalse(floatImage.equalsWithTolerance(null, 1.0f));
}
@Test
public void testFloatImageWritable() throws IOException {
ImageDecoder ppmDecoder = PpmCodec.getInstance();
assertNotNull(ppmDecoder);
File[] cmykFiles = new File("../testdata/jpeg-cmyk").listFiles();
File[] rgbFiles = new File("../testdata/jpeg-rgb").listFiles();
File[] files = (File[])ArrayUtils.addAll(cmykFiles,rgbFiles);
for (int iter=0; iter<2; iter++) {
for (File file : files) {
if (file.isFile() && file.getName().endsWith("_photoshop.ppm")) {
String ppmPath = file.getPath();
System.out.println(ppmPath);
FileInputStream ppmInputStream = new FileInputStream(ppmPath);
assertNotNull(ppmInputStream);
HipiImageFactory imageFactory = (iter == 0 ? HipiImageFactory.getByteImageFactory() : HipiImageFactory.getFloatImageFactory());
assertNotNull(imageFactory);
RasterImage image = (RasterImage)ppmDecoder.decodeHeaderAndImage(ppmInputStream, imageFactory, false);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
image.write(new DataOutputStream(bos));
ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
RasterImage newImage = (iter == 0 ? new ByteImage() : new FloatImage());
newImage.readFields(new DataInputStream(bis));
assertEquals(ppmPath + " writable test fails", image, newImage);
}
}
}
}
}