From bc71da5e022ad22fd516cf337f02383f3191c5a3 Mon Sep 17 00:00:00 2001 From: Maja Joksovic Date: Wed, 17 Jun 2020 22:57:20 +0200 Subject: [PATCH] Added unit tests and fixed some naming issues. --- .../image/resize/core/Graphics2DExample.java | 2 +- .../core/ImageScaledInstanceExample.java | 2 +- .../ImgscalrExample.java} | 10 +- .../image/resize/marvin/MarvinExample.java | 19 +++- .../thumbnailator/ThumbnailatorExample.java | 2 +- .../resize/core/Graphics2DExampleTest.java | 105 ++++++++++++++++++ .../core/ImageScaledInstanceExampleTest.java | 105 ++++++++++++++++++ .../resize/imgscalr/ImgscalrExampleTest.java | 105 ++++++++++++++++++ .../resize/marvin/MarvinExampleTest.java | 105 ++++++++++++++++++ .../ThumbnailatorExampleTest.java | 105 ++++++++++++++++++ 10 files changed, 546 insertions(+), 14 deletions(-) rename image-processing/src/main/java/com/baeldung/image/resize/{imagescalr/ImagescalrExample.java => imgscalr/ImgscalrExample.java} (63%) create mode 100644 image-processing/src/test/java/com/baeldung/image/resize/core/Graphics2DExampleTest.java create mode 100644 image-processing/src/test/java/com/baeldung/image/resize/core/ImageScaledInstanceExampleTest.java create mode 100644 image-processing/src/test/java/com/baeldung/image/resize/imgscalr/ImgscalrExampleTest.java create mode 100644 image-processing/src/test/java/com/baeldung/image/resize/marvin/MarvinExampleTest.java create mode 100644 image-processing/src/test/java/com/baeldung/image/resize/thumbnailator/ThumbnailatorExampleTest.java diff --git a/image-processing/src/main/java/com/baeldung/image/resize/core/Graphics2DExample.java b/image-processing/src/main/java/com/baeldung/image/resize/core/Graphics2DExample.java index 1ae8af8e7a..4be3158089 100644 --- a/image-processing/src/main/java/com/baeldung/image/resize/core/Graphics2DExample.java +++ b/image-processing/src/main/java/com/baeldung/image/resize/core/Graphics2DExample.java @@ -20,6 +20,6 @@ public class Graphics2DExample { public static void main(String[] args) throws IOException { BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); BufferedImage outputImage = resizeImage(originalImage, 200, 200); - ImageIO.write(outputImage, "jpg", new File("src/main/resources/images/sampleImage1.jpg")); + ImageIO.write(outputImage, "jpg", new File("src/main/resources/images/sampleImage-resized-graphics2d.jpg")); } } diff --git a/image-processing/src/main/java/com/baeldung/image/resize/core/ImageScaledInstanceExample.java b/image-processing/src/main/java/com/baeldung/image/resize/core/ImageScaledInstanceExample.java index 5bc834cc08..44b71bb1d0 100644 --- a/image-processing/src/main/java/com/baeldung/image/resize/core/ImageScaledInstanceExample.java +++ b/image-processing/src/main/java/com/baeldung/image/resize/core/ImageScaledInstanceExample.java @@ -19,6 +19,6 @@ public class ImageScaledInstanceExample { public static void main(String[] args) throws IOException { BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); BufferedImage outputImage = resizeImage(originalImage, 200, 200); - ImageIO.write(outputImage, "jpg", new File("src/main/resources/images/sampleImage1.jpg")); + ImageIO.write(outputImage, "jpg", new File("src/main/resources/images/sampleImage-resized-scaledinstance.jpg")); } } diff --git a/image-processing/src/main/java/com/baeldung/image/resize/imagescalr/ImagescalrExample.java b/image-processing/src/main/java/com/baeldung/image/resize/imgscalr/ImgscalrExample.java similarity index 63% rename from image-processing/src/main/java/com/baeldung/image/resize/imagescalr/ImagescalrExample.java rename to image-processing/src/main/java/com/baeldung/image/resize/imgscalr/ImgscalrExample.java index f42d109f77..dbabbd280c 100644 --- a/image-processing/src/main/java/com/baeldung/image/resize/imagescalr/ImagescalrExample.java +++ b/image-processing/src/main/java/com/baeldung/image/resize/imgscalr/ImgscalrExample.java @@ -1,4 +1,4 @@ -package com.baeldung.image.resize.imagescalr; +package com.baeldung.image.resize.imgscalr; import java.awt.image.BufferedImage; import java.io.File; @@ -7,18 +7,18 @@ import javax.imageio.ImageIO; import org.imgscalr.Scalr; -public class ImagescalrExample { - static BufferedImage simpleResizeImage(BufferedImage originalImage, int targetWidth) throws Exception { +public class ImgscalrExample { + public static BufferedImage simpleResizeImage(BufferedImage originalImage, int targetWidth) throws Exception { return Scalr.resize(originalImage, targetWidth); } - static BufferedImage resizeImage(BufferedImage originalImage, int targetWidth, int targetHeight) throws Exception { + public static BufferedImage resizeImage(BufferedImage originalImage, int targetWidth, int targetHeight) throws Exception { return Scalr.resize(originalImage, Scalr.Method.AUTOMATIC, Scalr.Mode.AUTOMATIC, targetWidth, targetHeight, Scalr.OP_ANTIALIAS); } public static void main(String[] args) throws Exception { BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); BufferedImage outputImage = resizeImage(originalImage, 200, 200); - ImageIO.write(outputImage, "jpg", new File("src/main/resources/images/sampleImage1.jpg")); + ImageIO.write(outputImage, "jpg", new File("src/main/resources/images/sampleImage-resized-imgscalr.jpg")); } } diff --git a/image-processing/src/main/java/com/baeldung/image/resize/marvin/MarvinExample.java b/image-processing/src/main/java/com/baeldung/image/resize/marvin/MarvinExample.java index 706949ecc6..6b17012cce 100644 --- a/image-processing/src/main/java/com/baeldung/image/resize/marvin/MarvinExample.java +++ b/image-processing/src/main/java/com/baeldung/image/resize/marvin/MarvinExample.java @@ -1,22 +1,29 @@ package com.baeldung.image.resize.marvin; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; + +import javax.imageio.ImageIO; + import org.marvinproject.image.transform.scale.Scale; import marvin.image.MarvinImage; -import marvin.io.MarvinImageIO; public class MarvinExample { - static void resizeImage(String originalImagePath, int targetWidth, int targetHeight, String outputImagePath) { - MarvinImage image = MarvinImageIO.loadImage(originalImagePath); + static BufferedImage resizeImage(BufferedImage originalImage, int targetWidth, int targetHeight) { + MarvinImage image = new MarvinImage(originalImage); Scale scale = new Scale(); scale.load(); scale.setAttribute("newWidth", targetWidth); scale.setAttribute("newHeight", targetHeight); scale.process(image.clone(), image, null, null, false); - MarvinImageIO.saveImage(image, outputImagePath); + return image.getBufferedImage(); } - public static void main(String args[]) { - resizeImage("src/main/resources/images/sampleImage.jpg", 200, 200, "src/main/resources/images/sampleImage1.jpg"); + public static void main(String args[]) throws IOException { + BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); + BufferedImage outputImage = resizeImage(originalImage, 200, 200); + ImageIO.write(outputImage, "jpg", new File("src/main/resources/images/sampleImage-resized-marvin.jpg")); } } diff --git a/image-processing/src/main/java/com/baeldung/image/resize/thumbnailator/ThumbnailatorExample.java b/image-processing/src/main/java/com/baeldung/image/resize/thumbnailator/ThumbnailatorExample.java index a7defb8259..f925eace96 100644 --- a/image-processing/src/main/java/com/baeldung/image/resize/thumbnailator/ThumbnailatorExample.java +++ b/image-processing/src/main/java/com/baeldung/image/resize/thumbnailator/ThumbnailatorExample.java @@ -25,6 +25,6 @@ public class ThumbnailatorExample { public static void main(String[] args) throws Exception { BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); BufferedImage outputImage = resizeImage(originalImage, 200, 200); - ImageIO.write(outputImage, "jpg", new File("src/main/resources/images/sampleImage1.jpg")); + ImageIO.write(outputImage, "jpg", new File("src/main/resources/images/sampleImage-resized-thumbnailator.jpg")); } } diff --git a/image-processing/src/test/java/com/baeldung/image/resize/core/Graphics2DExampleTest.java b/image-processing/src/test/java/com/baeldung/image/resize/core/Graphics2DExampleTest.java new file mode 100644 index 0000000000..2b5c05bdde --- /dev/null +++ b/image-processing/src/test/java/com/baeldung/image/resize/core/Graphics2DExampleTest.java @@ -0,0 +1,105 @@ +package com.baeldung.image.resize.core; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; + +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; + +import javax.imageio.ImageIO; + +import org.junit.Test; + +public class Graphics2DExampleTest { + @Test + public void whenOriginalImageExistsAndTargetSizesAreNotZero_thenImageGeneratedWithoutError() throws IOException { + int targetWidth = 200; + int targetHeight = 200; + BufferedImage outputImage = null; + boolean errorThrown = false; + BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); + try { + outputImage = Graphics2DExample.resizeImage(originalImage, targetWidth, targetHeight); + } catch (Exception e) { + errorThrown = true; + } + + assertFalse(errorThrown); + assertNotNull(outputImage); + } + + @Test + public void whenOriginalImageExistsAndTargetSizesAreNotZero_thenOutputImageSizeIsValid() throws Exception { + int targetWidth = 200; + int targetHeight = 200; + boolean errorThrown = false; + BufferedImage outputImage = null; + BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); + assertNotEquals(originalImage.getWidth(), targetWidth); + assertNotEquals(originalImage.getHeight(), targetHeight); + try { + outputImage = Graphics2DExample.resizeImage(originalImage, targetWidth, targetHeight); + } catch (Exception e) { + errorThrown = true; + } + + assertFalse(errorThrown); + assertEquals(outputImage.getWidth(), targetWidth); + assertEquals(outputImage.getHeight(), targetHeight); + } + + @Test + public void whenTargetWidthIsZero_thenErrorIsThrown() throws IOException { + int targetWidth = 0; + int targetHeight = 200; + boolean errorThrown = false; + BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); + BufferedImage outputImage = null; + try { + outputImage = Graphics2DExample.resizeImage(originalImage, targetWidth, targetHeight); + } catch (Exception e) { + errorThrown = true; + } + + assertTrue(errorThrown); + assertNull(outputImage); + } + + @Test + public void whenTargetHeightIsZero_thenErrorIsThrown() throws IOException { + int targetWidth = 200; + int targetHeight = 0; + boolean errorThrown = false; + BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); + BufferedImage outputImage = null; + try { + outputImage = Graphics2DExample.resizeImage(originalImage, targetWidth, targetHeight); + } catch (Exception e) { + errorThrown = true; + } + + assertTrue(errorThrown); + assertNull(outputImage); + } + + @Test + public void whenOriginalImageDoesNotExist_thenErrorIsThrown() throws IOException { + int targetWidth = 200; + int targetHeight = 200; + boolean errorThrown = false; + BufferedImage outputImage = null; + try { + outputImage = Graphics2DExample.resizeImage(null, targetWidth, targetHeight); + } catch (Exception e) { + errorThrown = true; + } + + assertTrue(errorThrown); + assertNull(outputImage); + } +} diff --git a/image-processing/src/test/java/com/baeldung/image/resize/core/ImageScaledInstanceExampleTest.java b/image-processing/src/test/java/com/baeldung/image/resize/core/ImageScaledInstanceExampleTest.java new file mode 100644 index 0000000000..f3ca1e05c0 --- /dev/null +++ b/image-processing/src/test/java/com/baeldung/image/resize/core/ImageScaledInstanceExampleTest.java @@ -0,0 +1,105 @@ +package com.baeldung.image.resize.core; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; + +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; + +import javax.imageio.ImageIO; + +import org.junit.Test; + +public class ImageScaledInstanceExampleTest { + @Test + public void whenOriginalImageExistsAndTargetSizesAreNotZero_thenImageGeneratedWithoutError() throws IOException { + int targetWidth = 200; + int targetHeight = 200; + BufferedImage outputImage = null; + boolean errorThrown = false; + BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); + try { + outputImage = ImageScaledInstanceExample.resizeImage(originalImage, targetWidth, targetHeight); + } catch (Exception e) { + errorThrown = true; + } + + assertFalse(errorThrown); + assertNotNull(outputImage); + } + + @Test + public void whenOriginalImageExistsAndTargetSizesAreNotZero_thenOutputImageSizeIsValid() throws Exception { + int targetWidth = 200; + int targetHeight = 200; + boolean errorThrown = false; + BufferedImage outputImage = null; + BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); + assertNotEquals(originalImage.getWidth(), targetWidth); + assertNotEquals(originalImage.getHeight(), targetHeight); + try { + outputImage = ImageScaledInstanceExample.resizeImage(originalImage, targetWidth, targetHeight); + } catch (Exception e) { + errorThrown = true; + } + + assertFalse(errorThrown); + assertEquals(outputImage.getWidth(), targetWidth); + assertEquals(outputImage.getHeight(), targetHeight); + } + + @Test + public void whenTargetWidthIsZero_thenErrorIsThrown() throws IOException { + int targetWidth = 0; + int targetHeight = 200; + boolean errorThrown = false; + BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); + BufferedImage outputImage = null; + try { + outputImage = ImageScaledInstanceExample.resizeImage(originalImage, targetWidth, targetHeight); + } catch (Exception e) { + errorThrown = true; + } + + assertTrue(errorThrown); + assertNull(outputImage); + } + + @Test + public void whenTargetHeightIsZero_thenErrorIsThrown() throws IOException { + int targetWidth = 200; + int targetHeight = 0; + boolean errorThrown = false; + BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); + BufferedImage outputImage = null; + try { + outputImage = ImageScaledInstanceExample.resizeImage(originalImage, targetWidth, targetHeight); + } catch (Exception e) { + errorThrown = true; + } + + assertTrue(errorThrown); + assertNull(outputImage); + } + + @Test + public void whenOriginalImageDoesNotExist_thenErrorIsThrown() throws IOException { + int targetWidth = 200; + int targetHeight = 200; + boolean errorThrown = false; + BufferedImage outputImage = null; + try { + outputImage = ImageScaledInstanceExample.resizeImage(null, targetWidth, targetHeight); + } catch (Exception e) { + errorThrown = true; + } + + assertTrue(errorThrown); + assertNull(outputImage); + } +} diff --git a/image-processing/src/test/java/com/baeldung/image/resize/imgscalr/ImgscalrExampleTest.java b/image-processing/src/test/java/com/baeldung/image/resize/imgscalr/ImgscalrExampleTest.java new file mode 100644 index 0000000000..0f36bf5429 --- /dev/null +++ b/image-processing/src/test/java/com/baeldung/image/resize/imgscalr/ImgscalrExampleTest.java @@ -0,0 +1,105 @@ +package com.baeldung.image.resize.imgscalr; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; + +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; + +import javax.imageio.ImageIO; + +import org.junit.Test; + +public class ImgscalrExampleTest { + @Test + public void whenOriginalImageExistsAndTargetSizesAreNotZero_thenImageGeneratedWithoutError() throws IOException { + int targetWidth = 200; + int targetHeight = 200; + BufferedImage outputImage = null; + boolean errorThrown = false; + BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); + try { + outputImage = ImgscalrExample.resizeImage(originalImage, targetWidth, targetHeight); + } catch (Exception e) { + errorThrown = true; + } + + assertFalse(errorThrown); + assertNotNull(outputImage); + } + + @Test + public void whenOriginalImageExistsAndTargetSizesAreNotZero_thenOutputImageSizeIsValid() throws Exception { + int targetWidth = 200; + int targetHeight = 200; + boolean errorThrown = false; + BufferedImage outputImage = null; + BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); + assertNotEquals(originalImage.getWidth(), targetWidth); + assertNotEquals(originalImage.getHeight(), targetHeight); + try { + outputImage = ImgscalrExample.resizeImage(originalImage, targetWidth, targetHeight); + } catch (Exception e) { + errorThrown = true; + } + + assertFalse(errorThrown); + assertEquals(outputImage.getWidth(), targetWidth); + assertEquals(outputImage.getHeight(), targetHeight); + } + + @Test + public void whenTargetWidthIsZero_thenErrorIsThrown() throws IOException { + int targetWidth = 0; + int targetHeight = 200; + boolean errorThrown = false; + BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); + BufferedImage outputImage = null; + try { + outputImage = ImgscalrExample.resizeImage(originalImage, targetWidth, targetHeight); + } catch (Exception e) { + errorThrown = true; + } + + assertTrue(errorThrown); + assertNull(outputImage); + } + + @Test + public void whenTargetHeightIsZero_thenErrorIsThrown() throws IOException { + int targetWidth = 200; + int targetHeight = 0; + boolean errorThrown = false; + BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); + BufferedImage outputImage = null; + try { + outputImage = ImgscalrExample.resizeImage(originalImage, targetWidth, targetHeight); + } catch (Exception e) { + errorThrown = true; + } + + assertTrue(errorThrown); + assertNull(outputImage); + } + + @Test + public void whenOriginalImageDoesNotExist_thenErrorIsThrown() throws IOException { + int targetWidth = 200; + int targetHeight = 200; + boolean errorThrown = false; + BufferedImage outputImage = null; + try { + outputImage = ImgscalrExample.resizeImage(null, targetWidth, targetHeight); + } catch (Exception e) { + errorThrown = true; + } + + assertTrue(errorThrown); + assertNull(outputImage); + } +} diff --git a/image-processing/src/test/java/com/baeldung/image/resize/marvin/MarvinExampleTest.java b/image-processing/src/test/java/com/baeldung/image/resize/marvin/MarvinExampleTest.java new file mode 100644 index 0000000000..20d0431f8f --- /dev/null +++ b/image-processing/src/test/java/com/baeldung/image/resize/marvin/MarvinExampleTest.java @@ -0,0 +1,105 @@ +package com.baeldung.image.resize.marvin; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; + +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; + +import javax.imageio.ImageIO; + +import org.junit.Test; + +public class MarvinExampleTest { + @Test + public void whenOriginalImageExistsAndTargetSizesAreNotZero_thenImageGeneratedWithoutError() throws IOException { + int targetWidth = 200; + int targetHeight = 200; + BufferedImage outputImage = null; + boolean errorThrown = false; + BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); + try { + outputImage = MarvinExample.resizeImage(originalImage, targetWidth, targetHeight); + } catch (Exception e) { + errorThrown = true; + } + + assertFalse(errorThrown); + assertNotNull(outputImage); + } + + @Test + public void whenOriginalImageExistsAndTargetSizesAreNotZero_thenOutputImageSizeIsValid() throws Exception { + int targetWidth = 200; + int targetHeight = 200; + boolean errorThrown = false; + BufferedImage outputImage = null; + BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); + assertNotEquals(originalImage.getWidth(), targetWidth); + assertNotEquals(originalImage.getHeight(), targetHeight); + try { + outputImage = MarvinExample.resizeImage(originalImage, targetWidth, targetHeight); + } catch (Exception e) { + errorThrown = true; + } + + assertFalse(errorThrown); + assertEquals(outputImage.getWidth(), targetWidth); + assertEquals(outputImage.getHeight(), targetHeight); + } + + @Test + public void whenTargetWidthIsZero_thenErrorIsThrown() throws IOException { + int targetWidth = 0; + int targetHeight = 200; + boolean errorThrown = false; + BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); + BufferedImage outputImage = null; + try { + outputImage = MarvinExample.resizeImage(originalImage, targetWidth, targetHeight); + } catch (Exception e) { + errorThrown = true; + } + + assertTrue(errorThrown); + assertNull(outputImage); + } + + @Test + public void whenTargetHeightIsZero_thenErrorIsThrown() throws IOException { + int targetWidth = 200; + int targetHeight = 0; + boolean errorThrown = false; + BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); + BufferedImage outputImage = null; + try { + outputImage = MarvinExample.resizeImage(originalImage, targetWidth, targetHeight); + } catch (Exception e) { + errorThrown = true; + } + + assertTrue(errorThrown); + assertNull(outputImage); + } + + @Test + public void whenOriginalImageDoesNotExist_thenErrorIsThrown() throws IOException { + int targetWidth = 200; + int targetHeight = 200; + boolean errorThrown = false; + BufferedImage outputImage = null; + try { + outputImage = MarvinExample.resizeImage(null, targetWidth, targetHeight); + } catch (Exception e) { + errorThrown = true; + } + + assertTrue(errorThrown); + assertNull(outputImage); + } +} diff --git a/image-processing/src/test/java/com/baeldung/image/resize/thumbnailator/ThumbnailatorExampleTest.java b/image-processing/src/test/java/com/baeldung/image/resize/thumbnailator/ThumbnailatorExampleTest.java new file mode 100644 index 0000000000..bef7ec744d --- /dev/null +++ b/image-processing/src/test/java/com/baeldung/image/resize/thumbnailator/ThumbnailatorExampleTest.java @@ -0,0 +1,105 @@ +package com.baeldung.image.resize.thumbnailator; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; + +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.IOException; + +import javax.imageio.ImageIO; + +import org.junit.Test; + +public class ThumbnailatorExampleTest { + @Test + public void whenOriginalImageExistsAndTargetSizesAreNotZero_thenImageGeneratedWithoutError() throws IOException { + int targetWidth = 200; + int targetHeight = 200; + BufferedImage outputImage = null; + boolean errorThrown = false; + BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); + try { + outputImage = ThumbnailatorExample.resizeImage(originalImage, targetWidth, targetHeight); + } catch (Exception e) { + errorThrown = true; + } + + assertFalse(errorThrown); + assertNotNull(outputImage); + } + + @Test + public void whenOriginalImageExistsAndTargetSizesAreNotZero_thenOutputImageSizeIsValid() throws Exception { + int targetWidth = 200; + int targetHeight = 200; + boolean errorThrown = false; + BufferedImage outputImage = null; + BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); + assertNotEquals(originalImage.getWidth(), targetWidth); + assertNotEquals(originalImage.getHeight(), targetHeight); + try { + outputImage = ThumbnailatorExample.resizeImage(originalImage, targetWidth, targetHeight); + } catch (Exception e) { + errorThrown = true; + } + + assertFalse(errorThrown); + assertEquals(outputImage.getWidth(), targetWidth); + assertEquals(outputImage.getHeight(), targetHeight); + } + + @Test + public void whenTargetWidthIsZero_thenErrorIsThrown() throws IOException { + int targetWidth = 0; + int targetHeight = 200; + boolean errorThrown = false; + BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); + BufferedImage outputImage = null; + try { + outputImage = ThumbnailatorExample.resizeImage(originalImage, targetWidth, targetHeight); + } catch (Exception e) { + errorThrown = true; + } + + assertTrue(errorThrown); + assertNull(outputImage); + } + + @Test + public void whenTargetHeightIsZero_thenErrorIsThrown() throws IOException { + int targetWidth = 200; + int targetHeight = 0; + boolean errorThrown = false; + BufferedImage originalImage = ImageIO.read(new File("src/main/resources/images/sampleImage.jpg")); + BufferedImage outputImage = null; + try { + outputImage = ThumbnailatorExample.resizeImage(originalImage, targetWidth, targetHeight); + } catch (Exception e) { + errorThrown = true; + } + + assertTrue(errorThrown); + assertNull(outputImage); + } + + @Test + public void whenOriginalImageDoesNotExist_thenErrorIsThrown() throws IOException { + int targetWidth = 200; + int targetHeight = 200; + boolean errorThrown = false; + BufferedImage outputImage = null; + try { + outputImage = ThumbnailatorExample.resizeImage(null, targetWidth, targetHeight); + } catch (Exception e) { + errorThrown = true; + } + + assertTrue(errorThrown); + assertNull(outputImage); + } +}