/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2002-2010, Open Source Geospatial Foundation (OSGeo) * * This library 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; * version 2.1 of the License. * * This library 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. */ package org.geotools.renderer.chart; import java.awt.Dimension; import java.awt.HeadlessException; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame; import junit.framework.TestCase; import org.geotools.test.TestData; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.XYPlot; import com.vividsolutions.jts.geom.Geometry; import com.vividsolutions.jts.io.WKTReader; public class GeometryRendererTest extends TestCase { WKTReader wkt = new WKTReader(); public void testPoint() throws Exception { render(wkt.read("POINT(6 10)")); } public void testLineString() throws Exception { render(wkt.read("LINESTRING(3 4,10 50,20 25)")); } public void testPolygon() throws Exception { render(wkt.read("POLYGON((1 1,5 1,5 5,1 5,1 1))")); } public void testPolygonWithHole() throws Exception { render(wkt.read("POLYGON((1 1,5 1,5 5,1 5,1 1),(2 2,2 3,3 3,3 2,2 2))")); } public void testMultiPoint() throws Exception { render(wkt.read("MULTIPOINT((3.5 5.6),(4.8 10.5))")); } public void testMultiLineString() throws Exception { render(wkt.read("MULTILINESTRING((3 4,10 50,20 25),(-5 -8,-10 -8,-15 -4))")); } public void testMultiPolygon() throws Exception { render(wkt.read( "MULTIPOLYGON(((1 1,5 1,5 5,1 5,1 1),(2 2,2 3,3 3,3 2,2 2)),((6 3,9 2,9 4,6 3)))")); } public void testMulipleGeometries() throws Exception { render(wkt.read("POINT(6 10)"), wkt.read("LINESTRING(3 4,10 50,20 25)"), wkt.read("POLYGON((1 1,5 1,5 5,1 5,1 1))")); } void render(Geometry... geoms) throws Exception { GeometryDataset dataset = new GeometryDataset(geoms); GeometryRenderer r = new GeometryRenderer(); XYPlot plot = new XYPlot(dataset, dataset.getDomain(), dataset.getRange(), r); showChart(plot); } void showChart(XYPlot plot) throws Exception { JFreeChart chart = new JFreeChart(plot); chart.setAntiAlias(true); ChartPanel panel = new ChartPanel(chart, true); final String headless = System.getProperty("java.awt.headless", "false"); if (!headless.equalsIgnoreCase("true") && TestData.isInteractiveTest()) { try { JFrame frame = new JFrame(getName()); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { e.getWindow().dispose(); } }); frame.setContentPane(panel); frame.setSize(new Dimension(500,500)); frame.setVisible(true); Thread.sleep(5000); frame.dispose(); } catch (HeadlessException exception) { // The test is running on a machine without X11 display. Ignore. return; } } } }