1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375 |
- /* ===========================================================
- * JFreeChart : a free chart library for the Java(tm) platform
- * ===========================================================
- *
- * (C) Copyright 2000-2014, by Object Refinery Limited and Contributors.
- *
- * Project Info: http://www.jfree.org/jfreechart/index.html
- *
- * 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; either version 2.1 of the License, or
- * (at your option) any later version.
- *
- * 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.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- * USA.
- *
- * [Oracle and Java are registered trademarks of Oracle and/or its affiliates.
- * Other names may be trademarks of their respective owners.]
- *
- * ---------------
- * XYPlotTest.java
- * ---------------
- * (C) Copyright 2003-2014, by Object Refinery Limited and Contributors.
- *
- * Original Author: David Gilbert (for Object Refinery Limited);
- * Contributor(s): -;
- *
- * Changes
- * -------
- * 26-Mar-2003 : Version 1 (DG);
- * 22-Mar-2004 : Added new cloning test (DG);
- * 05-Oct-2004 : Strengthened test for clone independence (DG);
- * 22-Nov-2006 : Added quadrant fields to equals() and clone() tests (DG);
- * 09-Jan-2007 : Mark and comment out testGetDatasetCount() (DG);
- * 05-Feb-2007 : Added testAddDomainMarker() and testAddRangeMarker() (DG);
- * 07-Feb-2007 : Added test1654215() (DG);
- * 24-May-2007 : Added testDrawSeriesWithZeroItems() (DG);
- * 07-Apr-2008 : Added testRemoveDomainMarker() and
- * testRemoveRangeMarker() (DG);
- * 10-May-2009 : Extended testEquals(), added testCloning3() (DG);
- * 06-Jul-2009 : Added testBug2817504() (DG);
- *
- */
- package org.jfree.chart.plot;
- import static org.junit.Assert.assertEquals;
- import static org.junit.Assert.assertFalse;
- import static org.junit.Assert.assertTrue;
- import static org.junit.Assert.fail;
- import static org.junit.Assert.assertNotEquals;
- import org.junit.Test;
- import java.awt.BasicStroke;
- import java.awt.Color;
- import java.awt.GradientPaint;
- import java.awt.Graphics2D;
- import java.awt.Stroke;
- import java.awt.geom.Point2D;
- import java.awt.geom.Rectangle2D;
- import java.awt.image.BufferedImage;
- import java.util.Arrays;
- import java.util.List;
- import org.jfree.chart.ChartFactory;
- import org.jfree.chart.JFreeChart;
- import org.jfree.chart.LegendItem;
- import org.jfree.chart.LegendItemCollection;
- import org.jfree.chart.TestUtilities;
- import org.jfree.chart.annotations.XYTextAnnotation;
- import org.jfree.chart.axis.AxisLocation;
- import org.jfree.chart.axis.DateAxis;
- import org.jfree.chart.axis.NumberAxis;
- import org.jfree.chart.event.MarkerChangeListener;
- import org.jfree.chart.labels.StandardXYToolTipGenerator;
- import org.jfree.chart.renderer.xy.DefaultXYItemRenderer;
- import org.jfree.chart.renderer.xy.StandardXYItemRenderer;
- import org.jfree.chart.renderer.xy.XYBarRenderer;
- import org.jfree.chart.renderer.xy.XYItemRenderer;
- import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
- import org.jfree.chart.util.DefaultShadowGenerator;
- import org.jfree.data.time.Day;
- import org.jfree.data.time.TimeSeries;
- import org.jfree.data.time.TimeSeriesCollection;
- import org.jfree.data.xy.DefaultXYDataset;
- import org.jfree.data.xy.IntervalXYDataset;
- import org.jfree.data.xy.XYDataset;
- import org.jfree.data.xy.XYSeries;
- import org.jfree.data.xy.XYSeriesCollection;
- import org.jfree.date.MonthConstants;
- import org.jfree.ui.Layer;
- import org.jfree.ui.RectangleInsets;
- /**
- * Tests for the {@link XYPlot} class.
- */
- public class XYPlotTest {
- /**
- * Added this test in response to a bug report.
- */
- public void testGetDatasetCount() {
- XYPlot plot = new XYPlot();
- assertEquals(0, plot.getDatasetCount());
- }
- /**
- * Some checks for the equals() method.
- */
- @Test
- public void testEquals() {
- XYPlot plot1 = new XYPlot();
- XYPlot plot2 = new XYPlot();
- assertTrue(plot1.equals(plot2));
- // orientation...
- plot1.setOrientation(PlotOrientation.HORIZONTAL);
- assertFalse(plot1.equals(plot2));
- plot2.setOrientation(PlotOrientation.HORIZONTAL);
- assertTrue(plot1.equals(plot2));
- // axisOffset...
- plot1.setAxisOffset(new RectangleInsets(0.05, 0.05, 0.05, 0.05));
- assertFalse(plot1.equals(plot2));
- plot2.setAxisOffset(new RectangleInsets(0.05, 0.05, 0.05, 0.05));
- assertTrue(plot1.equals(plot2));
- // domainAxis...
- plot1.setDomainAxis(new NumberAxis("Domain Axis"));
- assertFalse(plot1.equals(plot2));
- plot2.setDomainAxis(new NumberAxis("Domain Axis"));
- assertTrue(plot1.equals(plot2));
- // domainAxisLocation...
- plot1.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);
- assertFalse(plot1.equals(plot2));
- plot2.setDomainAxisLocation(AxisLocation.TOP_OR_RIGHT);
- assertTrue(plot1.equals(plot2));
- // secondary DomainAxes...
- plot1.setDomainAxis(11, new NumberAxis("Secondary Domain Axis"));
- assertFalse(plot1.equals(plot2));
- plot2.setDomainAxis(11, new NumberAxis("Secondary Domain Axis"));
- assertTrue(plot1.equals(plot2));
- // secondary DomainAxisLocations...
- plot1.setDomainAxisLocation(11, AxisLocation.TOP_OR_RIGHT);
- assertFalse(plot1.equals(plot2));
- plot2.setDomainAxisLocation(11, AxisLocation.TOP_OR_RIGHT);
- assertTrue(plot1.equals(plot2));
- // rangeAxis...
- plot1.setRangeAxis(new NumberAxis("Range Axis"));
- assertFalse(plot1.equals(plot2));
- plot2.setRangeAxis(new NumberAxis("Range Axis"));
- assertTrue(plot1.equals(plot2));
- // rangeAxisLocation...
- plot1.setRangeAxisLocation(AxisLocation.TOP_OR_RIGHT);
- assertFalse(plot1.equals(plot2));
- plot2.setRangeAxisLocation(AxisLocation.TOP_OR_RIGHT);
- assertTrue(plot1.equals(plot2));
- // secondary RangeAxes...
- plot1.setRangeAxis(11, new NumberAxis("Secondary Range Axis"));
- assertFalse(plot1.equals(plot2));
- plot2.setRangeAxis(11, new NumberAxis("Secondary Range Axis"));
- assertTrue(plot1.equals(plot2));
- // secondary RangeAxisLocations...
- plot1.setRangeAxisLocation(11, AxisLocation.TOP_OR_RIGHT);
- assertFalse(plot1.equals(plot2));
- plot2.setRangeAxisLocation(11, AxisLocation.TOP_OR_RIGHT);
- assertTrue(plot1.equals(plot2));
- // secondary DatasetDomainAxisMap...
- plot1.mapDatasetToDomainAxis(11, 11);
- assertFalse(plot1.equals(plot2));
- plot2.mapDatasetToDomainAxis(11, 11);
- assertTrue(plot1.equals(plot2));
- // secondaryDatasetRangeAxisMap...
- plot1.mapDatasetToRangeAxis(11, 11);
- assertFalse(plot1.equals(plot2));
- plot2.mapDatasetToRangeAxis(11, 11);
- assertTrue(plot1.equals(plot2));
- // renderer
- plot1.setRenderer(new DefaultXYItemRenderer());
- assertFalse(plot1.equals(plot2));
- plot2.setRenderer(new DefaultXYItemRenderer());
- assertTrue(plot1.equals(plot2));
- // secondary renderers
- plot1.setRenderer(11, new DefaultXYItemRenderer());
- assertFalse(plot1.equals(plot2));
- plot2.setRenderer(11, new DefaultXYItemRenderer());
- assertTrue(plot1.equals(plot2));
- // domainGridlinesVisible
- plot1.setDomainGridlinesVisible(false);
- assertFalse(plot1.equals(plot2));
- plot2.setDomainGridlinesVisible(false);
- assertTrue(plot1.equals(plot2));
- // domainGridlineStroke
- Stroke stroke = new BasicStroke(2.0f);
- plot1.setDomainGridlineStroke(stroke);
- assertFalse(plot1.equals(plot2));
- plot2.setDomainGridlineStroke(stroke);
- assertTrue(plot1.equals(plot2));
- // domainGridlinePaint
- plot1.setDomainGridlinePaint(new GradientPaint(1.0f, 2.0f, Color.blue,
- 3.0f, 4.0f, Color.red));
- assertFalse(plot1.equals(plot2));
- plot2.setDomainGridlinePaint(new GradientPaint(1.0f, 2.0f, Color.blue,
- 3.0f, 4.0f, Color.red));
- assertTrue(plot1.equals(plot2));
- // rangeGridlinesVisible
- plot1.setRangeGridlinesVisible(false);
- assertFalse(plot1.equals(plot2));
- plot2.setRangeGridlinesVisible(false);
- assertTrue(plot1.equals(plot2));
- // rangeGridlineStroke
- plot1.setRangeGridlineStroke(stroke);
- assertFalse(plot1.equals(plot2));
- plot2.setRangeGridlineStroke(stroke);
- assertTrue(plot1.equals(plot2));
- // rangeGridlinePaint
- plot1.setRangeGridlinePaint(new GradientPaint(1.0f, 2.0f, Color.green,
- 3.0f, 4.0f, Color.red));
- assertFalse(plot1.equals(plot2));
- plot2.setRangeGridlinePaint(new GradientPaint(1.0f, 2.0f, Color.green,
- 3.0f, 4.0f, Color.red));
- assertTrue(plot1.equals(plot2));
- // rangeZeroBaselineVisible
- plot1.setRangeZeroBaselineVisible(true);
- assertFalse(plot1.equals(plot2));
- plot2.setRangeZeroBaselineVisible(true);
- assertTrue(plot1.equals(plot2));
- // rangeZeroBaselineStroke
- plot1.setRangeZeroBaselineStroke(stroke);
- assertFalse(plot1.equals(plot2));
- plot2.setRangeZeroBaselineStroke(stroke);
- assertTrue(plot1.equals(plot2));
- // rangeZeroBaselinePaint
- plot1.setRangeZeroBaselinePaint(new GradientPaint(1.0f, 2.0f, Color.white,
- 3.0f, 4.0f, Color.red));
- assertFalse(plot1.equals(plot2));
- plot2.setRangeZeroBaselinePaint(new GradientPaint(1.0f, 2.0f, Color.white,
- 3.0f, 4.0f, Color.red));
- assertTrue(plot1.equals(plot2));
- // rangeCrosshairVisible
- plot1.setRangeCrosshairVisible(true);
- assertFalse(plot1.equals(plot2));
- plot2.setRangeCrosshairVisible(true);
- assertTrue(plot1.equals(plot2));
- // rangeCrosshairValue
- plot1.setRangeCrosshairValue(100.0);
- assertFalse(plot1.equals(plot2));
- plot2.setRangeCrosshairValue(100.0);
- assertTrue(plot1.equals(plot2));
- // rangeCrosshairStroke
- plot1.setRangeCrosshairStroke(stroke);
- assertFalse(plot1.equals(plot2));
- plot2.setRangeCrosshairStroke(stroke);
- assertTrue(plot1.equals(plot2));
- // rangeCrosshairPaint
- plot1.setRangeCrosshairPaint(new GradientPaint(1.0f, 2.0f, Color.pink,
- 3.0f, 4.0f, Color.red));
- assertFalse(plot1.equals(plot2));
- plot2.setRangeCrosshairPaint(new GradientPaint(1.0f, 2.0f, Color.pink,
- 3.0f, 4.0f, Color.red));
- assertTrue(plot1.equals(plot2));
- // rangeCrosshairLockedOnData
- plot1.setRangeCrosshairLockedOnData(false);
- assertFalse(plot1.equals(plot2));
- plot2.setRangeCrosshairLockedOnData(false);
- assertTrue(plot1.equals(plot2));
- // range markers
- plot1.addRangeMarker(new ValueMarker(4.0));
- assertFalse(plot1.equals(plot2));
- plot2.addRangeMarker(new ValueMarker(4.0));
- assertTrue(plot1.equals(plot2));
- // secondary range markers
- plot1.addRangeMarker(1, new ValueMarker(4.0), Layer.FOREGROUND);
- assertFalse(plot1.equals(plot2));
- plot2.addRangeMarker(1, new ValueMarker(4.0), Layer.FOREGROUND);
- assertTrue(plot1.equals(plot2));
- plot1.addRangeMarker(1, new ValueMarker(99.0), Layer.BACKGROUND);
- assertFalse(plot1.equals(plot2));
- plot2.addRangeMarker(1, new ValueMarker(99.0), Layer.BACKGROUND);
- assertTrue(plot1.equals(plot2));
- // fixed legend items
- plot1.setFixedLegendItems(new LegendItemCollection());
- assertFalse(plot1.equals(plot2));
- plot2.setFixedLegendItems(new LegendItemCollection());
- assertTrue(plot1.equals(plot2));
- // weight
- plot1.setWeight(3);
- assertFalse(plot1.equals(plot2));
- plot2.setWeight(3);
- assertTrue(plot1.equals(plot2));
- // quadrant origin
- plot1.setQuadrantOrigin(new Point2D.Double(12.3, 45.6));
- assertFalse(plot1.equals(plot2));
- plot2.setQuadrantOrigin(new Point2D.Double(12.3, 45.6));
- assertTrue(plot1.equals(plot2));
- // quadrant paint
- plot1.setQuadrantPaint(0, new GradientPaint(1.0f, 2.0f, Color.red,
- 3.0f, 4.0f, Color.blue));
- assertFalse(plot1.equals(plot2));
- plot2.setQuadrantPaint(0, new GradientPaint(1.0f, 2.0f, Color.red,
- 3.0f, 4.0f, Color.blue));
- assertTrue(plot1.equals(plot2));
- plot1.setQuadrantPaint(1, new GradientPaint(2.0f, 3.0f, Color.red,
- 4.0f, 5.0f, Color.blue));
- assertFalse(plot1.equals(plot2));
- plot2.setQuadrantPaint(1, new GradientPaint(2.0f, 3.0f, Color.red,
- 4.0f, 5.0f, Color.blue));
- assertTrue(plot1.equals(plot2));
- plot1.setQuadrantPaint(2, new GradientPaint(3.0f, 4.0f, Color.red,
- 5.0f, 6.0f, Color.blue));
- assertFalse(plot1.equals(plot2));
- plot2.setQuadrantPaint(2, new GradientPaint(3.0f, 4.0f, Color.red,
- 5.0f, 6.0f, Color.blue));
- assertTrue(plot1.equals(plot2));
- plot1.setQuadrantPaint(3, new GradientPaint(4.0f, 5.0f, Color.red,
- 6.0f, 7.0f, Color.blue));
- assertFalse(plot1.equals(plot2));
- plot2.setQuadrantPaint(3, new GradientPaint(4.0f, 5.0f, Color.red,
- 6.0f, 7.0f, Color.blue));
- assertTrue(plot1.equals(plot2));
- plot1.setDomainTickBandPaint(Color.red);
- assertFalse(plot1.equals(plot2));
- plot2.setDomainTickBandPaint(Color.red);
- assertTrue(plot1.equals(plot2));
- plot1.setRangeTickBandPaint(Color.blue);
- assertFalse(plot1.equals(plot2));
- plot2.setRangeTickBandPaint(Color.blue);
- assertTrue(plot1.equals(plot2));
- plot1.setDomainMinorGridlinesVisible(true);
- assertFalse(plot1.equals(plot2));
- plot2.setDomainMinorGridlinesVisible(true);
- assertTrue(plot1.equals(plot2));
- plot1.setDomainMinorGridlinePaint(Color.red);
- assertFalse(plot1.equals(plot2));
- plot2.setDomainMinorGridlinePaint(Color.red);
- assertTrue(plot1.equals(plot2));
- plot1.setDomainGridlineStroke(new BasicStroke(1.1f));
- assertFalse(plot1.equals(plot2));
- plot2.setDomainGridlineStroke(new BasicStroke(1.1f));
- assertTrue(plot1.equals(plot2));
- plot1.setRangeMinorGridlinesVisible(true);
- assertFalse(plot1.equals(plot2));
- plot2.setRangeMinorGridlinesVisible(true);
- assertTrue(plot1.equals(plot2));
- plot1.setRangeMinorGridlinePaint(Color.blue);
- assertFalse(plot1.equals(plot2));
- plot2.setRangeMinorGridlinePaint(Color.blue);
- assertTrue(plot1.equals(plot2));
- plot1.setRangeMinorGridlineStroke(new BasicStroke(1.23f));
- assertFalse(plot1.equals(plot2));
- plot2.setRangeMinorGridlineStroke(new BasicStroke(1.23f));
- assertTrue(plot1.equals(plot2));
- List axisIndices = Arrays.asList(new Integer[] {new Integer(0),
- new Integer(1)});
- plot1.mapDatasetToDomainAxes(0, axisIndices);
- assertFalse(plot1.equals(plot2));
- plot2.mapDatasetToDomainAxes(0, axisIndices);
- assertTrue(plot1.equals(plot2));
- plot1.mapDatasetToRangeAxes(0, axisIndices);
- assertFalse(plot1.equals(plot2));
- plot2.mapDatasetToRangeAxes(0, axisIndices);
- assertTrue(plot1.equals(plot2));
-
- // shadowGenerator
- plot1.setShadowGenerator(new DefaultShadowGenerator(5, Color.gray,
- 0.6f, 4, -Math.PI / 4));
- assertFalse(plot1.equals(plot2));
- plot2.setShadowGenerator(new DefaultShadowGenerator(5, Color.gray,
- 0.6f, 4, -Math.PI / 4));
- assertTrue(plot1.equals(plot2));
- plot1.setShadowGenerator(null);
- assertFalse(plot1.equals(plot2));
- plot2.setShadowGenerator(null);
- assertTrue(plot1.equals(plot2));
- LegendItemCollection lic1 = new LegendItemCollection();
- lic1.add(new LegendItem("XYZ", Color.red));
- plot1.setFixedLegendItems(lic1);
- assertFalse(plot1.equals(plot2));
- LegendItemCollection lic2 = new LegendItemCollection();
- lic2.add(new LegendItem("XYZ", Color.red));
- plot2.setFixedLegendItems(lic2);
- assertTrue(plot1.equals(plot2));
- }
- /**
- * This test covers a flaw in the ObjectList equals() method.
- */
- @Test
- public void testEquals_ObjectList() {
- XYPlot p1 = new XYPlot();
- p1.setDomainAxis(new NumberAxis("A"));
- XYPlot p2 = new XYPlot();
- p2.setDomainAxis(new NumberAxis("A"));
- assertEquals(p1, p2);
- p2.setDomainAxis(1, new NumberAxis("B"));
- assertNotEquals(p1, p2);
- }
-
- /**
- * This test covers a flaw in the ObjectList equals() method.
- */
- @Test
- public void testEquals_ObjectList2() {
- XYPlot p1 = new XYPlot();
- p1.setDomainAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
- XYPlot p2 = new XYPlot();
- p2.setDomainAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
- assertEquals(p1, p2);
- p2.setDomainAxisLocation(1, AxisLocation.TOP_OR_LEFT);
- assertNotEquals(p1, p2);
- }
- /**
- * This test covers a flaw in the ObjectList equals() method.
- */
- @Test
- public void testEquals_ObjectList3() {
- XYPlot p1 = new XYPlot();
- p1.setRangeAxis(new NumberAxis("A"));
- XYPlot p2 = new XYPlot();
- p2.setRangeAxis(new NumberAxis("A"));
- assertEquals(p1, p2);
- p2.setRangeAxis(1, new NumberAxis("B"));
- assertNotEquals(p1, p2);
- }
-
- /**
- * This test covers a flaw in the ObjectList equals() method.
- */
- @Test
- public void testEquals_ObjectList4() {
- XYPlot p1 = new XYPlot();
- p1.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
- XYPlot p2 = new XYPlot();
- p2.setRangeAxisLocation(AxisLocation.BOTTOM_OR_RIGHT);
- assertEquals(p1, p2);
- p2.setRangeAxisLocation(1, AxisLocation.TOP_OR_LEFT);
- assertNotEquals(p1, p2);
- }
- /**
- * This test covers a flaw in the ObjectList equals() method.
- */
- @Test
- public void testEquals_ObjectList5() {
- XYPlot p1 = new XYPlot();
- p1.setRenderer(new XYBarRenderer());
- XYPlot p2 = new XYPlot();
- p2.setRenderer(new XYBarRenderer());
- assertEquals(p1, p2);
- p2.setRenderer(1, new XYLineAndShapeRenderer());
- assertNotEquals(p1, p2);
- }
- /**
- * Confirm that basic cloning works.
- */
- @Test
- public void testCloning() throws CloneNotSupportedException {
- XYPlot p1 = new XYPlot();
- XYPlot p2 = (XYPlot) p1.clone();
- assertTrue(p1 != p2);
- assertTrue(p1.getClass() == p2.getClass());
- assertTrue(p1.equals(p2));
- }
- /**
- * Tests cloning for a more complex plot.
- */
- @Test
- public void testCloning2() throws CloneNotSupportedException {
- XYPlot p1 = new XYPlot(null, new NumberAxis("Domain Axis"),
- new NumberAxis("Range Axis"), new StandardXYItemRenderer());
- p1.setRangeAxis(1, new NumberAxis("Range Axis 2"));
- List axisIndices = Arrays.asList(new Integer[] {new Integer(0),
- new Integer(1)});
- p1.mapDatasetToDomainAxes(0, axisIndices);
- p1.mapDatasetToRangeAxes(0, axisIndices);
- p1.setRenderer(1, new XYBarRenderer());
- XYPlot p2 = (XYPlot) p1.clone();
- assertTrue(p1 != p2);
- assertTrue(p1.getClass() == p2.getClass());
- assertTrue(p1.equals(p2));
- }
- /**
- * Tests cloning for a plot where the fixed legend items have been
- * specified.
- */
- @Test
- public void testCloning3() throws CloneNotSupportedException {
- XYPlot p1 = new XYPlot(null, new NumberAxis("Domain Axis"),
- new NumberAxis("Range Axis"), new StandardXYItemRenderer());
- LegendItemCollection c1 = new LegendItemCollection();
- p1.setFixedLegendItems(c1);
- XYPlot p2 = (XYPlot) p1.clone();
- assertTrue(p1 != p2);
- assertTrue(p1.getClass() == p2.getClass());
- assertTrue(p1.equals(p2));
- // verify independence of fixed legend item collection
- c1.add(new LegendItem("X"));
- assertFalse(p1.equals(p2));
- }
- /**
- * Tests cloning to ensure that the cloned plot is registered as a listener
- * on the cloned renderer.
- */
- @Test
- public void testCloning4() throws CloneNotSupportedException {
- XYLineAndShapeRenderer r1 = new XYLineAndShapeRenderer();
- XYPlot p1 = new XYPlot(null, new NumberAxis("Domain Axis"),
- new NumberAxis("Range Axis"), r1);
- XYPlot p2 = (XYPlot) p1.clone();
- assertTrue(p1 != p2);
- assertTrue(p1.getClass() == p2.getClass());
- assertTrue(p1.equals(p2));
- // verify that the plot is listening to the cloned renderer
- XYLineAndShapeRenderer r2 = (XYLineAndShapeRenderer) p2.getRenderer();
- assertTrue(r2.hasListener(p2));
- }
- /**
- * Confirm that cloning captures the quadrantOrigin field.
- */
- @Test
- public void testCloning_QuadrantOrigin() throws CloneNotSupportedException {
- XYPlot p1 = new XYPlot();
- Point2D p = new Point2D.Double(1.2, 3.4);
- p1.setQuadrantOrigin(p);
- XYPlot p2 = (XYPlot) p1.clone();
- assertTrue(p1 != p2);
- assertTrue(p1.getClass() == p2.getClass());
- assertTrue(p1.equals(p2));
- assertTrue(p2.getQuadrantOrigin() != p);
- }
- /**
- * Confirm that cloning captures the quadrantOrigin field.
- */
- @Test
- public void testCloning_QuadrantPaint() throws CloneNotSupportedException {
- XYPlot p1 = new XYPlot();
- p1.setQuadrantPaint(3, new GradientPaint(1.0f, 2.0f, Color.red,
- 3.0f, 4.0f, Color.blue));
- XYPlot p2 = (XYPlot) p1.clone();
- assertTrue(p1 != p2);
- assertTrue(p1.getClass() == p2.getClass());
- assertTrue(p1.equals(p2));
- // check for independence
- p1.setQuadrantPaint(1, Color.red);
- assertFalse(p1.equals(p2));
- p2.setQuadrantPaint(1, Color.red);
- assertTrue(p1.equals(p2));
- }
- /**
- * Renderers that belong to the plot are being cloned but they are
- * retaining a reference to the original plot.
- */
- @Test
- public void testBug2817504() throws CloneNotSupportedException {
- XYPlot p1 = new XYPlot();
- XYLineAndShapeRenderer r1 = new XYLineAndShapeRenderer();
- p1.setRenderer(r1);
- XYPlot p2 = (XYPlot) p1.clone();
- assertTrue(p1 != p2);
- assertTrue(p1.getClass() == p2.getClass());
- assertTrue(p1.equals(p2));
- // check for independence
- XYLineAndShapeRenderer r2 = (XYLineAndShapeRenderer) p2.getRenderer();
- assertTrue(r2.getPlot() == p2);
- }
- /**
- * Tests the independence of the clones.
- */
- @Test
- public void testCloneIndependence() throws CloneNotSupportedException {
- XYPlot p1 = new XYPlot(null, new NumberAxis("Domain Axis"),
- new NumberAxis("Range Axis"), new StandardXYItemRenderer());
- p1.setDomainAxis(1, new NumberAxis("Domain Axis 2"));
- p1.setDomainAxisLocation(1, AxisLocation.BOTTOM_OR_LEFT);
- p1.setRangeAxis(1, new NumberAxis("Range Axis 2"));
- p1.setRangeAxisLocation(1, AxisLocation.TOP_OR_RIGHT);
- p1.setRenderer(1, new XYBarRenderer());
- XYPlot p2 = (XYPlot) p1.clone();
- assertTrue(p1.equals(p2));
- p1.getDomainAxis().setLabel("Label");
- assertFalse(p1.equals(p2));
- p2.getDomainAxis().setLabel("Label");
- assertTrue(p1.equals(p2));
- p1.getDomainAxis(1).setLabel("S1");
- assertFalse(p1.equals(p2));
- p2.getDomainAxis(1).setLabel("S1");
- assertTrue(p1.equals(p2));
- p1.setDomainAxisLocation(1, AxisLocation.TOP_OR_RIGHT);
- assertFalse(p1.equals(p2));
- p2.setDomainAxisLocation(1, AxisLocation.TOP_OR_RIGHT);
- assertTrue(p1.equals(p2));
- p1.mapDatasetToDomainAxis(2, 1);
- assertFalse(p1.equals(p2));
- p2.mapDatasetToDomainAxis(2, 1);
- assertTrue(p1.equals(p2));
- p1.getRangeAxis().setLabel("Label");
- assertFalse(p1.equals(p2));
- p2.getRangeAxis().setLabel("Label");
- assertTrue(p1.equals(p2));
- p1.getRangeAxis(1).setLabel("S1");
- assertFalse(p1.equals(p2));
- p2.getRangeAxis(1).setLabel("S1");
- assertTrue(p1.equals(p2));
- p1.setRangeAxisLocation(1, AxisLocation.TOP_OR_LEFT);
- assertFalse(p1.equals(p2));
- p2.setRangeAxisLocation(1, AxisLocation.TOP_OR_LEFT);
- assertTrue(p1.equals(p2));
- p1.mapDatasetToRangeAxis(2, 1);
- assertFalse(p1.equals(p2));
- p2.mapDatasetToRangeAxis(2, 1);
- assertTrue(p1.equals(p2));
- p1.getRenderer().setOutlinePaint(Color.cyan);
- assertFalse(p1.equals(p2));
- p2.getRenderer().setOutlinePaint(Color.cyan);
- assertTrue(p1.equals(p2));
- p1.getRenderer(1).setOutlinePaint(Color.red);
- assertFalse(p1.equals(p2));
- p2.getRenderer(1).setOutlinePaint(Color.red);
- assertTrue(p1.equals(p2));
- }
- /**
- * Setting a null renderer should be allowed, but is generating a null
- * pointer exception in 0.9.7.
- */
- @Test
- public void testSetNullRenderer() {
- boolean failed = false;
- try {
- XYPlot plot = new XYPlot(null, new NumberAxis("X"),
- new NumberAxis("Y"), null);
- plot.setRenderer(null);
- }
- catch (Exception e) {
- failed = true;
- }
- assertTrue(!failed);
- }
- /**
- * Serialize an instance, restore it, and check for equality.
- */
- @Test
- public void testSerialization1() {
- XYDataset data = new XYSeriesCollection();
- NumberAxis domainAxis = new NumberAxis("Domain");
- NumberAxis rangeAxis = new NumberAxis("Range");
- StandardXYItemRenderer renderer = new StandardXYItemRenderer();
- XYPlot p1 = new XYPlot(data, domainAxis, rangeAxis, renderer);
- XYPlot p2 = (XYPlot) TestUtilities.serialised(p1);
- assertEquals(p1, p2);
- }
- /**
- * Serialize an instance, restore it, and check for equality. This test
- * uses a {@link DateAxis} and a {@link StandardXYToolTipGenerator}.
- */
- @Test
- public void testSerialization2() {
- IntervalXYDataset data1 = createDataset1();
- XYItemRenderer renderer1 = new XYBarRenderer(0.20);
- renderer1.setBaseToolTipGenerator(
- StandardXYToolTipGenerator.getTimeSeriesInstance());
- XYPlot p1 = new XYPlot(data1, new DateAxis("Date"), null, renderer1);
- XYPlot p2 = (XYPlot) TestUtilities.serialised(p1);
- assertEquals(p1, p2);
- }
- /**
- * Problem to reproduce a bug in serialization. The bug (first reported
- * against the {@link org.jfree.chart.plot.CategoryPlot} class) is a null
- * pointer exception that occurs when drawing a plot after deserialization.
- * It is caused by four temporary storage structures (axesAtTop,
- * axesAtBottom, axesAtLeft and axesAtRight - all initialized as empty
- * lists in the constructor) not being initialized by the readObject()
- * method following deserialization. This test has been written to
- * reproduce the bug (now fixed).
- */
- @Test
- public void testSerialization3() {
- XYSeriesCollection dataset = new XYSeriesCollection();
- JFreeChart chart = ChartFactory.createXYLineChart("Test Chart",
- "Domain Axis", "Range Axis", dataset);
- JFreeChart chart2 = (JFreeChart) TestUtilities.serialised(chart);
- assertEquals(chart, chart2);
- try {
- chart2.createBufferedImage(300, 200);
- }
- catch (Exception e) {
- fail("No exception should be thrown.");
- }
- }
- /**
- * A test to reproduce a bug in serialization: the domain and/or range
- * markers for a plot are not being serialized.
- */
- @Test
- public void testSerialization4() {
- XYSeriesCollection dataset = new XYSeriesCollection();
- JFreeChart chart = ChartFactory.createXYLineChart("Test Chart",
- "Domain Axis", "Range Axis", dataset);
- XYPlot plot = (XYPlot) chart.getPlot();
- plot.addDomainMarker(new ValueMarker(1.0), Layer.FOREGROUND);
- plot.addDomainMarker(new IntervalMarker(2.0, 3.0), Layer.BACKGROUND);
- plot.addRangeMarker(new ValueMarker(4.0), Layer.FOREGROUND);
- plot.addRangeMarker(new IntervalMarker(5.0, 6.0), Layer.BACKGROUND);
- JFreeChart chart2 = (JFreeChart) TestUtilities.serialised(chart);
- assertEquals(chart, chart2);
- try {
- chart2.createBufferedImage(300, 200);
- }
- catch (Exception e) {
- fail("No exception should be thrown.");
- }
- }
- /**
- * Tests a bug where the plot is no longer registered as a listener
- * with the dataset(s) and axes after deserialization. See patch 1209475
- * at SourceForge.
- */
- @Test
- public void testSerialization5() {
- XYSeriesCollection dataset1 = new XYSeriesCollection();
- NumberAxis domainAxis1 = new NumberAxis("Domain 1");
- NumberAxis rangeAxis1 = new NumberAxis("Range 1");
- StandardXYItemRenderer renderer1 = new StandardXYItemRenderer();
- XYPlot p1 = new XYPlot(dataset1, domainAxis1, rangeAxis1, renderer1);
- NumberAxis domainAxis2 = new NumberAxis("Domain 2");
- NumberAxis rangeAxis2 = new NumberAxis("Range 2");
- StandardXYItemRenderer renderer2 = new StandardXYItemRenderer();
- XYSeriesCollection dataset2 = new XYSeriesCollection();
- p1.setDataset(1, dataset2);
- p1.setDomainAxis(1, domainAxis2);
- p1.setRangeAxis(1, rangeAxis2);
- p1.setRenderer(1, renderer2);
- XYPlot p2 = (XYPlot) TestUtilities.serialised(p1);
- assertEquals(p1, p2);
- // now check that all datasets, renderers and axes are being listened
- // too...
- NumberAxis domainAxisA = (NumberAxis) p2.getDomainAxis(0);
- NumberAxis rangeAxisA = (NumberAxis) p2.getRangeAxis(0);
- XYSeriesCollection datasetA = (XYSeriesCollection) p2.getDataset(0);
- StandardXYItemRenderer rendererA
- = (StandardXYItemRenderer) p2.getRenderer(0);
- NumberAxis domainAxisB = (NumberAxis) p2.getDomainAxis(1);
- NumberAxis rangeAxisB = (NumberAxis) p2.getRangeAxis(1);
- XYSeriesCollection datasetB = (XYSeriesCollection) p2.getDataset(1);
- StandardXYItemRenderer rendererB
- = (StandardXYItemRenderer) p2.getRenderer(1);
- assertTrue(datasetA.hasListener(p2));
- assertTrue(domainAxisA.hasListener(p2));
- assertTrue(rangeAxisA.hasListener(p2));
- assertTrue(rendererA.hasListener(p2));
- assertTrue(datasetB.hasListener(p2));
- assertTrue(domainAxisB.hasListener(p2));
- assertTrue(rangeAxisB.hasListener(p2));
- assertTrue(rendererB.hasListener(p2));
- }
- /**
- * Some checks for the getRendererForDataset() method.
- */
- @Test
- public void testGetRendererForDataset() {
- XYDataset d0 = new XYSeriesCollection();
- XYDataset d1 = new XYSeriesCollection();
- XYDataset d2 = new XYSeriesCollection();
- XYDataset d3 = new XYSeriesCollection(); // not used by plot
- XYItemRenderer r0 = new XYLineAndShapeRenderer();
- XYItemRenderer r2 = new XYLineAndShapeRenderer();
- XYPlot plot = new XYPlot();
- plot.setDataset(0, d0);
- plot.setDataset(1, d1);
- plot.setDataset(2, d2);
- plot.setRenderer(0, r0);
- // no renderer 1
- plot.setRenderer(2, r2);
- assertEquals(r0, plot.getRendererForDataset(d0));
- assertEquals(r0, plot.getRendererForDataset(d1));
- assertEquals(r2, plot.getRendererForDataset(d2));
- assertEquals(null, plot.getRendererForDataset(d3));
- assertEquals(null, plot.getRendererForDataset(null));
- }
- /**
- * Some checks for the getLegendItems() method.
- */
- @Test
- public void testGetLegendItems() {
- // check the case where there is a secondary dataset that doesn't
- // have a renderer (i.e. falls back to renderer 0)
- XYDataset d0 = createDataset1();
- XYDataset d1 = createDataset2();
- XYItemRenderer r0 = new XYLineAndShapeRenderer();
- XYPlot plot = new XYPlot();
- plot.setDataset(0, d0);
- plot.setDataset(1, d1);
- plot.setRenderer(0, r0);
- LegendItemCollection items = plot.getLegendItems();
- assertEquals(2, items.getItemCount());
- }
- /**
- * Creates a sample dataset.
- *
- * @return Series 1.
- */
- private IntervalXYDataset createDataset1() {
- // create dataset 1...
- TimeSeries series1 = new TimeSeries("Series 1", Day.class);
- series1.add(new Day(1, MonthConstants.MARCH, 2002), 12353.3);
- series1.add(new Day(2, MonthConstants.MARCH, 2002), 13734.4);
- series1.add(new Day(3, MonthConstants.MARCH, 2002), 14525.3);
- series1.add(new Day(4, MonthConstants.MARCH, 2002), 13984.3);
- series1.add(new Day(5, MonthConstants.MARCH, 2002), 12999.4);
- series1.add(new Day(6, MonthConstants.MARCH, 2002), 14274.3);
- series1.add(new Day(7, MonthConstants.MARCH, 2002), 15943.5);
- series1.add(new Day(8, MonthConstants.MARCH, 2002), 14845.3);
- series1.add(new Day(9, MonthConstants.MARCH, 2002), 14645.4);
- series1.add(new Day(10, MonthConstants.MARCH, 2002), 16234.6);
- series1.add(new Day(11, MonthConstants.MARCH, 2002), 17232.3);
- series1.add(new Day(12, MonthConstants.MARCH, 2002), 14232.2);
- series1.add(new Day(13, MonthConstants.MARCH, 2002), 13102.2);
- series1.add(new Day(14, MonthConstants.MARCH, 2002), 14230.2);
- series1.add(new Day(15, MonthConstants.MARCH, 2002), 11235.2);
- TimeSeriesCollection collection = new TimeSeriesCollection(series1);
- return collection;
- }
- /**
- * Creates a sample dataset.
- *
- * @return A sample dataset.
- */
- private XYDataset createDataset2() {
- // create dataset 1...
- XYSeries series = new XYSeries("Series 2");
- XYSeriesCollection collection = new XYSeriesCollection(series);
- return collection;
- }
- /**
- * A test for a bug where setting the renderer doesn't register the plot
- * as a RendererChangeListener.
- */
- @Test
- public void testSetRenderer() {
- XYPlot plot = new XYPlot();
- XYItemRenderer renderer = new XYLineAndShapeRenderer();
- plot.setRenderer(renderer);
- // now make a change to the renderer and see if it triggers a plot
- // change event...
- MyPlotChangeListener listener = new MyPlotChangeListener();
- plot.addChangeListener(listener);
- renderer.setSeriesPaint(0, Color.black);
- assertTrue(listener.getEvent() != null);
- }
- /**
- * Some checks for the removeAnnotation() method.
- */
- @Test
- public void testRemoveAnnotation() {
- XYPlot plot = new XYPlot();
- XYTextAnnotation a1 = new XYTextAnnotation("X", 1.0, 2.0);
- XYTextAnnotation a2 = new XYTextAnnotation("X", 3.0, 4.0);
- XYTextAnnotation a3 = new XYTextAnnotation("X", 1.0, 2.0);
- plot.addAnnotation(a1);
- plot.addAnnotation(a2);
- plot.addAnnotation(a3);
- plot.removeAnnotation(a2);
- XYTextAnnotation x = (XYTextAnnotation) plot.getAnnotations().get(0);
- assertEquals(x, a1);
- // now remove a3, but since a3.equals(a1), this will in fact remove
- // a1...
- assertTrue(a1.equals(a3));
- plot.removeAnnotation(a3); // actually removes a1
- x = (XYTextAnnotation) plot.getAnnotations().get(0);
- assertEquals(x, a3);
- }
- /**
- * Some tests for the addDomainMarker() method(s).
- */
- @Test
- public void testAddDomainMarker() {
- XYPlot plot = new XYPlot();
- Marker m = new ValueMarker(1.0);
- plot.addDomainMarker(m);
- List listeners = Arrays.asList(m.getListeners(
- MarkerChangeListener.class));
- assertTrue(listeners.contains(plot));
- plot.clearDomainMarkers();
- listeners = Arrays.asList(m.getListeners(MarkerChangeListener.class));
- assertFalse(listeners.contains(plot));
- }
- /**
- * Some tests for the addRangeMarker() method(s).
- */
- @Test
- public void testAddRangeMarker() {
- XYPlot plot = new XYPlot();
- Marker m = new ValueMarker(1.0);
- plot.addRangeMarker(m);
- List listeners = Arrays.asList(m.getListeners(
- MarkerChangeListener.class));
- assertTrue(listeners.contains(plot));
- plot.clearRangeMarkers();
- listeners = Arrays.asList(m.getListeners(MarkerChangeListener.class));
- assertFalse(listeners.contains(plot));
- }
- /**
- * A test for bug 1654215 (where a renderer is added to the plot without
- * a corresponding dataset and it throws an exception at drawing time).
- */
- @Test
- public void test1654215() {
- DefaultXYDataset dataset = new DefaultXYDataset();
- JFreeChart chart = ChartFactory.createXYLineChart("Title", "X", "Y",
- dataset, PlotOrientation.VERTICAL, true, false, false);
- XYPlot plot = (XYPlot) chart.getPlot();
- plot.setRenderer(1, new XYLineAndShapeRenderer());
- try {
- BufferedImage image = new BufferedImage(200 , 100,
- BufferedImage.TYPE_INT_RGB);
- Graphics2D g2 = image.createGraphics();
- chart.draw(g2, new Rectangle2D.Double(0, 0, 200, 100), null, null);
- g2.dispose();
- }
- catch (Exception e) {
- fail("No exception should be thrown.");
- }
- }
- /**
- * A test for drawing range grid lines when there is no primary renderer.
- * In 1.0.4, this is throwing a NullPointerException.
- */
- @Test
- public void testDrawRangeGridlines() {
- DefaultXYDataset dataset = new DefaultXYDataset();
- JFreeChart chart = ChartFactory.createXYLineChart("Title", "X", "Y",
- dataset, PlotOrientation.VERTICAL, true, false, false);
- XYPlot plot = (XYPlot) chart.getPlot();
- plot.setRenderer(null);
- try {
- BufferedImage image = new BufferedImage(200 , 100,
- BufferedImage.TYPE_INT_RGB);
- Graphics2D g2 = image.createGraphics();
- chart.draw(g2, new Rectangle2D.Double(0, 0, 200, 100), null, null);
- g2.dispose();
- }
- catch (Exception e) {
- fail("No exception should be thrown.");
- }
- }
- /**
- * A test for drawing a plot where a series has zero items. With
- * JFreeChart 1.0.5+cvs this was throwing an exception at one point.
- */
- @Test
- public void testDrawSeriesWithZeroItems() {
- DefaultXYDataset dataset = new DefaultXYDataset();
- dataset.addSeries("Series 1", new double[][] {{1.0, 2.0}, {3.0, 4.0}});
- dataset.addSeries("Series 2", new double[][] {{}, {}});
- JFreeChart chart = ChartFactory.createXYLineChart("Title", "X", "Y",
- dataset, PlotOrientation.VERTICAL, true, false, false);
- try {
- BufferedImage image = new BufferedImage(200 , 100,
- BufferedImage.TYPE_INT_RGB);
- Graphics2D g2 = image.createGraphics();
- chart.draw(g2, new Rectangle2D.Double(0, 0, 200, 100), null, null);
- g2.dispose();
- }
- catch (Exception e) {
- fail("No exception should be thrown.");
- }
- }
- /**
- * Check that removing a marker that isn't assigned to the plot returns
- * false.
- */
- @Test
- public void testRemoveDomainMarker() {
- XYPlot plot = new XYPlot();
- assertFalse(plot.removeDomainMarker(new ValueMarker(0.5)));
- }
- /**
- * Check that removing a marker that isn't assigned to the plot returns
- * false.
- */
- @Test
- public void testRemoveRangeMarker() {
- XYPlot plot = new XYPlot();
- assertFalse(plot.removeRangeMarker(new ValueMarker(0.5)));
- }
- /**
- * Some tests for the getDomainAxisForDataset() method.
- */
- @Test
- public void testGetDomainAxisForDataset() {
- XYDataset dataset = new XYSeriesCollection();
- NumberAxis xAxis = new NumberAxis("X");
- NumberAxis yAxis = new NumberAxis("Y");
- XYItemRenderer renderer = new DefaultXYItemRenderer();
- XYPlot plot = new XYPlot(dataset, xAxis, yAxis, renderer);
- assertEquals(xAxis, plot.getDomainAxisForDataset(0));
- // should get IllegalArgumentException for negative index
- boolean pass = false;
- try {
- plot.getDomainAxisForDataset(-1);
- }
- catch (IllegalArgumentException e) {
- pass = true;
- }
- assertTrue(pass);
- // if multiple axes are mapped, the first in the list should be
- // returned...
- NumberAxis xAxis2 = new NumberAxis("X2");
- plot.setDomainAxis(1, xAxis2);
- assertEquals(xAxis, plot.getDomainAxisForDataset(0));
- plot.mapDatasetToDomainAxis(0, 1);
- assertEquals(xAxis2, plot.getDomainAxisForDataset(0));
- List axisIndices = Arrays.asList(new Integer[] {new Integer(0),
- new Integer(1)});
- plot.mapDatasetToDomainAxes(0, axisIndices);
- assertEquals(xAxis, plot.getDomainAxisForDataset(0));
- axisIndices = Arrays.asList(new Integer[] {new Integer(1),
- new Integer(2)});
- plot.mapDatasetToDomainAxes(0, axisIndices);
- assertEquals(xAxis2, plot.getDomainAxisForDataset(0));
- }
- /**
- * Some tests for the getRangeAxisForDataset() method.
- */
- @Test
- public void testGetRangeAxisForDataset() {
- XYDataset dataset = new XYSeriesCollection();
- NumberAxis xAxis = new NumberAxis("X");
- NumberAxis yAxis = new NumberAxis("Y");
- XYItemRenderer renderer = new DefaultXYItemRenderer();
- XYPlot plot = new XYPlot(dataset, xAxis, yAxis, renderer);
- assertEquals(yAxis, plot.getRangeAxisForDataset(0));
- // should get IllegalArgumentException for negative index
- boolean pass = false;
- try {
- plot.getRangeAxisForDataset(-1);
- }
- catch (IllegalArgumentException e) {
- pass = true;
- }
- assertTrue(pass);
- // if multiple axes are mapped, the first in the list should be
- // returned...
- NumberAxis yAxis2 = new NumberAxis("Y2");
- plot.setRangeAxis(1, yAxis2);
- assertEquals(yAxis, plot.getRangeAxisForDataset(0));
- plot.mapDatasetToRangeAxis(0, 1);
- assertEquals(yAxis2, plot.getRangeAxisForDataset(0));
- List axisIndices = Arrays.asList(new Integer[] {new Integer(0),
- new Integer(1)});
- plot.mapDatasetToRangeAxes(0, axisIndices);
- assertEquals(yAxis, plot.getRangeAxisForDataset(0));
- axisIndices = Arrays.asList(new Integer[] {new Integer(1),
- new Integer(2)});
- plot.mapDatasetToRangeAxes(0, axisIndices);
- assertEquals(yAxis2, plot.getRangeAxisForDataset(0));
- }
-
- /**
- * Datasets are now stored in a Map, and it should be possible to assign
- * them an arbitrary key (index).
- */
- @Test
- public void testDatasetIndices() {
- XYDataset dataset = new XYSeriesCollection();
- NumberAxis xAxis = new NumberAxis("X");
- NumberAxis yAxis = new NumberAxis("Y");
- XYItemRenderer renderer = new DefaultXYItemRenderer();
- XYPlot plot = new XYPlot(dataset, xAxis, yAxis, renderer);
-
- assertEquals(dataset, plot.getDataset(0));
-
- XYSeriesCollection dataset2 = new XYSeriesCollection();
- dataset2.addSeries(new XYSeries("Series in dataset 2"));
-
- // we should be able to give a dataset an arbitrary index
- plot.setDataset(99, dataset2);
- assertEquals(2, plot.getDatasetCount());
- assertEquals(dataset2, plot.getDataset(99));
-
- assertEquals(0, plot.indexOf(dataset));
- assertEquals(99, plot.indexOf(dataset2));
- }
-
- @Test
- public void testAxisIndices() {
- XYDataset dataset = new XYSeriesCollection();
- NumberAxis xAxis = new NumberAxis("X");
- NumberAxis yAxis = new NumberAxis("Y");
- XYItemRenderer renderer = new DefaultXYItemRenderer();
- XYPlot plot = new XYPlot(dataset, xAxis, yAxis, renderer);
- assertEquals(xAxis, plot.getDomainAxis(0));
- assertEquals(yAxis, plot.getRangeAxis(0));
-
- NumberAxis xAxis2 = new NumberAxis("X2");
- plot.setDomainAxis(99, xAxis2);
- assertEquals(xAxis2, plot.getDomainAxis(99));
-
- NumberAxis yAxis2 = new NumberAxis("Y2");
- plot.setRangeAxis(99, yAxis2);
- assertEquals(yAxis2, plot.getRangeAxis(99));
- }
-
- @Test
- public void testAxisLocationIndices() {
- XYDataset dataset = new XYSeriesCollection();
- NumberAxis xAxis = new NumberAxis("X");
- NumberAxis yAxis = new NumberAxis("Y");
- XYItemRenderer renderer = new DefaultXYItemRenderer();
- XYPlot plot = new XYPlot(dataset, xAxis, yAxis, renderer);
- NumberAxis xAxis2 = new NumberAxis("X2");
- NumberAxis yAxis2 = new NumberAxis("Y2");
- plot.setDomainAxis(99, xAxis2);
- plot.setRangeAxis(99, yAxis2);
-
- plot.setDomainAxisLocation(99, AxisLocation.BOTTOM_OR_RIGHT);
- assertEquals(AxisLocation.BOTTOM_OR_RIGHT,
- plot.getDomainAxisLocation(99));
- plot.setRangeAxisLocation(99, AxisLocation.BOTTOM_OR_LEFT);
- assertEquals(AxisLocation.BOTTOM_OR_LEFT,
- plot.getRangeAxisLocation(99));
- }
-
- @Test
- public void testRendererIndices() {
- XYDataset dataset = new XYSeriesCollection();
- NumberAxis xAxis = new NumberAxis("X");
- NumberAxis yAxis = new NumberAxis("Y");
- XYItemRenderer renderer = new DefaultXYItemRenderer();
- XYPlot plot = new XYPlot(dataset, xAxis, yAxis, renderer);
-
- assertEquals(renderer, plot.getRenderer(0));
-
- // we should be able to give a renderer an arbitrary index
- XYLineAndShapeRenderer renderer2 = new XYLineAndShapeRenderer();
- plot.setRenderer(20, renderer2);
- assertEquals(2, plot.getRendererCount());
- assertEquals(renderer2, plot.getRenderer(20));
-
- assertEquals(20, plot.getIndexOf(renderer2));
- }
- @Test
- public void testGetRendererForDataset2() {
- XYDataset dataset = new XYSeriesCollection();
- NumberAxis xAxis = new NumberAxis("X");
- NumberAxis yAxis = new NumberAxis("Y");
- XYItemRenderer renderer = new DefaultXYItemRenderer();
- XYPlot plot = new XYPlot(dataset, xAxis, yAxis, renderer);
- // add a second dataset
- XYSeriesCollection dataset2 = new XYSeriesCollection();
- dataset2.addSeries(new XYSeries("Series in dataset 2"));
- plot.setDataset(99, dataset2);
-
- // by default, the renderer with index 0 is used
- assertEquals(renderer, plot.getRendererForDataset(dataset2));
-
- // add a second renderer with the same index as dataset2, now it will
- // be used
- XYLineAndShapeRenderer renderer2 = new XYLineAndShapeRenderer();
- plot.setRenderer(99, renderer);
- assertEquals(renderer2, plot.getRendererForDataset(dataset2));
- }
-
- @Test
- public void testMapDatasetToDomainAxis() {
- XYDataset dataset = new XYSeriesCollection();
- NumberAxis xAxis = new NumberAxis("X");
- NumberAxis yAxis = new NumberAxis("Y");
- XYItemRenderer renderer = new DefaultXYItemRenderer();
- XYPlot plot = new XYPlot(dataset, xAxis, yAxis, renderer);
- NumberAxis xAxis2 = new NumberAxis("X2");
- plot.setDomainAxis(11, xAxis2);
-
- // add a second dataset
- XYSeriesCollection dataset2 = new XYSeriesCollection();
- dataset2.addSeries(new XYSeries("Series in dataset 2"));
- plot.setDataset(99, dataset);
-
- assertEquals(xAxis, plot.getDomainAxisForDataset(99));
- // now map the dataset to the second xAxis
- plot.mapDatasetToDomainAxis(99, 11);
- assertEquals(xAxis2, plot.getDomainAxisForDataset(99));
- }
- @Test
- public void testMapDatasetToRangeAxis() {
- XYDataset dataset = new XYSeriesCollection();
- NumberAxis xAxis = new NumberAxis("X");
- NumberAxis yAxis = new NumberAxis("Y");
- XYItemRenderer renderer = new DefaultXYItemRenderer();
- XYPlot plot = new XYPlot(dataset, xAxis, yAxis, renderer);
- NumberAxis yAxis2 = new NumberAxis("Y2");
- plot.setRangeAxis(22, yAxis2);
-
- // add a second dataset
- XYSeriesCollection dataset2 = new XYSeriesCollection();
- dataset2.addSeries(new XYSeries("Series in dataset 2"));
- plot.setDataset(99, dataset);
-
- assertEquals(yAxis, plot.getRangeAxisForDataset(99));
- // now map the dataset to the second xAxis
- plot.mapDatasetToRangeAxis(99, 22);
- assertEquals(yAxis2, plot.getRangeAxisForDataset(99));
- }
-
- @Test
- public void testDomainMarkerIndices() {
- XYDataset dataset = new XYSeriesCollection();
- NumberAxis xAxis = new NumberAxis("X");
- NumberAxis yAxis = new NumberAxis("Y");
- XYItemRenderer renderer = new DefaultXYItemRenderer();
- XYPlot plot = new XYPlot(dataset, xAxis, yAxis, renderer);
-
- // add a second dataset, plotted against a second x axis
- XYSeriesCollection dataset2 = new XYSeriesCollection();
- dataset2.addSeries(new XYSeries("Series in dataset 2"));
- plot.setDataset(99, dataset);
- NumberAxis xAxis2 = new NumberAxis("X2");
- plot.setDomainAxis(1, xAxis2);
- XYLineAndShapeRenderer renderer2 = new XYLineAndShapeRenderer();
- plot.setRenderer(99, renderer2);
- plot.mapDatasetToDomainAxis(99, 1);
-
- ValueMarker xMarker1 = new ValueMarker(123);
- plot.addDomainMarker(99, xMarker1, Layer.FOREGROUND);
- assertTrue(plot.getDomainMarkers(99, Layer.FOREGROUND).contains(
- xMarker1));
- }
- @Test
- public void testRangeMarkerIndices() {
- XYDataset dataset = new XYSeriesCollection();
- NumberAxis xAxis = new NumberAxis("X");
- NumberAxis yAxis = new NumberAxis("Y");
- XYItemRenderer renderer = new DefaultXYItemRenderer();
- XYPlot plot = new XYPlot(dataset, xAxis, yAxis, renderer);
-
- // add a second dataset, plotted against a second axis
- XYSeriesCollection dataset2 = new XYSeriesCollection();
- dataset2.addSeries(new XYSeries("Series in dataset 2"));
- plot.setDataset(99, dataset);
- NumberAxis yAxis2 = new NumberAxis("Y2");
- plot.setRangeAxis(1, yAxis2);
- XYLineAndShapeRenderer renderer2 = new XYLineAndShapeRenderer();
- plot.setRenderer(99, renderer2);
- plot.mapDatasetToRangeAxis(99, 1);
-
- ValueMarker yMarker1 = new ValueMarker(123);
- plot.addRangeMarker(99, yMarker1, Layer.FOREGROUND);
- assertTrue(plot.getRangeMarkers(99, Layer.FOREGROUND).contains(yMarker1));
- }
-
- }
|