/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package ste.cameracontrol;
import java.awt.image.BufferedImage;
import junit.framework.TestCase;
import org.apache.commons.io.IOUtils;
/**
*
* @author ste
*/
public class PhotoTest extends TestCase {
public PhotoTest(String testName) {
super(testName);
}
@Override
protected void setUp() throws Exception {
super.setUp();
}
@Override
protected void tearDown() throws Exception {
super.tearDown();
}
public void testConstructorsOK() {
Photo p = new Photo("name");
assertEquals("name", p.getName());
assertNull(p.getRawData());
assertNull(p.getJpegData());
}
public void testConstructorsKO() {
try {
Photo p = new Photo(null);
fail("name must be checked for null values");
} catch (IllegalArgumentException e) {
//
// OK
//
}
try {
Photo p = new Photo("");
fail("name must be checked for empty values");
} catch (IllegalArgumentException e) {
//
// OK
//
}
}
public void testEquals() {
Photo p1 = new Photo("one");
Photo p2 = new Photo("two");
Photo p3 = new Photo("one");
assertFalse(p1.equals(null));
assertTrue(p1.equals(p1));
assertFalse(p1.equals(new Object()));
assertFalse(p1.equals(p2));
assertTrue(p1.equals(p3));
assertTrue(p3.equals(p1));
}
public void testHashCode() {
final String NAME = "name";
Photo p = new Photo(NAME);
assertEquals(NAME.hashCode(), p.hashCode());
}
public void testSetJpegData() throws Exception {
Photo p = new Photo("name");
try {
p.setJpegData(null);
fail("data cannot be null");
} catch (IllegalArgumentException e) {
//
// Ok
//
}
try {
p.setJpegData(new byte[0]);
fail("data cannot be empty");
} catch (IllegalArgumentException e) {
//
// Ok
//
}
p.setJpegData(new byte[] {64});
assertEquals(64, p.getJpegData()[0]);
}
public void testSetRawData() throws Exception {
Photo p = new Photo("name");
try {
p.setRawData(null);
fail("data cannot be null");
} catch (IllegalArgumentException e) {
//
// Ok
//
}
try {
p.setRawData(new byte[0]);
fail("data cannot be empty");
} catch (IllegalArgumentException e) {
//
// Ok
//
}
p.setRawData(new byte[] {32});
assertEquals(32, p.getRawData()[0]);
}
public void testSetJpegAndRawData() {
Photo p = new Photo("name");
p.setJpegData(new byte[] {64});
p.setRawData(new byte[] {32});
assertEquals(64, p.getJpegData()[0]);
assertEquals(32, p.getRawData()[0]);
}
public void testHasImages() {
Photo p = new Photo("name");
assertFalse(p.hasJpeg());
assertFalse(p.hasRaw());
p.setJpegData(new byte[] {64});
assertTrue(p.hasJpeg());
assertFalse(p.hasRaw());
p.setRawData(new byte[] {32});
assertTrue(p.hasJpeg());
assertTrue(p.hasRaw());
}
/**
* We do test with JPEG only for now... I do not know how to generate a
* small RAW file... :(
*
* @throws Exception
*/
public void testGetImage() throws Exception {
byte[] data = IOUtils.toByteArray(
ClassLoader.getSystemResourceAsStream("images/camera-connect-24x24.png")
);
Photo photo = new Photo("camera-connect-24x24");
assertNull(photo.getJpegImage());
photo = new Photo("camera-connect-24x24");
photo.setJpegData(data);
//
// RAW data do not really matter, since for now RAW image display is
// not yet supported
//
photo.setRawData(new byte[] {64});
BufferedImage image = photo.getJpegImage();
assertEquals(24, image.getWidth());
assertEquals(24, image.getHeight());
image = photo.getJpegImage();
assertEquals(24, image.getWidth());
assertEquals(24, image.getHeight());
}
}