📄 xyplottests.java
字号:
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.
*/
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.
*/
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 = null;
try {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
ObjectOutput out = new ObjectOutputStream(buffer);
out.writeObject(p1);
out.close();
ObjectInput in = new ObjectInputStream(
new ByteArrayInputStream(buffer.toByteArray())
);
p2 = (XYPlot) in.readObject();
in.close();
}
catch (Exception e) {
fail(e.toString());
}
assertEquals(p1, p2);
}
/**
* Serialize an instance, restore it, and check for equality. This test
* uses a {@link DateAxis} and a {@link StandardXYToolTipGenerator}.
*/
public void testSerialization2() {
IntervalXYDataset data1 = createDataset1();
XYItemRenderer renderer1 = new XYBarRenderer(0.20);
renderer1.setToolTipGenerator(
StandardXYToolTipGenerator.getTimeSeriesInstance()
);
XYPlot p1 = new XYPlot(data1, new DateAxis("Date"), null, renderer1);
XYPlot p2 = null;
try {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
ObjectOutput out = new ObjectOutputStream(buffer);
out.writeObject(p1);
out.close();
ObjectInput in = new ObjectInputStream(
new ByteArrayInputStream(buffer.toByteArray())
);
p2 = (XYPlot) in.readObject();
in.close();
}
catch (Exception e) {
fail(e.toString());
}
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).
*/
public void testSerialization3() {
XYSeriesCollection dataset = new XYSeriesCollection();
JFreeChart chart = ChartFactory.createXYLineChart(
"Test Chart",
"Domain Axis",
"Range Axis",
dataset,
PlotOrientation.VERTICAL,
true,
true,
false
);
JFreeChart chart2 = null;
// serialize and deserialize the chart....
try {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
ObjectOutput out = new ObjectOutputStream(buffer);
out.writeObject(chart);
out.close();
ObjectInput in = new ObjectInputStream(
new ByteArrayInputStream(buffer.toByteArray())
);
chart2 = (JFreeChart) in.readObject();
in.close();
}
catch (Exception e) {
fail(e.toString());
}
boolean b = chart.equals(chart2);
System.out.println(b);
assertEquals(chart, chart2);
boolean passed = true;
try {
chart2.createBufferedImage(300, 200);
}
catch (Exception e) {
passed = false;
e.printStackTrace();
}
assertTrue(passed);
}
/**
* A test to reproduce a bug in serialization: the domain and/or range
* markers for a plot are not being serialized.
*/
public void testSerialization4() {
XYSeriesCollection dataset = new XYSeriesCollection();
JFreeChart chart = ChartFactory.createXYLineChart(
"Test Chart",
"Domain Axis",
"Range Axis",
dataset,
PlotOrientation.VERTICAL,
true,
true,
false
);
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 = null;
// serialize and deserialize the chart....
try {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
ObjectOutput out = new ObjectOutputStream(buffer);
out.writeObject(chart);
out.close();
ObjectInput in = new ObjectInputStream(
new ByteArrayInputStream(buffer.toByteArray())
);
chart2 = (JFreeChart) in.readObject();
in.close();
}
catch (Exception e) {
fail(e.toString());
}
assertEquals(chart, chart2);
boolean passed = true;
try {
chart2.createBufferedImage(300, 200);
}
catch (Exception e) {
passed = false;
e.printStackTrace();
}
assertTrue(passed);
}
/**
* 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.
*/
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 = null;
try {
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
ObjectOutput out = new ObjectOutputStream(buffer);
out.writeObject(p1);
out.close();
ObjectInput in = new ObjectInputStream(
new ByteArrayInputStream(buffer.toByteArray())
);
p2 = (XYPlot) in.readObject();
in.close();
}
catch (Exception e) {
fail(e.toString());
}
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.
*/
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.
*/
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);
collection.setDomainIsPointsInTime(false);
// this tells the time series collection that
// we intend the data to represent time periods
// NOT points in time. This is required when
// determining the min/max values in the
// dataset's domain.
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.
*/
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);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -