/*
* Copyright (C) 2003-2011 eXo Platform SAS.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see<http://www.gnu.org/licenses/>.
*/
package org.exoplatform.ks.common.image;
import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.imageio.ImageIO;
import junit.framework.TestCase;
import org.exoplatform.ks.common.image.impl.ResizeImageServiceImpl;
/**
* Created by The eXo Platform SAS
* Author : Lai Trung Hieu
* hieu.lai@exoplatform.com
* 31 May 2011
*/
public class TestResizeImageService extends TestCase {
private ResizeImageServiceImpl resizeImgService;
private MockCacheService cacheService = new MockCacheService();
private int aspect_ratio = 2;
private String fileName = "TestImage";
private InputStream srcIs;
protected void setUp() throws Exception {
this.resizeImgService = new ResizeImageServiceImpl(cacheService);
srcIs = createTempImage(fileName);
}
public void testResizeImage() throws Exception {
int requestWidth = 50;
int requestHeight = 34;
InputStream resizedIs = resizeImgService.resizeImage(fileName,
srcIs,
requestWidth,
requestHeight,
false);
BufferedImage desImage = ImageIO.read(resizedIs);
assertEquals(true, true);
assertEquals(desImage.getWidth(), requestWidth);
assertEquals(desImage.getHeight(), requestHeight);
}
public void testResizeImageKeepAspectRatio() throws Exception {
int requestWidth = 50;
int requestHeight = 34;
InputStream resizedIs = resizeImgService.resizeImage(fileName,
srcIs,
requestWidth,
requestHeight,
true);
BufferedImage desImage = ImageIO.read(resizedIs);
assertEquals(true, true);
assertEquals(requestWidth, desImage.getWidth());
assertEquals(requestWidth / aspect_ratio, desImage.getHeight());
}
public void testResizeImagekByWidth() throws Exception {
int requestWidth = 50;
InputStream resizedIs = resizeImgService.resizeImageByWidth(fileName, srcIs, requestWidth);
BufferedImage desImage = ImageIO.read(resizedIs);
assertEquals(true, true);
assertEquals(requestWidth, desImage.getWidth());
assertEquals(requestWidth / aspect_ratio, desImage.getHeight());
}
public void testResizeImagekByHeight() throws Exception {
int requestHeight = 25;
InputStream resizedIs = resizeImgService.resizeImageByHeight(fileName, srcIs, requestHeight);
BufferedImage desImage = ImageIO.read(resizedIs);
assertEquals(true, true);
assertEquals(requestHeight * aspect_ratio, desImage.getWidth());
assertEquals(requestHeight, desImage.getHeight());
}
private InputStream createTempImage(String fileName) throws IOException {
int srcWidth = 100;
int srcHeight = srcWidth / aspect_ratio;
BufferedImage srcImage = new BufferedImage(srcWidth, srcHeight, BufferedImage.TYPE_INT_ARGB);
File file = File.createTempFile(fileName, ".png");
file.deleteOnExit();
ImageIO.write(srcImage, "png", file);
BufferedInputStream is = new BufferedInputStream(new FileInputStream(file));
return is;
}
}