/* (c) 2014 - 2016 Open Source Geospatial Foundation - all rights reserved
* (c) 2001 - 2013 OpenPlans
* This code is licensed under the GPL 2.0 license, available at the root
* application directory.
*/
package org.geoserver.wms.map.png;
import static org.junit.Assert.*;
import java.awt.Transparency;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
import java.awt.image.IndexColorModel;
import java.io.InputStream;
import javax.imageio.ImageIO;
import org.geoserver.data.test.MockData;
import org.geoserver.data.test.SystemTestData;
import org.geoserver.wms.WMSTestSupport;
import org.junit.Test;
import org.springframework.mock.web.MockHttpServletResponse;
public class GetMapIntegrationTest extends WMSTestSupport {
String bbox = "-2,0,2,6";
String layers = getLayerId(MockData.BASIC_POLYGONS);
@Override
protected void setUpTestData(SystemTestData testData) throws Exception {
super.setUpTestData(testData);
testData.setUpWcs11RasterLayers();
}
@Test
public void testPngOpaque() throws Exception {
MockHttpServletResponse response = getAsServletResponse("wms?bbox=" + bbox
+ "&styles=&layers=" + layers + "&Format=image/png" + "&request=GetMap"
+ "&width=550" + "&height=250" + "&srs=EPSG:4326");
assertEquals("image/png", response.getContentType());
InputStream is = getBinaryInputStream(response);
BufferedImage bi = ImageIO.read(is);
ColorModel cm = bi.getColorModel();
assertFalse(cm.hasAlpha());
assertEquals(3, cm.getNumColorComponents());
}
@Test
public void testPngTransparent() throws Exception {
MockHttpServletResponse response = getAsServletResponse("wms?bbox=" + bbox
+ "&styles=&layers=" + layers + "&Format=image/png" + "&request=GetMap"
+ "&width=550" + "&height=250" + "&srs=EPSG:4326&transparent=true");
assertEquals("image/png", response.getContentType());
InputStream is = getBinaryInputStream(response);
BufferedImage bi = ImageIO.read(is);
ColorModel cm = bi.getColorModel();
assertTrue(cm.hasAlpha());
assertEquals(3, cm.getNumColorComponents());
}
@Test
public void testPng8Opaque() throws Exception {
MockHttpServletResponse response = getAsServletResponse("wms?bbox=" + bbox
+ "&styles=&layers=" + layers + "&Format=image/png8" + "&request=GetMap"
+ "&width=550" + "&height=250" + "&srs=EPSG:4326");
assertEquals("image/png; mode=8bit", response.getContentType());
InputStream is = getBinaryInputStream(response);
BufferedImage bi = ImageIO.read(is);
IndexColorModel cm = (IndexColorModel) bi.getColorModel();
assertEquals(Transparency.OPAQUE , cm.getTransparency());
assertEquals(-1, cm.getTransparentPixel());
}
@Test
public void testPng8ForceBitmask() throws Exception {
MockHttpServletResponse response = getAsServletResponse("wms?bbox=" + bbox
+ "&styles=&layers=" + layers + "&Format=image/png8" + "&request=GetMap"
+ "&width=550" + "&height=250" + "&srs=EPSG:4326&transparent=true&format_options=quantizer:octree");
assertEquals("image/png; mode=8bit", response.getContentType());
InputStream is = getBinaryInputStream(response);
BufferedImage bi = ImageIO.read(is);
IndexColorModel cm = (IndexColorModel) bi.getColorModel();
assertEquals(Transparency.BITMASK , cm.getTransparency());
assertTrue(cm.getTransparentPixel() >= 0);
}
@Test
public void testPng8Translucent() throws Exception {
MockHttpServletResponse response = getAsServletResponse("wms?bbox=" + bbox
+ "&styles=&layers=" + layers + "&Format=image/png8" + "&request=GetMap"
+ "&width=550" + "&height=250" + "&srs=EPSG:4326&transparent=true");
assertEquals("image/png; mode=8bit", response.getContentType());
InputStream is = getBinaryInputStream(response);
BufferedImage bi = ImageIO.read(is);
IndexColorModel cm = (IndexColorModel) bi.getColorModel();
assertEquals(Transparency.TRANSLUCENT , cm.getTransparency());
}
}