001: /* ===========================================================
002: * JFreeChart : a free chart library for the Java(tm) platform
003: * ===========================================================
004: *
005: * (C) Copyright 2000-2007, by Object Refinery Limited and Contributors.
006: *
007: * Project Info: http://www.jfree.org/jfreechart/index.html
008: *
009: * This library is free software; you can redistribute it and/or modify it
010: * under the terms of the GNU Lesser General Public License as published by
011: * the Free Software Foundation; either version 2.1 of the License, or
012: * (at your option) any later version.
013: *
014: * This library is distributed in the hope that it will be useful, but
015: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
016: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
017: * License for more details.
018: *
019: * You should have received a copy of the GNU Lesser General Public
020: * License along with this library; if not, write to the Free Software
021: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
022: * USA.
023: *
024: * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
025: * in the United States and other countries.]
026: *
027: * ---------------------------
028: * YIntervalRendererTests.java
029: * ---------------------------
030: * (C) Copyright 2003-2007, by Object Refinery Limited and Contributors.
031: *
032: * Original Author: David Gilbert (for Object Refinery Limited);
033: * Contributor(s): -;
034: *
035: * $Id: YIntervalRendererTests.java,v 1.1.2.3 2007/05/17 16:23:31 mungady Exp $
036: *
037: * Changes
038: * -------
039: * 25-Mar-2003 : Version 1 (DG);
040: * 20-Feb-2007 : Extended the testEquals() checks (DG);
041: * 17-May-2007 : Added testGetLegendItemSeriesIndex() (DG);
042: *
043: */
044:
045: package org.jfree.chart.renderer.xy.junit;
046:
047: import java.io.ByteArrayInputStream;
048: import java.io.ByteArrayOutputStream;
049: import java.io.ObjectInput;
050: import java.io.ObjectInputStream;
051: import java.io.ObjectOutput;
052: import java.io.ObjectOutputStream;
053:
054: import junit.framework.Test;
055: import junit.framework.TestCase;
056: import junit.framework.TestSuite;
057:
058: import org.jfree.chart.JFreeChart;
059: import org.jfree.chart.LegendItem;
060: import org.jfree.chart.annotations.XYTextAnnotation;
061: import org.jfree.chart.axis.NumberAxis;
062: import org.jfree.chart.labels.StandardXYItemLabelGenerator;
063: import org.jfree.chart.labels.StandardXYSeriesLabelGenerator;
064: import org.jfree.chart.labels.StandardXYToolTipGenerator;
065: import org.jfree.chart.plot.XYPlot;
066: import org.jfree.chart.renderer.xy.YIntervalRenderer;
067: import org.jfree.chart.urls.StandardXYURLGenerator;
068: import org.jfree.data.xy.YIntervalSeries;
069: import org.jfree.data.xy.YIntervalSeriesCollection;
070: import org.jfree.ui.Layer;
071:
072: /**
073: * Tests for the {@link YIntervalRenderer} class.
074: */
075: public class YIntervalRendererTests extends TestCase {
076:
077: /**
078: * Returns the tests as a test suite.
079: *
080: * @return The test suite.
081: */
082: public static Test suite() {
083: return new TestSuite(YIntervalRendererTests.class);
084: }
085:
086: /**
087: * Constructs a new set of tests.
088: *
089: * @param name the name of the tests.
090: */
091: public YIntervalRendererTests(String name) {
092: super (name);
093: }
094:
095: /**
096: * Check that the equals() method distinguishes all fields.
097: */
098: public void testEquals() {
099: YIntervalRenderer r1 = new YIntervalRenderer();
100: YIntervalRenderer r2 = new YIntervalRenderer();
101: assertEquals(r1, r2);
102:
103: // the following fields are inherited from the AbstractXYItemRenderer
104: r1.setItemLabelGenerator(new StandardXYItemLabelGenerator());
105: assertFalse(r1.equals(r2));
106: r2.setItemLabelGenerator(new StandardXYItemLabelGenerator());
107: assertTrue(r1.equals(r2));
108:
109: r1.setSeriesItemLabelGenerator(0,
110: new StandardXYItemLabelGenerator());
111: assertFalse(r1.equals(r2));
112: r2.setSeriesItemLabelGenerator(0,
113: new StandardXYItemLabelGenerator());
114: assertTrue(r1.equals(r2));
115:
116: r1
117: .setBaseItemLabelGenerator(new StandardXYItemLabelGenerator());
118: assertFalse(r1.equals(r2));
119: r2
120: .setBaseItemLabelGenerator(new StandardXYItemLabelGenerator());
121: assertTrue(r1.equals(r2));
122:
123: r1.setToolTipGenerator(new StandardXYToolTipGenerator());
124: assertFalse(r1.equals(r2));
125: r2.setToolTipGenerator(new StandardXYToolTipGenerator());
126: assertTrue(r1.equals(r2));
127:
128: r1.setSeriesToolTipGenerator(0,
129: new StandardXYToolTipGenerator());
130: assertFalse(r1.equals(r2));
131: r2.setSeriesToolTipGenerator(0,
132: new StandardXYToolTipGenerator());
133: assertTrue(r1.equals(r2));
134:
135: r1.setBaseToolTipGenerator(new StandardXYToolTipGenerator());
136: assertFalse(r1.equals(r2));
137: r2.setBaseToolTipGenerator(new StandardXYToolTipGenerator());
138: assertTrue(r1.equals(r2));
139:
140: r1.setURLGenerator(new StandardXYURLGenerator());
141: assertFalse(r1.equals(r2));
142: r2.setURLGenerator(new StandardXYURLGenerator());
143: assertTrue(r1.equals(r2));
144:
145: r1.addAnnotation(new XYTextAnnotation("X", 1.0, 2.0),
146: Layer.FOREGROUND);
147: assertFalse(r1.equals(r2));
148: r2.addAnnotation(new XYTextAnnotation("X", 1.0, 2.0),
149: Layer.FOREGROUND);
150: assertTrue(r1.equals(r2));
151:
152: r1.addAnnotation(new XYTextAnnotation("X", 1.0, 2.0),
153: Layer.BACKGROUND);
154: assertFalse(r1.equals(r2));
155: r2.addAnnotation(new XYTextAnnotation("X", 1.0, 2.0),
156: Layer.BACKGROUND);
157: assertTrue(r1.equals(r2));
158:
159: r1.setDefaultEntityRadius(99);
160: assertFalse(r1.equals(r2));
161: r2.setDefaultEntityRadius(99);
162: assertTrue(r1.equals(r2));
163:
164: r1
165: .setLegendItemLabelGenerator(new StandardXYSeriesLabelGenerator(
166: "{0} {1}"));
167: assertFalse(r1.equals(r2));
168: r2
169: .setLegendItemLabelGenerator(new StandardXYSeriesLabelGenerator(
170: "{0} {1}"));
171: assertTrue(r1.equals(r2));
172:
173: r1
174: .setLegendItemToolTipGenerator(new StandardXYSeriesLabelGenerator());
175: assertFalse(r1.equals(r2));
176: r2
177: .setLegendItemToolTipGenerator(new StandardXYSeriesLabelGenerator());
178: assertTrue(r1.equals(r2));
179:
180: r1
181: .setLegendItemURLGenerator(new StandardXYSeriesLabelGenerator());
182: assertFalse(r1.equals(r2));
183: r2
184: .setLegendItemURLGenerator(new StandardXYSeriesLabelGenerator());
185: assertTrue(r1.equals(r2));
186: }
187:
188: /**
189: * Two objects that are equal are required to return the same hashCode.
190: */
191: public void testHashcode() {
192: YIntervalRenderer r1 = new YIntervalRenderer();
193: YIntervalRenderer r2 = new YIntervalRenderer();
194: assertTrue(r1.equals(r2));
195: int h1 = r1.hashCode();
196: int h2 = r2.hashCode();
197: assertEquals(h1, h2);
198: }
199:
200: /**
201: * Confirm that cloning works.
202: */
203: public void testCloning() {
204: YIntervalRenderer r1 = new YIntervalRenderer();
205: YIntervalRenderer r2 = null;
206: try {
207: r2 = (YIntervalRenderer) r1.clone();
208: } catch (CloneNotSupportedException e) {
209: e.printStackTrace();
210: }
211: assertTrue(r1 != r2);
212: assertTrue(r1.getClass() == r2.getClass());
213: assertTrue(r1.equals(r2));
214:
215: // check independence
216: r1.setSeriesItemLabelGenerator(0,
217: new StandardXYItemLabelGenerator());
218: assertFalse(r1.equals(r2));
219: r2.setSeriesItemLabelGenerator(0,
220: new StandardXYItemLabelGenerator());
221: assertTrue(r1.equals(r2));
222:
223: r1.setSeriesToolTipGenerator(0,
224: new StandardXYToolTipGenerator());
225: assertFalse(r1.equals(r2));
226: r2.setSeriesToolTipGenerator(0,
227: new StandardXYToolTipGenerator());
228: assertTrue(r1.equals(r2));
229:
230: r1.addAnnotation(new XYTextAnnotation("ABC", 1.0, 2.0),
231: Layer.FOREGROUND);
232: assertFalse(r1.equals(r2));
233: r2.addAnnotation(new XYTextAnnotation("ABC", 1.0, 2.0),
234: Layer.FOREGROUND);
235: assertTrue(r1.equals(r2));
236:
237: r1.addAnnotation(new XYTextAnnotation("ABC", 1.0, 2.0),
238: Layer.BACKGROUND);
239: assertFalse(r1.equals(r2));
240: r2.addAnnotation(new XYTextAnnotation("ABC", 1.0, 2.0),
241: Layer.BACKGROUND);
242: assertTrue(r1.equals(r2));
243:
244: }
245:
246: /**
247: * Serialize an instance, restore it, and check for equality.
248: */
249: public void testSerialization() {
250:
251: YIntervalRenderer r1 = new YIntervalRenderer();
252: YIntervalRenderer r2 = null;
253:
254: try {
255: ByteArrayOutputStream buffer = new ByteArrayOutputStream();
256: ObjectOutput out = new ObjectOutputStream(buffer);
257: out.writeObject(r1);
258: out.close();
259:
260: ObjectInput in = new ObjectInputStream(
261: new ByteArrayInputStream(buffer.toByteArray()));
262: r2 = (YIntervalRenderer) in.readObject();
263: in.close();
264: } catch (Exception e) {
265: e.printStackTrace();
266: }
267: assertEquals(r1, r2);
268:
269: }
270:
271: /**
272: * A check for the datasetIndex and seriesIndex fields in the LegendItem
273: * returned by the getLegendItem() method.
274: */
275: public void testGetLegendItemSeriesIndex() {
276: YIntervalSeriesCollection d1 = new YIntervalSeriesCollection();
277: YIntervalSeries s1 = new YIntervalSeries("S1");
278: s1.add(1.0, 1.1, 1.2, 1.3);
279: YIntervalSeries s2 = new YIntervalSeries("S2");
280: s2.add(1.0, 1.1, 1.2, 1.3);
281: d1.addSeries(s1);
282: d1.addSeries(s2);
283:
284: YIntervalSeriesCollection d2 = new YIntervalSeriesCollection();
285: YIntervalSeries s3 = new YIntervalSeries("S3");
286: s3.add(1.0, 1.1, 1.2, 1.3);
287: YIntervalSeries s4 = new YIntervalSeries("S4");
288: s4.add(1.0, 1.1, 1.2, 1.3);
289: YIntervalSeries s5 = new YIntervalSeries("S5");
290: s5.add(1.0, 1.1, 1.2, 1.3);
291: d2.addSeries(s3);
292: d2.addSeries(s4);
293: d2.addSeries(s5);
294:
295: YIntervalRenderer r = new YIntervalRenderer();
296: XYPlot plot = new XYPlot(d1, new NumberAxis("x"),
297: new NumberAxis("y"), r);
298: plot.setDataset(1, d2);
299: /*JFreeChart chart =*/new JFreeChart(plot);
300: LegendItem li = r.getLegendItem(1, 2);
301: assertEquals("S5", li.getLabel());
302: assertEquals(1, li.getDatasetIndex());
303: assertEquals(2, li.getSeriesIndex());
304: }
305:
306: }
|