/* ===========================================================
* JFreeChart : a free chart library for the Java(tm) platform
* ===========================================================
*
* (C) Copyright 2000-2012, 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.]
*
* --------------------------
* AbstractRendererTests.java
* --------------------------
* (C) Copyright 2003-2012, by Object Refinery Limited and Contributors.
*
* Original Author: David Gilbert (for Object Refinery Limited);
* Contributor(s): -;
*
* Changes
* -------
* 23-Oct-2003 : Version 1 (DG);
* 01-Mar-2004 : Added serialization test (DG);
* 19-Feb-2007 : Added testCloning (DG);
* 28-Feb-2007 : Added checks for cloning (DG);
* 17-Jun-2008 : Added new fields to testEquals() and testCloning() (DG);
* 28-Jan-2009 : Updated testEquals() (DG);
* 28-Apr-2009 : Updated testEquals() (DG);
* 17-Jun-2012 : Removed JCommon dependencies (DG);
*
*/
package org.jfree.chart.renderer;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNotSame;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.Rectangle;
import java.awt.Stroke;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;
import org.jfree.chart.Colors;
import org.jfree.chart.TestUtils;
import org.junit.Test;
import org.jfree.chart.axis.CategoryAxis;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.event.RendererChangeEvent;
import org.jfree.chart.event.RendererChangeListener;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.DefaultDrawingSupplier;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;
import org.jfree.chart.ui.TextAnchor;
/**
* Tests for the {@link AbstractRenderer} class.
*/
public class AbstractRendererTest {
/**
* Test that the equals() method distinguishes all fields.
*/
@Test
public void testEquals() {
// have to use a concrete subclass...
BarRenderer r1 = new BarRenderer();
BarRenderer r2 = new BarRenderer();
assertEquals(r1, r2);
assertEquals(r2, r1);
// seriesVisibleList
r1.setSeriesVisible(2, Boolean.TRUE);
assertFalse(r1.equals(r2));
r2.setSeriesVisible(2, Boolean.TRUE);
assertEquals(r1, r2);
// defaultSeriesVisible
r1.setDefaultSeriesVisible(false);
assertFalse(r1.equals(r2));
r2.setDefaultSeriesVisible(false);
assertEquals(r1, r2);
// seriesVisibleInLegendList
r1.setSeriesVisibleInLegend(1, Boolean.TRUE);
assertFalse(r1.equals(r2));
r2.setSeriesVisibleInLegend(1, Boolean.TRUE);
assertEquals(r1, r2);
// baseSeriesVisibleInLegend
r1.setDefaultSeriesVisibleInLegend(false);
assertFalse(r1.equals(r2));
r2.setDefaultSeriesVisibleInLegend(false);
assertEquals(r1, r2);
// paintList
r1.setSeriesPaint(0, new GradientPaint(1.0f, 2.0f, Color.RED,
3.0f, 4.0f, Color.WHITE));
assertFalse(r1.equals(r2));
r2.setSeriesPaint(0, new GradientPaint(1.0f, 2.0f, Color.RED,
3.0f, 4.0f, Color.WHITE));
assertEquals(r1, r2);
// basePaint
r1.setDefaultPaint(new GradientPaint(1.0f, 2.0f, Color.BLUE,
3.0f, 4.0f, Color.RED));
assertFalse(r1.equals(r2));
r2.setDefaultPaint(new GradientPaint(1.0f, 2.0f, Color.BLUE,
3.0f, 4.0f, Color.RED));
assertEquals(r1, r2);
// fillPaintList
r1.setSeriesFillPaint(0, new GradientPaint(1.0f, 2.0f, Color.BLUE,
3.0f, 4.0f, Color.RED));
assertFalse(r1.equals(r2));
r2.setSeriesFillPaint(0, new GradientPaint(1.0f, 2.0f, Color.BLUE,
3.0f, 4.0f, Color.RED));
assertEquals(r1, r2);
// baseFillPaint
r1.setDefaultFillPaint(new GradientPaint(1.0f, 2.0f, Color.BLUE,
3.0f, 4.0f, Color.RED));
assertFalse(r1.equals(r2));
r2.setDefaultFillPaint(new GradientPaint(1.0f, 2.0f, Color.BLUE,
3.0f, 4.0f, Color.RED));
assertEquals(r1, r2);
// outlinePaintList
r1.setSeriesOutlinePaint(0, new GradientPaint(1.0f, 2.0f, Color.BLUE,
3.0f, 4.0f, Color.RED));
assertFalse(r1.equals(r2));
r2.setSeriesOutlinePaint(0, new GradientPaint(1.0f, 2.0f, Color.BLUE,
3.0f, 4.0f, Color.RED));
assertEquals(r1, r2);
// baseOutlinePaint
r1.setDefaultOutlinePaint(new GradientPaint(1.0f, 2.0f, Color.BLUE,
3.0f, 4.0f, Color.RED));
assertFalse(r1.equals(r2));
r2.setDefaultOutlinePaint(new GradientPaint(1.0f, 2.0f, Color.BLUE,
3.0f, 4.0f, Color.RED));
assertEquals(r1, r2);
// strokeList
Stroke s = new BasicStroke(3.21f);
r1.setSeriesStroke(1, s);
assertFalse(r1.equals(r2));
r2.setSeriesStroke(1, s);
assertEquals(r1, r2);
// baseStroke
r1.setDefaultStroke(s);
assertFalse(r1.equals(r2));
r2.setDefaultStroke(s);
assertEquals(r1, r2);
// outlineStrokeList
r1.setSeriesOutlineStroke(0, s);
assertFalse(r1.equals(r2));
r2.setSeriesOutlineStroke(0, s);
assertEquals(r1, r2);
// baseOutlineStroke
r1.setDefaultOutlineStroke(s);
assertFalse(r1.equals(r2));
r2.setDefaultOutlineStroke(s);
assertEquals(r1, r2);
// shapeList
r1.setSeriesShape(1, new Ellipse2D.Double(1, 2, 3, 4));
assertFalse(r1.equals(r2));
r2.setSeriesShape(1, new Ellipse2D.Double(1, 2, 3, 4));
assertEquals(r1, r2);
// baseShape
r1.setDefaultShape(new Ellipse2D.Double(1, 2, 3, 4));
assertFalse(r1.equals(r2));
r2.setDefaultShape(new Ellipse2D.Double(1, 2, 3, 4));
assertEquals(r1, r2);
// itemLabelsVisibleList
r1.setSeriesItemLabelsVisible(1, Boolean.TRUE);
assertFalse(r1.equals(r2));
r2.setSeriesItemLabelsVisible(1, Boolean.TRUE);
assertEquals(r1, r2);
// baseItemLabelsVisible
r1.setDefaultItemLabelsVisible(true);
assertFalse(r1.equals(r2));
r2.setDefaultItemLabelsVisible(true);
assertEquals(r1, r2);
// itemLabelFontList
r1.setSeriesItemLabelFont(1, new Font("Serif", Font.BOLD, 9));
assertFalse(r1.equals(r2));
r2.setSeriesItemLabelFont(1, new Font("Serif", Font.BOLD, 9));
assertEquals(r1, r2);
// baseItemLabelFont
r1.setDefaultItemLabelFont(new Font("Serif", Font.PLAIN, 10));
assertFalse(r1.equals(r2));
r2.setDefaultItemLabelFont(new Font("Serif", Font.PLAIN, 10));
assertEquals(r1, r2);
// itemLabelPaintList
r1.setSeriesItemLabelPaint(0, new GradientPaint(1.0f, 2.0f, Color.RED,
3.0f, 4.0f, Color.gray));
assertFalse(r1.equals(r2));
r2.setSeriesItemLabelPaint(0, new GradientPaint(1.0f, 2.0f, Color.RED,
3.0f, 4.0f, Color.gray));
assertEquals(r1, r2);
// baseItemLabelPaint
r1.setDefaultItemLabelPaint(new GradientPaint(1.0f, 2.0f, Color.RED,
3.0f, 4.0f, Color.gray));
assertFalse(r1.equals(r2));
r2.setDefaultItemLabelPaint(new GradientPaint(1.0f, 2.0f, Color.RED,
3.0f, 4.0f, Color.gray));
assertEquals(r1, r2);
// positiveItemLabelPositionList;
r1.setSeriesPositiveItemLabelPosition(0, new ItemLabelPosition());
assertFalse(r1.equals(r2));
r2.setSeriesPositiveItemLabelPosition(0, new ItemLabelPosition());
assertEquals(r1, r2);
// basePositiveItemLabelPosition;
r1.setDefaultPositiveItemLabelPosition(new ItemLabelPosition(
ItemLabelAnchor.INSIDE10, TextAnchor.BASELINE_RIGHT));
assertFalse(r1.equals(r2));
r2.setDefaultPositiveItemLabelPosition(new ItemLabelPosition(
ItemLabelAnchor.INSIDE10, TextAnchor.BASELINE_RIGHT));
assertEquals(r1, r2);
// negativeItemLabelPositionList;
r1.setSeriesNegativeItemLabelPosition(1, new ItemLabelPosition(
ItemLabelAnchor.INSIDE10, TextAnchor.BASELINE_RIGHT));
assertFalse(r1.equals(r2));
r2.setSeriesNegativeItemLabelPosition(1, new ItemLabelPosition(
ItemLabelAnchor.INSIDE10, TextAnchor.BASELINE_RIGHT));
assertEquals(r1, r2);
// baseNegativeItemLabelPosition;
r1.setDefaultNegativeItemLabelPosition(new ItemLabelPosition(
ItemLabelAnchor.INSIDE10, TextAnchor.BASELINE_RIGHT));
assertFalse(r1.equals(r2));
r2.setDefaultNegativeItemLabelPosition(new ItemLabelPosition(
ItemLabelAnchor.INSIDE10, TextAnchor.BASELINE_RIGHT));
assertEquals(r1, r2);
// itemLabelAnchorOffset
r1.setItemLabelAnchorOffset(3.0);
assertFalse(r1.equals(r2));
r2.setItemLabelAnchorOffset(3.0);
assertEquals(r1, r2);
// createEntitiesList;
r1.setSeriesCreateEntities(0, Boolean.TRUE);
assertFalse(r1.equals(r2));
r2.setSeriesCreateEntities(0, Boolean.TRUE);
assertEquals(r1, r2);
// baseCreateEntities;
r1.setDefaultCreateEntities(false);
assertFalse(r1.equals(r2));
r2.setDefaultCreateEntities(false);
assertEquals(r1, r2);
// legendShape
r1.setLegendShape(0, new Ellipse2D.Double(1.0, 2.0, 3.0, 4.0));
assertFalse(r1.equals(r2));
r2.setLegendShape(0, new Ellipse2D.Double(1.0, 2.0, 3.0, 4.0));
assertEquals(r1, r2);
// baseLegendShape
r1.setDefaultLegendShape(new Ellipse2D.Double(5.0, 6.0, 7.0, 8.0));
assertFalse(r1.equals(r2));
r2.setDefaultLegendShape(new Ellipse2D.Double(5.0, 6.0, 7.0, 8.0));
assertEquals(r1, r2);
// legendTextFont
r1.setLegendTextFont(0, new Font("Dialog", Font.PLAIN, 7));
assertFalse(r1.equals(r2));
r2.setLegendTextFont(0, new Font("Dialog", Font.PLAIN, 7));
assertEquals(r1, r2);
// baseLegendTextFont
r1.setDefaultLegendTextFont(new Font("Dialog", Font.PLAIN, 7));
assertFalse(r1.equals(r2));
r2.setDefaultLegendTextFont(new Font("Dialog", Font.PLAIN, 7));
assertEquals(r1, r2);
// legendTextPaint
r1.setLegendTextPaint(0, new GradientPaint(1.0f, 2.0f, Color.BLUE,
3.0f, 4.0f, Color.RED));
assertFalse(r1.equals(r2));
r2.setLegendTextPaint(0, new GradientPaint(1.0f, 2.0f, Color.BLUE,
3.0f, 4.0f, Color.RED));
assertEquals(r1, r2);
// baseOutlinePaint
r1.setDefaultLegendTextPaint(new GradientPaint(1.0f, 2.0f, Color.BLUE,
3.0f, 4.0f, Color.RED));
assertFalse(r1.equals(r2));
r2.setDefaultLegendTextPaint(new GradientPaint(1.0f, 2.0f, Color.BLUE,
3.0f, 4.0f, Color.RED));
assertEquals(r1, r2);
}
private static class TestRenderer extends XYLineAndShapeRenderer {
@Override
public void setTreatLegendShapeAsLine(boolean flag) {
super.setTreatLegendShapeAsLine(flag);
}
}
/**
* Check that the treatLegendShapeAsLine flag is included in the equals()
* comparison.
*/
@Test
public void testEquals2() {
TestRenderer r1 = new TestRenderer();
TestRenderer r2 = new TestRenderer();
assertEquals(r1, r2);
r1.setTreatLegendShapeAsLine(true);
assertFalse(r1.equals(r2));
r2.setTreatLegendShapeAsLine(true);
assertEquals(r1, r2);
}
@Test
public void testEquals_ObjectList() {
BarRenderer r1 = new BarRenderer();
r1.setSeriesItemLabelFont(0, new Font(Font.DIALOG, Font.BOLD, 10));
BarRenderer r2 = new BarRenderer();
r2.setSeriesItemLabelFont(0, new Font(Font.DIALOG, Font.BOLD, 10));
assertEquals(r1, r2);
r2.setSeriesItemLabelFont(1, new Font(Font.DIALOG, Font.PLAIN, 5));
assertNotEquals(r1, r2);
}
@Test
public void testEquals_ObjectList2() {
BarRenderer r1 = new BarRenderer();
r1.setLegendTextFont(0, new Font(Font.DIALOG, Font.BOLD, 10));
BarRenderer r2 = new BarRenderer();
r2.setLegendTextFont(0, new Font(Font.DIALOG, Font.BOLD, 10));
assertEquals(r1, r2);
r2.setLegendTextFont(1, new Font(Font.DIALOG, Font.PLAIN, 5));
assertNotEquals(r1, r2);
}
@Test
public void testEquals_ObjectList3() {
BarRenderer r1 = new BarRenderer();
r1.setSeriesPositiveItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));
BarRenderer r2 = new BarRenderer();
r2.setSeriesPositiveItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));
assertEquals(r1, r2);
r2.setSeriesPositiveItemLabelPosition(1, new ItemLabelPosition(ItemLabelAnchor.INSIDE1, TextAnchor.CENTER));
assertNotEquals(r1, r2);
}
@Test
public void testEquals_ObjectList4() {
BarRenderer r1 = new BarRenderer();
r1.setSeriesNegativeItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));
BarRenderer r2 = new BarRenderer();
r2.setSeriesNegativeItemLabelPosition(0, new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));
assertEquals(r1, r2);
r2.setSeriesNegativeItemLabelPosition(1, new ItemLabelPosition(ItemLabelAnchor.INSIDE1, TextAnchor.CENTER));
assertNotEquals(r1, r2);
}
/**
* Confirm that cloning works.
*/
@Test
public void testCloning() throws CloneNotSupportedException {
LineAndShapeRenderer r1 = new LineAndShapeRenderer();
Rectangle2D baseShape = new Rectangle2D.Double(11.0, 12.0, 13.0, 14.0);
r1.setDefaultShape(baseShape);
r1.setDefaultLegendShape(new Rectangle(4, 3, 2, 1));
r1.setDefaultLegendTextFont(new Font("Dialog", Font.PLAIN, 3));
r1.setDefaultLegendTextPaint(new Color(1, 2, 3));
LineAndShapeRenderer r2 = (LineAndShapeRenderer) r1.clone();
assertNotSame(r1, r2);
assertSame(r1.getClass(), r2.getClass());
assertEquals(r1, r2);
r1.setSeriesVisible(0, Boolean.FALSE);
assertFalse(r1.equals(r2));
r2.setSeriesVisible(0, Boolean.FALSE);
assertEquals(r1, r2);
r1.setSeriesVisibleInLegend(0, Boolean.FALSE);
assertFalse(r1.equals(r2));
r2.setSeriesVisibleInLegend(0, Boolean.FALSE);
assertEquals(r1, r2);
r1.setSeriesPaint(0, Color.BLACK);
assertFalse(r1.equals(r2));
r2.setSeriesPaint(0, Color.BLACK);
assertEquals(r1, r2);
r1.setSeriesFillPaint(0, Color.yellow);
assertFalse(r1.equals(r2));
r2.setSeriesFillPaint(0, Color.yellow);
assertEquals(r1, r2);
r1.setSeriesOutlinePaint(0, Color.yellow);
assertFalse(r1.equals(r2));
r2.setSeriesOutlinePaint(0, Color.yellow);
assertEquals(r1, r2);
r1.setSeriesStroke(0, new BasicStroke(2.2f));
assertFalse(r1.equals(r2));
r2.setSeriesStroke(0, new BasicStroke(2.2f));
assertEquals(r1, r2);
r1.setSeriesOutlineStroke(0, new BasicStroke(2.2f));
assertFalse(r1.equals(r2));
r2.setSeriesOutlineStroke(0, new BasicStroke(2.2f));
assertEquals(r1, r2);
baseShape.setRect(4.0, 3.0, 2.0, 1.0);
assertFalse(r1.equals(r2));
r2.setDefaultShape(new Rectangle2D.Double(4.0, 3.0, 2.0, 1.0));
assertEquals(r1, r2);
r1.setSeriesShape(0, new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0));
assertFalse(r1.equals(r2));
r2.setSeriesShape(0, new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0));
assertEquals(r1, r2);
r1.setSeriesItemLabelsVisible(0, Boolean.TRUE);
assertFalse(r1.equals(r2));
r2.setSeriesItemLabelsVisible(0, Boolean.TRUE);
assertEquals(r1, r2);
r1.setSeriesItemLabelPaint(0, Color.RED);
assertFalse(r1.equals(r2));
r2.setSeriesItemLabelPaint(0, Color.RED);
assertEquals(r1, r2);
r1.setSeriesPositiveItemLabelPosition(0, new ItemLabelPosition());
assertFalse(r1.equals(r2));
r2.setSeriesPositiveItemLabelPosition(0, new ItemLabelPosition());
assertEquals(r1, r2);
r1.setSeriesNegativeItemLabelPosition(0, new ItemLabelPosition());
assertFalse(r1.equals(r2));
r2.setSeriesNegativeItemLabelPosition(0, new ItemLabelPosition());
assertEquals(r1, r2);
r1.setSeriesCreateEntities(0, Boolean.FALSE);
assertFalse(r1.equals(r2));
r2.setSeriesCreateEntities(0, Boolean.FALSE);
assertEquals(r1, r2);
r1.setLegendShape(0, new Rectangle(9, 7, 3, 4));
assertFalse(r1.equals(r2));
r2.setLegendShape(0, new Rectangle(9, 7, 3, 4));
assertEquals(r1, r2);
r1.setDefaultLegendShape(new Rectangle(3, 4, 1, 5));
assertFalse(r1.equals(r2));
r2.setDefaultLegendShape(new Rectangle(3, 4, 1, 5));
assertEquals(r1, r2);
r1.setLegendTextFont(1, new Font("Dialog", Font.PLAIN, 33));
assertFalse(r1.equals(r2));
r2.setLegendTextFont(1, new Font("Dialog", Font.PLAIN, 33));
assertEquals(r1, r2);
r1.setDefaultLegendTextFont(new Font("Dialog", Font.PLAIN, 11));
assertFalse(r1.equals(r2));
r2.setDefaultLegendTextFont(new Font("Dialog", Font.PLAIN, 11));
assertEquals(r1, r2);
r1.setLegendTextPaint(3, Color.RED);
assertFalse(r1.equals(r2));
r2.setLegendTextPaint(3, Color.RED);
assertEquals(r1, r2);
r1.setDefaultLegendTextPaint(Color.green);
assertFalse(r1.equals(r2));
r2.setDefaultLegendTextPaint(Color.green);
assertEquals(r1, r2);
}
/**
* A utility class for listening to changes to a renderer.
*/
static class MyRendererChangeListener implements RendererChangeListener {
/** The last event received. */
public RendererChangeEvent lastEvent;
/**
* Creates a new instance.
*/
public MyRendererChangeListener() {
this.lastEvent = null;
}
@Override
public void rendererChanged(RendererChangeEvent event) {
this.lastEvent = event;
}
}
/**
* A check for cloning.
*/
@Test
public void testCloning2() throws CloneNotSupportedException {
LineAndShapeRenderer r1 = new LineAndShapeRenderer();
r1.setDefaultPaint(Color.BLUE);
r1.setDefaultLegendTextPaint(new GradientPaint(1.0f, 2.0f, Color.RED,
3.0f, 4.0f, Color.BLUE));
LineAndShapeRenderer r2 = (LineAndShapeRenderer) r1.clone();
assertNotSame(r1, r2);
assertSame(r1.getClass(), r2.getClass());
assertEquals(r1, r2);
MyRendererChangeListener listener = new MyRendererChangeListener();
r2.addChangeListener(listener);
r2.setDefaultPaint(Color.RED);
assertSame(listener.lastEvent.getRenderer(), r2);
assertFalse(r1.hasListener(listener));
}
/**
* Tests each setter method to ensure that it sends an event notification.
*/
@Test
public void testEventNotification() {
RendererChangeDetector detector = new RendererChangeDetector();
BarRenderer r1 = new BarRenderer(); // have to use a subclass of
// AbstractRenderer
r1.addChangeListener(detector);
// PAINT
detector.setNotified(false);
r1.setSeriesPaint(0, Color.RED);
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setDefaultPaint(Color.RED);
assertTrue(detector.getNotified());
// OUTLINE PAINT
detector.setNotified(false);
r1.setSeriesOutlinePaint(0, Color.RED);
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setDefaultOutlinePaint(Color.RED);
assertTrue(detector.getNotified());
// STROKE
detector.setNotified(false);
r1.setSeriesStroke(0, new BasicStroke(1.0f));
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setDefaultStroke(new BasicStroke(1.0f));
assertTrue(detector.getNotified());
// OUTLINE STROKE
detector.setNotified(false);
r1.setSeriesOutlineStroke(0, new BasicStroke(1.0f));
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setDefaultOutlineStroke(new BasicStroke(1.0f));
assertTrue(detector.getNotified());
// SHAPE
detector.setNotified(false);
r1.setSeriesShape(0, new Rectangle2D.Float());
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setDefaultShape(new Rectangle2D.Float());
assertTrue(detector.getNotified());
// ITEM_LABELS_VISIBLE
detector.setNotified(false);
r1.setSeriesItemLabelsVisible(0, Boolean.TRUE);
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setDefaultItemLabelsVisible(Boolean.TRUE);
assertTrue(detector.getNotified());
// ITEM_LABEL_FONT
detector.setNotified(false);
r1.setSeriesItemLabelFont(0, new Font("Serif", Font.PLAIN, 12));
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setDefaultItemLabelFont(new Font("Serif", Font.PLAIN, 12));
assertTrue(detector.getNotified());
// ITEM_LABEL_PAINT
detector.setNotified(false);
r1.setSeriesItemLabelPaint(0, Color.BLUE);
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setDefaultItemLabelPaint(Color.BLUE);
assertTrue(detector.getNotified());
// POSITIVE ITEM LABEL POSITION
detector.setNotified(false);
r1.setSeriesPositiveItemLabelPosition(0, new ItemLabelPosition(
ItemLabelAnchor.CENTER, TextAnchor.CENTER));
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setDefaultPositiveItemLabelPosition(new ItemLabelPosition(
ItemLabelAnchor.CENTER, TextAnchor.CENTER));
assertTrue(detector.getNotified());
// NEGATIVE ITEM LABEL ANCHOR
detector.setNotified(false);
r1.setSeriesNegativeItemLabelPosition(0, new ItemLabelPosition(
ItemLabelAnchor.CENTER, TextAnchor.CENTER));
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setDefaultNegativeItemLabelPosition(new ItemLabelPosition(
ItemLabelAnchor.CENTER, TextAnchor.CENTER));
assertTrue(detector.getNotified());
}
/**
* Serialize an instance, restore it, and check for equality. In addition,
* test for a bug that was reported where the listener list is 'null' after
* deserialization.
*/
@Test
public void testSerialization() {
BarRenderer r1 = new BarRenderer();
r1.setDefaultLegendTextFont(new Font("Dialog", Font.PLAIN, 4));
r1.setDefaultLegendTextPaint(new GradientPaint(1.0f, 2.0f, Color.RED,
3.0f, 4.0f, Color.green));
r1.setDefaultLegendShape(new Line2D.Double(1.0, 2.0, 3.0, 4.0));
BarRenderer r2 = (BarRenderer) TestUtils.serialised(r1);
assertEquals(r1, r2);
r2.notifyListeners(new RendererChangeEvent(r2));
}
/**
* Some checks for the autoPopulate flag default values.
*/
@Test
public void testAutoPopulateFlagDefaults() {
BarRenderer r = new BarRenderer();
assertEquals(true, r.getAutoPopulateSeriesPaint());
assertEquals(false, r.getAutoPopulateSeriesFillPaint());
assertEquals(false, r.getAutoPopulateSeriesOutlinePaint());
assertEquals(true, r.getAutoPopulateSeriesStroke());
assertEquals(false, r.getAutoPopulateSeriesOutlineStroke());
assertEquals(true, r.getAutoPopulateSeriesShape());
}
/**
* Some checks for the paint lookup mechanism.
*/
@Test
public void testPaintLookup() {
BarRenderer r = new BarRenderer();
assertEquals(Color.BLUE, r.getDefaultPaint());
// first check that autoPopulate==false works as expected
r.setAutoPopulateSeriesPaint(false);
assertEquals(Color.BLUE, r.lookupSeriesPaint(0));
assertNull(r.getSeriesPaint(0));
// now check autoPopulate==true
r.setAutoPopulateSeriesPaint(true);
CategoryPlot plot = new CategoryPlot(null, new CategoryAxis(
"Category"), new NumberAxis("Value"), r);
assertEquals(Colors.getDefaultColors()[0], r.lookupSeriesPaint(0));
assertNotNull(r.getSeriesPaint(0));
}
/**
* Some checks for the fill paint lookup mechanism.
*/
@Test
public void testFillPaintLookup() {
BarRenderer r = new BarRenderer();
assertEquals(Color.WHITE, r.getDefaultFillPaint());
// first check that autoPopulate==false works as expected
r.setAutoPopulateSeriesFillPaint(false);
assertEquals(Color.WHITE, r.lookupSeriesFillPaint(0));
assertNull(r.getSeriesFillPaint(0));
// now check autoPopulate==true
r.setAutoPopulateSeriesFillPaint(true);
/*CategoryPlot plot =*/ new CategoryPlot(null, new CategoryAxis(
"Category"), new NumberAxis("Value"), r);
assertEquals(DefaultDrawingSupplier.DEFAULT_FILL_PAINT_SEQUENCE[0],
r.lookupSeriesFillPaint(0));
assertNotNull(r.getSeriesFillPaint(0));
}
/**
* Some checks for the outline paint lookup mechanism.
*/
@Test
public void testOutlinePaintLookup() {
BarRenderer r = new BarRenderer();
assertEquals(Color.gray, r.getDefaultOutlinePaint());
// first check that autoPopulate==false works as expected
r.setAutoPopulateSeriesOutlinePaint(false);
assertEquals(Color.gray, r.lookupSeriesOutlinePaint(0));
assertNull(r.getSeriesOutlinePaint(0));
// now check autoPopulate==true
r.setAutoPopulateSeriesOutlinePaint(true);
/*CategoryPlot plot =*/ new CategoryPlot(null, new CategoryAxis(
"Category"), new NumberAxis("Value"), r);
assertEquals(DefaultDrawingSupplier.DEFAULT_OUTLINE_PAINT_SEQUENCE[0],
r.lookupSeriesOutlinePaint(0));
assertNotNull(r.getSeriesOutlinePaint(0));
}
}