package org.vfny.geoserver.wms;
import java.util.List;
import java.util.Set;
import junit.framework.Test;
import org.geoserver.wms.WMSExtensions;
import org.geoserver.wms.WMSTestSupport;
/**
* An integration test for the GetMapProducer implementations
*
* @author Gabriel Roldan (TOPP)
* @version $Id$
*/
public class GetMapProducerTest extends WMSTestSupport {
/**
* This is a READ ONLY TEST so we can use one time setup
*/
public static Test suite() {
return new OneTimeTestSetup(new GetMapProducerTest());
}
public void testGetOutputFormatNames() {
List<GetMapProducer> producers = WMSExtensions.findMapProducers(applicationContext);
for (GetMapProducer producer : producers) {
Set<String> outputFormats = producer.getOutputFormatNames();
assertNotNull(outputFormats);
assertTrue(outputFormats.size() > 0);
for (String oformat : outputFormats) {
assertNotNull(oformat);
}
}
}
public void testGetOutputFormat() {
List<GetMapProducer> producers = WMSExtensions.findMapProducers(applicationContext);
for (GetMapProducer producer : producers) {
assertNotNull(producer.getOutputFormat());
}
}
public void testSetOutputFormat() {
List<GetMapProducer> producers = WMSExtensions.findMapProducers(applicationContext);
for (GetMapProducer producer : producers) {
Set<String> outputFormats = producer.getOutputFormatNames();
for (String outputFormat : outputFormats) {
producer.setOutputFormat(outputFormat);
String producerFormat = producer.getOutputFormat();
String msg = producer.getClass().getName() + " output format not set";
assertEquals(msg, outputFormat, producerFormat);
}
try {
producer.setOutputFormat("not-a-valid-output-format");
fail(producer.getClass().getName() + " didn't throw an IAE when an invalid "
+ "output format was set");
} catch (IllegalArgumentException e) {
assertTrue(true);
}
}
}
public void testSetOutputFormatIsCaseInsensitive() {
List<GetMapProducer> producers = WMSExtensions.findMapProducers(applicationContext);
for (GetMapProducer producer : producers) {
Set<String> outputFormats = producer.getOutputFormatNames();
for (String outputFormat : outputFormats) {
char caseChangedChar = outputFormat.charAt(0);
if (Character.isUpperCase(caseChangedChar)) {
caseChangedChar = Character.toLowerCase(caseChangedChar);
} else {
caseChangedChar = Character.toUpperCase(caseChangedChar);
}
String caseChangedFormatName;
caseChangedFormatName = caseChangedChar + outputFormat.substring(1);
producer.setOutputFormat(caseChangedFormatName);
String producerFormat = producer.getOutputFormat();
String msg = producer.getClass().getName() + " output format not set";
assertTrue(msg, outputFormat.equalsIgnoreCase(producerFormat));
}
}
}
}