content: /* ===========================================================
   * JFreeChart : a free chart library for the Java(tm) platform
   * ===========================================================
   *
   * (C) Copyright 2000-2012, 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., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301,
   * USA.
   *
   * [Oracle and Java are registered trademarks of Oracle and/or its affiliates.
   * Other names may be trademarks of their respective owners.]
   *
   * --------------------
   * PieChart3DTests.java
   * --------------------
   * (C) Copyright 2004-2008, by Object Refinery Limited.
   *
   * Original Author:  David Gilbert (for Object Refinery Limited);
   * Contributor(s):   -;
   *
   * Changes:
   * --------
   * 21-May-2004 : Version 1 (DG);
   *
   */
  
  package org.jfree.chart;
  
  import org.jfree.chart.event.ChartChangeEvent;
  import org.jfree.chart.event.ChartChangeListener;
  import org.jfree.chart.plot.PiePlot;
  import org.jfree.data.general.DefaultPieDataset;
  import org.jfree.data.general.PieDataset;
  import org.junit.jupiter.api.BeforeEach;
  import org.junit.jupiter.api.Test;
  
  import java.awt.Graphics2D;
  import java.awt.geom.Rectangle2D;
  import java.awt.image.BufferedImage;
  
  import static org.junit.jupiter.api.Assertions.assertEquals;
  import static org.junit.jupiter.api.Assertions.assertNull;
  
  /**
   * Tests for a pie chart with a 3D effect.
   */
  public class PieChart3DTest  {
  
      /** A chart. */
      private JFreeChart pieChart;
  
  
  
  
  
      /**
       * Common test setup.
       */
      @BeforeEach
      public void setUp() {
          // create a dataset...
          DefaultPieDataset dataset = new DefaultPieDataset();
          dataset.setValue("Java", Double.valueOf(43.2));
          dataset.setValue("Visual Basic", Double.valueOf(0.0));
          dataset.setValue("C/C++", Double.valueOf(17.5));
          this.pieChart = createPieChart3D(dataset);
      }
  
      /**
       * Using a regular pie chart, we replace the dataset with null.  Expect to
       * receive notification of a chart change event, and (of course) the
       * dataset should be null.
       */
      @Test
      public void testReplaceDatasetOnPieChart() {
          LocalListener l = new LocalListener();
          this.pieChart.addChangeListener(l);
          PiePlot plot = (PiePlot) this.pieChart.getPlot();
          plot.setDataset(null);
          assertEquals(true, l.flag);
          assertNull(plot.getDataset());
      }
  
      /**
       * Tests that no exceptions are thrown when there is a <code>null</code>
       * value in the dataset.
       */
      @Test
      public void testNullValueInDataset() {
          DefaultPieDataset dataset = new DefaultPieDataset();
          dataset.setValue("Section 1", 10.0);
          dataset.setValue("Section 2", 11.0);
          dataset.setValue("Section 3", null);
          JFreeChart chart = createPieChart3D(dataset);
          BufferedImage image = new BufferedImage(200 , 100,
                  BufferedImage.TYPE_INT_RGB);
          Graphics2D g2 = image.createGraphics();
          chart.draw(g2, new Rectangle2D.Double(0, 0, 200, 100), null, null);
          g2.dispose();
          //FIXME we should really assert a value here
      }
  
      /**
       * Creates a pie chart.
       *
       * @param dataset  the dataset.
       *
       * @return The pie chart.
       */
      private static JFreeChart createPieChart3D(PieDataset dataset) {
          return ChartFactory.createPieChart3D("Pie Chart", dataset);
      }
  
      /**
       * A chart change listener.
       */
      static class LocalListener implements ChartChangeListener {
  
          /** A flag. */
          private boolean flag;
  
          /**
           * Event handler.
           *
           * @param event  the event.
           */
          @Override
          public void chartChanged(ChartChangeEvent event) {
              this.flag = true;
          }
  
      }
  
  }
  