/* =========================================================== * Orson Charts : a 3D chart library for the Java(tm) platform * =========================================================== * * (C)opyright 2013-2016, by Object Refinery Limited. All rights reserved. * * http://www.object-refinery.com/orsoncharts/index.html * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * * [Oracle and Java are registered trademarks of Oracle and/or its affiliates. * Other names may be trademarks of their respective owners.] * * If you do not wish to be bound by the terms of the GPL, an alternative * commercial license can be purchased. For details, please see visit the * Orson Charts home page: * * http://www.object-refinery.com/orsoncharts/index.html * */ package com.orsoncharts; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import org.junit.Test; import java.awt.Color; import java.awt.GradientPaint; import com.orsoncharts.data.StandardPieDataset3D; import com.orsoncharts.data.PieDataset3D; import com.orsoncharts.data.category.CategoryDataset3D; import com.orsoncharts.data.category.StandardCategoryDataset3D; import com.orsoncharts.data.DefaultKeyedValues; import com.orsoncharts.data.xyz.XYZDataset; import com.orsoncharts.data.xyz.XYZSeries; import com.orsoncharts.data.xyz.XYZSeriesCollection; import com.orsoncharts.legend.LegendAnchor; import com.orsoncharts.legend.StandardLegendBuilder; import com.orsoncharts.style.ChartStyles; import com.orsoncharts.util.Orientation; import com.orsoncharts.table.StandardRectanglePainter; /** * Tests for the {@link Chart3D} class. */ public class Chart3DTest { /** * Checks for the equals() method. */ @Test public void checkEquals() { Chart3D c1 = Chart3DFactory.createPieChart("title", "subtitle", createPieDataset()); Chart3D c2 = Chart3DFactory.createPieChart("title", "subtitle", createPieDataset()); assertTrue(c1.equals(c2)); assertFalse(c1.equals(null)); // background painter c1.setBackground(new StandardRectanglePainter(Color.RED)); assertFalse(c1.equals(c2)); c2.setBackground(new StandardRectanglePainter(Color.RED)); assertTrue(c1.equals(c2)); // title c1.setTitle("ABC"); assertFalse(c1.equals(c2)); c2.setTitle("ABC"); assertTrue(c1.equals(c2)); c1.setTitle((String) null); assertFalse(c1.equals(c2)); c2.setTitle((String) null); assertTrue(c1.equals(c2)); // title anchor c1.setTitleAnchor(TitleAnchor.BOTTOM_LEFT); assertFalse(c1.equals(c2)); c2.setTitleAnchor(TitleAnchor.BOTTOM_LEFT); assertTrue(c1.equals(c2)); // legend builder c1.setLegendBuilder(null); assertFalse(c1.equals(c2)); c2.setLegendBuilder(null); assertTrue(c1.equals(c2)); // legend anchor c1.setLegendAnchor(LegendAnchor.CENTER_LEFT); assertFalse(c1.equals(c2)); c2.setLegendAnchor(LegendAnchor.CENTER_LEFT); assertTrue(c1.equals(c2)); // legend orientation c1.setLegendOrientation(Orientation.VERTICAL); assertFalse(c1.equals(c2)); c2.setLegendOrientation(Orientation.VERTICAL); assertTrue(c1.equals(c2)); StandardLegendBuilder slb1 = new StandardLegendBuilder(); slb1.setHeader("ABC"); c1.setLegendBuilder(slb1); assertFalse(c1.equals(c2)); StandardLegendBuilder slb2 = new StandardLegendBuilder(); slb2.setHeader("ABC"); c2.setLegendBuilder(slb2); assertTrue(c1.equals(c2)); // chart box color c1.setChartBoxColor(Color.CYAN); assertFalse(c1.equals(c2)); c2.setChartBoxColor(Color.CYAN); assertTrue(c1.equals(c2)); // projDist c1.setProjDistance(123); assertFalse(c1.equals(c2)); c2.setProjDistance(123); assertTrue(c1.equals(c2)); // style c1.setStyle(ChartStyles.createIceCubeStyle()); assertFalse(c1.equals(c2)); c2.setStyle(ChartStyles.createIceCubeStyle()); assertTrue(c1.equals(c2)); } /** * A check for serialization. */ @Test public void testSerializationPieChart() { Chart3D c1 = Chart3DFactory.createPieChart("title", "subtitle", createPieDataset()); Chart3D c2 = (Chart3D) TestUtils.serialized(c1); assertEquals(c1, c2); // check that gradient paint is correctly serialized c1.setBackground(new StandardRectanglePainter(new GradientPaint(1f, 2f, Color.RED, 3f, 4f, Color.BLUE))); c2 = (Chart3D) TestUtils.serialized(c1); assertEquals(c1, c2); } /** * A check for serialization of area charts. */ @Test public void testSerializationAreaChart() { Chart3D c1 = Chart3DFactory.createAreaChart("title", "subtitle", createCategoryDataset(), "rowAxis", "columnAxis", "valueAxis"); Chart3D c2 = (Chart3D) TestUtils.serialized(c1); assertEquals(c1, c2); } /** * A check for serialization of bar charts. */ @Test public void testSerializationBarChart() { Chart3D c1 = Chart3DFactory.createBarChart("title", "subtitle", createCategoryDataset(), "rowAxis", "columnAxis", "valueAxis"); Chart3D c2 = (Chart3D) TestUtils.serialized(c1); assertEquals(c1, c2); } /** * A check for serialization of line charts. */ @Test public void testSerializationLineChart() { Chart3D c1 = Chart3DFactory.createLineChart("title", "subtitle", createCategoryDataset(), "rowAxis", "columnAxis", "valueAxis"); Chart3D c2 = (Chart3D) TestUtils.serialized(c1); assertEquals(c1, c2); } /** * A check for serialization of stacked bar charts. */ @Test public void testSerializationStackedBarChart() { Chart3D c1 = Chart3DFactory.createStackedBarChart("title", "subtitle", createCategoryDataset(), "rowAxis", "columnAxis", "valueAxis"); Chart3D c2 = (Chart3D) TestUtils.serialized(c1); assertEquals(c1, c2); } /** * A check for serialization of scatter charts. */ @Test public void testSerializationScatterChart() { Chart3D c1 = Chart3DFactory.createScatterChart("title", "subtitle", createXYZDataset(), "rowAxis", "columnAxis", "valueAxis"); Chart3D c2 = (Chart3D) TestUtils.serialized(c1); assertEquals(c1, c2); } /** * A check for serialization of scatter charts. */ @Test public void testSerializationXYZBarChart() { Chart3D c1 = Chart3DFactory.createXYZBarChart("title", "subtitle", createXYZDataset(), "rowAxis", "columnAxis", "valueAxis"); Chart3D c2 = (Chart3D) TestUtils.serialized(c1); assertEquals(c1, c2); } /** * After deserializing, check that we can still register listeners. */ @Test public void testListenerStorageAfterDeserialization() { Chart3D c1 = Chart3DFactory.createPieChart("title", "subtitle", createPieDataset()); Chart3D c2 = (Chart3D) TestUtils.serialized(c1); assertEquals(c1, c2); c2.addChangeListener(new Chart3DChangeListener() { @Override public void chartChanged(Chart3DChangeEvent event) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } }); } private PieDataset3D<String> createPieDataset() { StandardPieDataset3D<String> dataset = new StandardPieDataset3D<String>(); dataset.add("United States", new Double(30.0)); dataset.add("France", new Double(20.0)); return dataset; } private CategoryDataset3D<String, String, String> createCategoryDataset() { StandardCategoryDataset3D<String, String, String> dataset = new StandardCategoryDataset3D<String, String, String>(); DefaultKeyedValues<String, Number> s1 = new DefaultKeyedValues<String, Number>(); s1.put("Q1", 1.0); s1.put("Q2", 7.0); s1.put("Q3", 3.0); s1.put("Q4", 4.0); dataset.addSeriesAsRow("Acme Widgets Ltd", s1); return dataset; } private XYZDataset<String> createXYZDataset() { XYZSeries<String> s1 = new XYZSeries<String>("S1"); s1.add(1, 2, 3); XYZSeriesCollection<String> dataset = new XYZSeriesCollection<String>(); dataset.add(s1); return dataset; } }