/*
* This is part of Geomajas, a GIS framework, http://www.geomajas.org/.
*
* Copyright 2008-2011 Geosparc nv, http://www.geosparc.com/, Belgium.
*
* The program is available in open source according to the GNU Affero
* General Public License. All contributions in this program are covered
* by the Geomajas Contributors License Agreement. For full licensing
* details, see LICENSE.txt in the project root.
*/
package org.geomajas.gwt.client.map.layer;
import org.geomajas.configuration.VectorLayerInfo;
import org.geomajas.configuration.client.ClientVectorLayerInfo;
import org.geomajas.geometry.Bbox;
import org.geomajas.gwt.client.map.MapModel;
import org.geomajas.gwt.client.map.event.LayerChangedHandler;
import org.geomajas.gwt.client.map.event.LayerFilteredEvent;
import org.geomajas.gwt.client.map.event.LayerFilteredHandler;
import org.geomajas.gwt.client.map.event.LayerLabeledEvent;
import org.geomajas.gwt.client.map.event.LayerShownEvent;
import org.geomajas.layer.LayerType;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
/**
* Tests for the handling of the {@link LayerShownEvent} and {@link LayerLabeledEvent}.
*
* @author Frank Wynants
*/
public class LayerChangedTest {
private MapModel mapModel;
private ClientVectorLayerInfo vLayerInfo;
private int visibleCount;
private int labelCount;
private int filterCount;
private VectorLayer vLayer;
@Before
public void setUp() {
mapModel = new MapModel("test");
vLayerInfo = new ClientVectorLayerInfo();
VectorLayerInfo serverInfo = new VectorLayerInfo();
serverInfo.setLayerType(LayerType.POLYGON);
vLayerInfo.setLayerInfo(serverInfo);
vLayerInfo.setMaxExtent(new Bbox(0, 0, 180, 180));
vLayerInfo.setServerLayerId("test");
vLayer = new VectorLayer(mapModel, vLayerInfo);
visibleCount = 0;
labelCount = 0;
filterCount = 0;
vLayer.addLayerChangedHandler(new LayerChangedHandler() {
public void onVisibleChange(LayerShownEvent event) {
visibleCount++;
}
public void onLabelChange(LayerLabeledEvent event) {
labelCount++;
}
});
vLayer.addLayerFilteredHandler(new LayerFilteredHandler() {
public void onFilterChange(LayerFilteredEvent event) {
filterCount++;
}
});
}
@Test
public void testLayerLabels() {
//impossible to assert on vLayer.isLabeled because the isShowing is always false
Assert.assertEquals(0, labelCount);
vLayer.setLabeled(false);
Assert.assertEquals(1, labelCount);
vLayer.setLabeled(true);
Assert.assertEquals(2, labelCount);
}
@Test
public void testLayerVisible() {
Assert.assertEquals(0, visibleCount);
vLayer.setVisible(true);
Assert.assertEquals(vLayer.isVisible(), true);
Assert.assertEquals(1, visibleCount);
vLayer.setVisible(false);
Assert.assertEquals(vLayer.isVisible(), false);
Assert.assertEquals(2, visibleCount);
}
@Test
public void testLayerFiltered() {
Assert.assertEquals(0, filterCount);
vLayer.setFilter("filter1");
Assert.assertEquals(1, filterCount);
vLayer.setFilter("filter2");
Assert.assertEquals(2, filterCount);
vLayer.setFilter("filter2");
Assert.assertEquals(2, filterCount);
}
}