📄 xyplottests.java
字号:
plot1.setWeight(3); assertFalse(plot1.equals(plot2)); plot2.setWeight(3); assertTrue(plot1.equals(plot2)); } /** * Confirm that basic cloning works. */ public void testCloning() { XYPlot p1 = new XYPlot(); XYPlot p2 = null; try { p2 = (XYPlot) p1.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); System.err.println("XYPlotTests.testCloning: failed to clone."); } assertTrue(p1 != p2); assertTrue(p1.getClass() == p2.getClass()); assertTrue(p1.equals(p2)); } /** * Tests cloning for a more complex plot. */ public void testCloning2() { XYPlot p1 = new XYPlot( null, new NumberAxis("Domain Axis"), new NumberAxis("Range Axis"), new StandardXYItemRenderer() ); p1.setRangeAxis(1, new NumberAxis("Range Axis 2")); p1.setRenderer(1, new XYBarRenderer()); XYPlot p2 = null; try { p2 = (XYPlot) p1.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); System.err.println("Failed to clone."); } assertTrue(p1 != p2); assertTrue(p1.getClass() == p2.getClass()); assertTrue(p1.equals(p2)); } /** * Tests the independence of the clones. */ public void testCloneIndependence() { 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 = null; try { p2 = (XYPlot) p1.clone(); } catch (CloneNotSupportedException e) { e.printStackTrace(); System.err.println("Failed to 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.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.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) { System.out.println(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) { System.out.println(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) { System.out.println(e.toString()); } boolean passed = true; try { chart2.createBufferedImage(300, 200); } catch (Exception e) { passed = false; e.printStackTrace(); } assertTrue(passed); } /** * 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, SerialDate.MARCH, 2002), 12353.3); series1.add(new Day(2, SerialDate.MARCH, 2002), 13734.4); series1.add(new Day(3, SerialDate.MARCH, 2002), 14525.3); series1.add(new Day(4, SerialDate.MARCH, 2002), 13984.3); series1.add(new Day(5, SerialDate.MARCH, 2002), 12999.4); series1.add(new Day(6, SerialDate.MARCH, 2002), 14274.3); series1.add(new Day(7, SerialDate.MARCH, 2002), 15943.5); series1.add(new Day(8, SerialDate.MARCH, 2002), 14845.3); series1.add(new Day(9, SerialDate.MARCH, 2002), 14645.4); series1.add(new Day(10, SerialDate.MARCH, 2002), 16234.6); series1.add(new Day(11, SerialDate.MARCH, 2002), 17232.3); series1.add(new Day(12, SerialDate.MARCH, 2002), 14232.2); series1.add(new Day(13, SerialDate.MARCH, 2002), 13102.2); series1.add(new Day(14, SerialDate.MARCH, 2002), 14230.2); series1.add(new Day(15, SerialDate.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; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -