📄 abstractrenderertests.java
字号:
/* ===========================================================
* JFreeChart : a free chart library for the Java(tm) platform
* ===========================================================
*
* (C) Copyright 2000-2004, 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., 59 Temple Place, Suite 330,
* Boston, MA 02111-1307, USA.
*
* [Java is a trademark or registered trademark of Sun Microsystems, Inc.
* in the United States and other countries.]
*
* --------------------------
* AbstractRendererTests.java
* --------------------------
* (C) Copyright 2003, 2004, by Object Refinery Limited and Contributors.
*
* Original Author: David Gilbert (for Object Refinery Limited);
* Contributor(s): -;
*
* $Id: AbstractRendererTests.java,v 1.1 2004/08/31 14:45:33 mungady Exp $
*
* Changes
* -------
* 23-Oct-2003 : Version 1 (DG);
* 01-Mar-2004 : Added serialization test (DG);
*
*/
package org.jfree.chart.renderer.junit;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Font;
import java.awt.Shape;
import java.awt.Stroke;
import java.awt.geom.Rectangle2D;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.jfree.chart.event.RendererChangeEvent;
import org.jfree.chart.labels.ItemLabelAnchor;
import org.jfree.chart.labels.ItemLabelPosition;
import org.jfree.chart.renderer.AbstractRenderer;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.ui.TextAnchor;
/**
* Tests for the {@link AbstractRenderer} class.
*/
public class AbstractRendererTests extends TestCase {
/**
* Returns the tests as a test suite.
*
* @return The test suite.
*/
public static Test suite() {
return new TestSuite(AbstractRendererTests.class);
}
/**
* Constructs a new set of tests.
*
* @param name the name of the tests.
*/
public AbstractRendererTests(String name) {
super(name);
}
/**
* Test that setting the series visibility for ALL series does in fact work.
*/
public void testSetSeriesVisible() {
BarRenderer r = new BarRenderer();
r.setSeriesVisible(new Boolean(true));
assertTrue(r.getItemVisible(0, 0));
}
/**
* Test that setting the paint for ALL series does in fact work.
*/
public void testSetPaint() {
BarRenderer r = new BarRenderer();
r.setPaint(Color.orange);
assertEquals(Color.orange, r.getItemPaint(0, 0));
}
/**
* Test that setting the outline paint for ALL series does in fact work.
*/
public void testSetOutlinePaint() {
BarRenderer r = new BarRenderer();
r.setOutlinePaint(Color.orange);
assertEquals(Color.orange, r.getItemOutlinePaint(0, 0));
}
/**
* Test that setting the stroke for ALL series does in fact work.
*/
public void testSetStroke() {
BarRenderer r = new BarRenderer();
Stroke s = new BasicStroke(10.0f);
r.setStroke(s);
assertEquals(s, r.getItemStroke(0, 0));
}
/**
* Test that setting the outline stroke for ALL series does in fact work.
*/
public void testSetOutlineStroke() {
BarRenderer r = new BarRenderer();
Stroke s = new BasicStroke(10.0f);
r.setOutlineStroke(s);
assertEquals(s, r.getItemOutlineStroke(0, 0));
}
/**
* Test that setting the shape for ALL series does in fact work.
*/
public void testSetShape() {
BarRenderer r = new BarRenderer();
Shape s = new Rectangle2D.Double(1.0, 2.0, 3.0, 4.0);
r.setShape(s);
assertEquals(s, r.getItemShape(0, 0));
}
/**
* Test that setting the item label visibility for ALL series does in fact work.
*/
public void testSetItemLabelsVisible() {
BarRenderer r = new BarRenderer();
r.setItemLabelsVisible(true);
assertTrue(r.isItemLabelVisible(0, 0));
}
/**
* Test that setting the font for ALL series does in fact work (it was broken at
* one point).
*/
public void testSetItemLabelFont() {
BarRenderer r = new BarRenderer();
r.setItemLabelFont(new Font("SansSerif", Font.PLAIN, 33));
assertEquals(new Font("SansSerif", Font.PLAIN, 33), r.getItemLabelFont(0, 0));
}
/**
* Test that setting the paint for ALL series does in fact work (it was broken at
* one point).
*/
public void testSetItemLabelPaint() {
BarRenderer r = new BarRenderer();
r.setItemLabelPaint(Color.green);
assertEquals(Color.green, r.getItemLabelPaint(0, 0));
}
/**
* Test that setting the positive item label position for ALL series does in fact work.
*/
public void testSetPositiveItemLabelPosition() {
BarRenderer r = new BarRenderer();
r.setPositiveItemLabelPosition(
new ItemLabelPosition(ItemLabelAnchor.INSIDE1, TextAnchor.BASELINE_LEFT)
);
assertEquals(
new ItemLabelPosition(ItemLabelAnchor.INSIDE1, TextAnchor.BASELINE_LEFT),
r.getPositiveItemLabelPosition(0, 0)
);
}
/**
* Test that setting the negative item label position for ALL series does in fact work.
*/
public void testSetNegativeItemLabelPosition() {
BarRenderer r = new BarRenderer();
r.setNegativeItemLabelPosition(
new ItemLabelPosition(ItemLabelAnchor.INSIDE1, TextAnchor.BASELINE_LEFT)
);
assertEquals(
new ItemLabelPosition(ItemLabelAnchor.INSIDE1, TextAnchor.BASELINE_LEFT),
r.getNegativeItemLabelPosition(0, 0)
);
}
/**
* Tests each setter method to ensure that it sends an event notification.
*/
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.setPaint(Color.red);
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setSeriesPaint(0, Color.red);
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setBasePaint(Color.red);
assertTrue(detector.getNotified());
// OUTLINE PAINT
detector.setNotified(false);
r1.setOutlinePaint(Color.red);
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setSeriesOutlinePaint(0, Color.red);
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setBaseOutlinePaint(Color.red);
assertTrue(detector.getNotified());
// STROKE
detector.setNotified(false);
r1.setStroke(new BasicStroke(1.0f));
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setSeriesStroke(0, new BasicStroke(1.0f));
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setBaseStroke(new BasicStroke(1.0f));
assertTrue(detector.getNotified());
// OUTLINE STROKE
detector.setNotified(false);
r1.setOutlineStroke(new BasicStroke(1.0f));
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setSeriesOutlineStroke(0, new BasicStroke(1.0f));
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setBaseOutlineStroke(new BasicStroke(1.0f));
assertTrue(detector.getNotified());
// SHAPE
detector.setNotified(false);
r1.setShape(new Rectangle2D.Float());
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setSeriesShape(0, new Rectangle2D.Float());
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setBaseShape(new Rectangle2D.Float());
assertTrue(detector.getNotified());
// ITEM_LABELS_VISIBLE
detector.setNotified(false);
r1.setItemLabelsVisible(Boolean.TRUE);
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setSeriesItemLabelsVisible(0, Boolean.TRUE);
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setBaseItemLabelsVisible(Boolean.TRUE);
assertTrue(detector.getNotified());
// ITEM_LABEL_FONT
detector.setNotified(false);
r1.setItemLabelFont(new Font("Serif", Font.PLAIN, 12));
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setSeriesItemLabelFont(0, new Font("Serif", Font.PLAIN, 12));
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setBaseItemLabelFont(new Font("Serif", Font.PLAIN, 12));
assertTrue(detector.getNotified());
// ITEM_LABEL_PAINT
detector.setNotified(false);
r1.setItemLabelPaint(Color.blue);
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setSeriesItemLabelPaint(0, Color.blue);
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setBaseItemLabelPaint(Color.blue);
assertTrue(detector.getNotified());
// POSITIVE ITEM LABEL POSITION
detector.setNotified(false);
r1.setPositiveItemLabelPosition(
new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER)
);
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setSeriesPositiveItemLabelPosition(
0, new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER)
);
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setBasePositiveItemLabelPosition(
new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER)
);
assertTrue(detector.getNotified());
// NEGATIVE ITEM LABEL ANCHOR
detector.setNotified(false);
r1.setNegativeItemLabelPosition(
new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER)
);
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setSeriesNegativeItemLabelPosition(
0, new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER)
);
assertTrue(detector.getNotified());
detector.setNotified(false);
r1.setBaseNegativeItemLabelPosition(
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.
*/
public void testSerialization() {
BarRenderer r1 = new BarRenderer();
BarRenderer r2 = null;
try {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
ObjectOutput out = new ObjectOutputStream(buffer);
out.writeObject(r1);
out.close();
ObjectInput in = new ObjectInputStream(new ByteArrayInputStream(buffer.toByteArray()));
r2 = (BarRenderer) in.readObject();
in.close();
}
catch (Exception e) {
System.out.println(e.toString());
}
assertEquals(r1, r2);
try {
r2.notifyListeners(new RendererChangeEvent(r2));
}
catch (NullPointerException e) {
assertTrue(false); // failed
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -