/* * Copyright 2010, 2011, 2012 mapsforge.org * * This program is free software: you can redistribute it and/or modify it under the * terms of the GNU Lesser 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License along with * this program. If not, see <http://www.gnu.org/licenses/>. */ package org.mapsforge.map.rendertheme.rule; import java.io.File; import java.io.IOException; import java.util.Arrays; import java.util.List; import javax.xml.parsers.ParserConfigurationException; import org.junit.Assert; import org.junit.Test; import org.mapsforge.core.model.Tag; import org.mapsforge.map.rendertheme.ExternalRenderTheme; import org.mapsforge.map.rendertheme.RenderCallback; import org.mapsforge.map.rendertheme.XmlRenderTheme; import org.mapsforge.map.rendertheme.renderinstruction.DummyGraphicAdapter; import org.xml.sax.SAXException; public class RenderThemeTest { private static final String INVALID_RENDER_THEME1 = "src/test/resources/invalid-render-theme1.xml"; private static final String INVALID_RENDER_THEME2 = "src/test/resources/invalid-render-theme2.xml"; private static final String INVALID_RENDER_THEME3 = "src/test/resources/invalid-render-theme3.xml"; private static final String RENDER_THEME_PATH = "src/test/resources/test-render-theme.xml"; private static void verifyInvalid(String pathname) throws ParserConfigurationException, IOException { XmlRenderTheme xmlRenderTheme = new ExternalRenderTheme(new File(pathname)); try { RenderThemeHandler.getRenderTheme(new DummyGraphicAdapter(), xmlRenderTheme); Assert.fail(); } catch (SAXException e) { Assert.assertTrue(true); } } @Test public void invalidRenderThemeTest() throws ParserConfigurationException, IOException { verifyInvalid(INVALID_RENDER_THEME1); verifyInvalid(INVALID_RENDER_THEME2); verifyInvalid(INVALID_RENDER_THEME3); } @Test public void validRenderThemeTest() throws SAXException, ParserConfigurationException, IOException { XmlRenderTheme xmlRenderTheme = new ExternalRenderTheme(new File(RENDER_THEME_PATH)); RenderTheme renderTheme = RenderThemeHandler.getRenderTheme(new DummyGraphicAdapter(), xmlRenderTheme); Assert.assertEquals(3, renderTheme.getLevels()); renderTheme.scaleStrokeWidth(12.34f); renderTheme.scaleTextSize(56.78f); RenderCallback renderCallback = new DummyRenderCallback(); List<Tag> closedWayTags = Arrays.asList(new Tag("amenity", "parking")); List<Tag> linearWayTags = Arrays.asList(new Tag("highway", "primary"), new Tag("oneway", "yes")); List<Tag> nodeTags = Arrays.asList(new Tag("place", "city"), new Tag("highway", "turning_circle")); for (byte zoomLevel = 0; zoomLevel < 25; ++zoomLevel) { renderTheme.matchClosedWay(renderCallback, closedWayTags, zoomLevel); renderTheme.matchLinearWay(renderCallback, linearWayTags, zoomLevel); renderTheme.matchNode(renderCallback, nodeTags, zoomLevel); } renderTheme.destroy(); } }