fix test
This commit is contained in:
@@ -186,6 +186,194 @@ class ImageUtilTest {
|
||||
assertEquals((byte) 0xFF, result[2]);
|
||||
}
|
||||
|
||||
// --- EXIF orientation: applyOrientation ---
|
||||
|
||||
@Test
|
||||
void applyOrientation_orientation1_returnsSameInstance() {
|
||||
BufferedImage image = new BufferedImage(800, 600, BufferedImage.TYPE_INT_RGB);
|
||||
|
||||
BufferedImage result = imageUtil.applyOrientation(image, 1);
|
||||
|
||||
assertSame(image, result);
|
||||
}
|
||||
|
||||
@Test
|
||||
void applyOrientation_orientation2_horizontalFlip_preservesDimensions() {
|
||||
BufferedImage image = new BufferedImage(800, 600, BufferedImage.TYPE_INT_RGB);
|
||||
|
||||
BufferedImage result = imageUtil.applyOrientation(image, 2);
|
||||
|
||||
assertEquals(800, result.getWidth());
|
||||
assertEquals(600, result.getHeight());
|
||||
}
|
||||
|
||||
@Test
|
||||
void applyOrientation_orientation3_rotate180_preservesDimensions() {
|
||||
BufferedImage image = new BufferedImage(800, 600, BufferedImage.TYPE_INT_RGB);
|
||||
|
||||
BufferedImage result = imageUtil.applyOrientation(image, 3);
|
||||
|
||||
assertEquals(800, result.getWidth());
|
||||
assertEquals(600, result.getHeight());
|
||||
}
|
||||
|
||||
@Test
|
||||
void applyOrientation_orientation4_verticalFlip_preservesDimensions() {
|
||||
BufferedImage image = new BufferedImage(800, 600, BufferedImage.TYPE_INT_RGB);
|
||||
|
||||
BufferedImage result = imageUtil.applyOrientation(image, 4);
|
||||
|
||||
assertEquals(800, result.getWidth());
|
||||
assertEquals(600, result.getHeight());
|
||||
}
|
||||
|
||||
@Test
|
||||
void applyOrientation_orientation5_swapsDimensions() {
|
||||
BufferedImage image = new BufferedImage(800, 600, BufferedImage.TYPE_INT_RGB);
|
||||
|
||||
BufferedImage result = imageUtil.applyOrientation(image, 5);
|
||||
|
||||
assertEquals(600, result.getWidth());
|
||||
assertEquals(800, result.getHeight());
|
||||
}
|
||||
|
||||
@Test
|
||||
void applyOrientation_orientation6_rotate90cw_swapsDimensions() {
|
||||
BufferedImage image = new BufferedImage(800, 600, BufferedImage.TYPE_INT_RGB);
|
||||
|
||||
BufferedImage result = imageUtil.applyOrientation(image, 6);
|
||||
|
||||
assertEquals(600, result.getWidth());
|
||||
assertEquals(800, result.getHeight());
|
||||
}
|
||||
|
||||
@Test
|
||||
void applyOrientation_orientation7_swapsDimensions() {
|
||||
BufferedImage image = new BufferedImage(800, 600, BufferedImage.TYPE_INT_RGB);
|
||||
|
||||
BufferedImage result = imageUtil.applyOrientation(image, 7);
|
||||
|
||||
assertEquals(600, result.getWidth());
|
||||
assertEquals(800, result.getHeight());
|
||||
}
|
||||
|
||||
@Test
|
||||
void applyOrientation_orientation8_rotate90ccw_swapsDimensions() {
|
||||
BufferedImage image = new BufferedImage(800, 600, BufferedImage.TYPE_INT_RGB);
|
||||
|
||||
BufferedImage result = imageUtil.applyOrientation(image, 8);
|
||||
|
||||
assertEquals(600, result.getWidth());
|
||||
assertEquals(800, result.getHeight());
|
||||
}
|
||||
|
||||
@Test
|
||||
void applyOrientation_unknownOrientation_returnsSameInstance() {
|
||||
BufferedImage image = new BufferedImage(800, 600, BufferedImage.TYPE_INT_RGB);
|
||||
|
||||
BufferedImage result = imageUtil.applyOrientation(image, 99);
|
||||
|
||||
assertSame(image, result);
|
||||
}
|
||||
|
||||
@Test
|
||||
void applyOrientation_orientation2_flipsPixelsHorizontally() {
|
||||
BufferedImage image = new BufferedImage(4, 2, BufferedImage.TYPE_INT_RGB);
|
||||
image.setRGB(0, 0, 0xFF0000); // red at top-left
|
||||
|
||||
BufferedImage result = imageUtil.applyOrientation(image, 2);
|
||||
|
||||
assertEquals(0xFF0000, result.getRGB(3, 0) & 0xFFFFFF); // red at top-right
|
||||
}
|
||||
|
||||
@Test
|
||||
void applyOrientation_orientation3_rotates180() {
|
||||
BufferedImage image = new BufferedImage(4, 2, BufferedImage.TYPE_INT_RGB);
|
||||
image.setRGB(0, 0, 0xFF0000); // red at top-left
|
||||
|
||||
BufferedImage result = imageUtil.applyOrientation(image, 3);
|
||||
|
||||
assertEquals(0xFF0000, result.getRGB(3, 1) & 0xFFFFFF); // red at bottom-right
|
||||
}
|
||||
|
||||
@Test
|
||||
void applyOrientation_orientation6_rotates90cw_returnsNewImage() {
|
||||
BufferedImage image = new BufferedImage(4, 2, BufferedImage.TYPE_INT_RGB);
|
||||
|
||||
BufferedImage result = imageUtil.applyOrientation(image, 6);
|
||||
|
||||
assertNotSame(image, result);
|
||||
assertEquals(2, result.getWidth());
|
||||
assertEquals(4, result.getHeight());
|
||||
}
|
||||
|
||||
@Test
|
||||
void applyOrientation_orientation8_rotates90ccw_returnsNewImage() {
|
||||
BufferedImage image = new BufferedImage(4, 2, BufferedImage.TYPE_INT_RGB);
|
||||
|
||||
BufferedImage result = imageUtil.applyOrientation(image, 8);
|
||||
|
||||
assertNotSame(image, result);
|
||||
assertEquals(2, result.getWidth());
|
||||
assertEquals(4, result.getHeight());
|
||||
}
|
||||
|
||||
// --- EXIF orientation: getExifOrientation ---
|
||||
|
||||
@Test
|
||||
void getExifOrientation_pngWithNoExif_returns1() {
|
||||
String base64 = createTestImageBase64(100, 100);
|
||||
byte[] imageBytes = Base64.getDecoder().decode(base64);
|
||||
|
||||
int orientation = imageUtil.getExifOrientation(imageBytes);
|
||||
|
||||
assertEquals(1, orientation);
|
||||
}
|
||||
|
||||
@Test
|
||||
void getExifOrientation_invalidBytes_returns1() {
|
||||
byte[] garbage = new byte[]{0x00, 0x01, 0x02, 0x03};
|
||||
|
||||
int orientation = imageUtil.getExifOrientation(garbage);
|
||||
|
||||
assertEquals(1, orientation);
|
||||
}
|
||||
|
||||
// --- EXIF orientation through getImage (size 1 / default) ---
|
||||
|
||||
@Test
|
||||
void getImage_size1_noExif_returnsOriginalUnchanged() {
|
||||
String base64 = createTestImageBase64(400, 300);
|
||||
byte[] original = Base64.getDecoder().decode(base64);
|
||||
|
||||
byte[] result = imageUtil.getImage(base64, 1);
|
||||
|
||||
assertArrayEquals(original, result);
|
||||
}
|
||||
|
||||
@Test
|
||||
void getImage_defaultSize_noExif_returnsOriginalUnchanged() {
|
||||
String base64 = createTestImageBase64(400, 300);
|
||||
byte[] original = Base64.getDecoder().decode(base64);
|
||||
|
||||
byte[] result = imageUtil.getImage(base64, 42);
|
||||
|
||||
assertArrayEquals(original, result);
|
||||
}
|
||||
|
||||
// --- EXIF orientation with resize ---
|
||||
|
||||
@Test
|
||||
void getImage_size2_rotatedImage_usesEffectiveWidthForResizeDecision() throws IOException {
|
||||
// A tall image (600x800) with no EXIF won't be resized since width (600) < 1200
|
||||
String base64 = createTestImageBase64(600, 800);
|
||||
byte[] original = Base64.getDecoder().decode(base64);
|
||||
|
||||
byte[] result = imageUtil.getImage(base64, 2);
|
||||
|
||||
assertArrayEquals(original, result);
|
||||
}
|
||||
|
||||
// --- Edge cases ---
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user