package org.geowebcache.layer.wms; import static org.hamcrest.Matchers.any; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.equalToIgnoringCase; import static org.hamcrest.Matchers.hasEntry; import static org.hamcrest.Matchers.not; import static org.hamcrest.Matchers.notNullValue; import static org.junit.Assert.assertThat; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import org.geowebcache.filter.parameters.ParameterFilter; import org.geowebcache.filter.parameters.StringParameterFilter; import org.geowebcache.layer.TileLayer; import org.hamcrest.Matchers; import org.junit.Test; public abstract class TileLayerTest { @Test public void testGetModifiableParameters() throws Exception { List<ParameterFilter> filters = new LinkedList<>(); { StringParameterFilter filter = new StringParameterFilter(); filter.setKey("FILTER1"); filter.setValues(Arrays.asList("foo", "bar")); filters.add(filter); } { StringParameterFilter filter = new StringParameterFilter(); filter.setKey("FILTER2"); filter.setValues(Arrays.asList("quux", "quam")); filters.add(filter); } { StringParameterFilter filter = new StringParameterFilter(); filter.setKey("FILTER3"); filter.setValues(Arrays.asList("quux", "quam")); filters.add(filter); } Map<String, Object> rawParams = new HashMap<>(); { rawParams.put("FILTER1", new String[]{"bar"}); // Nothing for FILTER2 rawParams.put("FILTER3", new String[]{"quux"}); rawParams.put("FILTER4", new String[]{"quux"}); } TileLayer layer = getLayerWithFilters(filters); Map<String, String> result = layer.getModifiableParameters(rawParams, "UTF-8"); assertThat(result, hasEntry(equalToIgnoringCase("FILTER1"), equalTo("bar"))); assertThat(result, hasEntry(equalToIgnoringCase("FILTER2"), equalTo(""))); // Default is empty assertThat(result, hasEntry(equalToIgnoringCase("FILTER3"), equalTo("quux"))); assertThat(result, not(hasEntry(equalToIgnoringCase("FILTER4"), notNullValue()))); } protected abstract TileLayer getLayerWithFilters(Collection<ParameterFilter> filters) throws Exception; }