Save This Page
Home » jcommon-1.0.13 » org.jfree » chart » renderer » category » junit » [javadoc | source]
    1   /* ===========================================================
    2    * JFreeChart : a free chart library for the Java(tm) platform
    3    * ===========================================================
    4    *
    5    * (C) Copyright 2000-2005, by Object Refinery Limited and Contributors.
    6    *
    7    * Project Info:  http://www.jfree.org/jfreechart/index.html
    8    *
    9    * This library is free software; you can redistribute it and/or modify it 
   10    * under the terms of the GNU Lesser General Public License as published by 
   11    * the Free Software Foundation; either version 2.1 of the License, or 
   12    * (at your option) any later version.
   13    *
   14    * This library is distributed in the hope that it will be useful, but 
   15    * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
   16    * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 
   17    * License for more details.
   18    *
   19    * You should have received a copy of the GNU Lesser General Public License 
   20    * along with this library; if not, write to the Free Software Foundation, 
   21    * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
   22    *
   23    * [Java is a trademark or registered trademark of Sun Microsystems, Inc. 
   24    * in the United States and other countries.]
   25    *
   26    * ------------------------------
   27    * LineAndShapeRendererTests.java
   28    * ------------------------------
   29    * (C) Copyright 2003-2005, by Object Refinery Limited and Contributors.
   30    *
   31    * Original Author:  David Gilbert (for Object Refinery Limited);
   32    * Contributor(s):   -;
   33    *
   34    * $Id: LineAndShapeRendererTests.java,v 1.5 2005/03/09 22:07:57 mungady Exp $
   35    *
   36    * Changes
   37    * -------
   38    * 22-Sep-2003 : Version 1 (DG);
   39    *
   40    */
   41   
   42   package org.jfree.chart.renderer.category.junit;
   43   
   44   import java.io.ByteArrayInputStream;
   45   import java.io.ByteArrayOutputStream;
   46   import java.io.ObjectInput;
   47   import java.io.ObjectInputStream;
   48   import java.io.ObjectOutput;
   49   import java.io.ObjectOutputStream;
   50   
   51   import junit.framework.Test;
   52   import junit.framework.TestCase;
   53   import junit.framework.TestSuite;
   54   
   55   import org.jfree.chart.renderer.category.LineAndShapeRenderer;
   56   
   57   /**
   58    * Tests for the {@link LineAndShapeRenderer} class.
   59    */
   60   public class LineAndShapeRendererTests extends TestCase {
   61   
   62       /**
   63        * Returns the tests as a test suite.
   64        *
   65        * @return The test suite.
   66        */
   67       public static Test suite() {
   68           return new TestSuite(LineAndShapeRendererTests.class);
   69       }
   70   
   71       /**
   72        * Constructs a new set of tests.
   73        *
   74        * @param name  the name of the tests.
   75        */
   76       public LineAndShapeRendererTests(String name) {
   77           super(name);
   78       }
   79   
   80       /**
   81        * Test that the equals() method distinguishes all fields.
   82        */
   83       public void testEquals() {
   84           
   85           LineAndShapeRenderer r1 = new LineAndShapeRenderer();
   86           LineAndShapeRenderer r2 = new LineAndShapeRenderer();
   87           assertEquals(r1, r2);
   88           
   89           r1.setShapesVisible(!r1.isShapesVisible());
   90           assertFalse(r1.equals(r2));
   91           r2.setShapesVisible(r1.isShapesVisible());
   92           assertTrue(r1.equals(r2));
   93           
   94           r1.setLinesVisible(!r1.isLinesVisible());
   95           assertFalse(r1.equals(r2));
   96           r2.setLinesVisible(r1.isLinesVisible());
   97           assertTrue(r1.equals(r2));
   98           
   99           r1.setShapesFilled(false);
  100           assertFalse(r1.equals(r2));
  101           r2.setShapesFilled(false);
  102           assertTrue(r1.equals(r2));
  103           
  104           r1.setSeriesShapesFilled(1, true);
  105           assertFalse(r1.equals(r2));
  106           r2.setSeriesShapesFilled(1, true);
  107           assertTrue(r1.equals(r2));
  108           
  109           r1.setDefaultShapesFilled(false);
  110           assertFalse(r1.equals(r2));
  111           r2.setDefaultShapesFilled(false);
  112           assertTrue(r1.equals(r2));
  113           
  114           r1.setUseOutlinePaint(true);
  115           assertFalse(r1.equals(r2));
  116           r2.setUseOutlinePaint(true);
  117           assertTrue(r1.equals(r2));
  118           
  119       }
  120   
  121       /**
  122        * Two objects that are equal are required to return the same hashCode. 
  123        */
  124       public void testHashcode() {
  125           LineAndShapeRenderer r1 = new LineAndShapeRenderer();
  126           LineAndShapeRenderer r2 = new LineAndShapeRenderer();
  127           assertTrue(r1.equals(r2));
  128           int h1 = r1.hashCode();
  129           int h2 = r2.hashCode();
  130           assertEquals(h1, h2);
  131       }
  132       
  133       /**
  134        * Confirm that cloning works.
  135        */
  136       public void testCloning() {
  137           LineAndShapeRenderer r1 = new LineAndShapeRenderer();
  138           LineAndShapeRenderer r2 = null;
  139           try {
  140               r2 = (LineAndShapeRenderer) r1.clone();
  141           }
  142           catch (CloneNotSupportedException e) {
  143               System.err.println("Failed to clone.");
  144           }
  145           assertTrue(r1 != r2);
  146           assertTrue(r1.getClass() == r2.getClass());
  147           assertTrue(r1.equals(r2));
  148           
  149           assertTrue(checkIndependence(r1, r2));
  150           
  151       }
  152   
  153       /**
  154        * Checks that the two renderers are equal but independent of one another.
  155        * 
  156        * @param r1  renderer 1.
  157        * @param r2  renderer 2.
  158        * 
  159        * @return A boolean.
  160        */
  161       private boolean checkIndependence(LineAndShapeRenderer r1, 
  162                                         LineAndShapeRenderer r2) {
  163   
  164           // should be equal...
  165           boolean b0 = r1.equals(r2);
  166           
  167           // and independent...
  168           r1.setShapesVisible(!r1.isShapesVisible());
  169           boolean b1 = !r1.equals(r2);
  170           r2.setShapesVisible(r1.isShapesVisible());
  171           boolean b2 = r1.equals(r2);
  172           
  173           r1.setLinesVisible(!r1.isLinesVisible());
  174           boolean b3 = !r1.equals(r2);
  175           r2.setLinesVisible(r1.isLinesVisible());
  176           boolean b4 = r1.equals(r2);
  177                   
  178           boolean flag = true;
  179           Boolean existing = r1.getShapesFilled();
  180           if (existing != null) {
  181               flag = !existing.booleanValue();
  182           }
  183           r1.setShapesFilled(flag);
  184           boolean b5 = !r1.equals(r2);
  185           r2.setShapesFilled(flag);
  186           boolean b6 = r1.equals(r2);
  187   
  188           r1.setShapesFilled(false);
  189           r2.setShapesFilled(false);
  190           r1.setSeriesShapesFilled(0, false);
  191           r2.setSeriesShapesFilled(0, true);
  192           boolean b7 = !r1.equals(r2);
  193           r2.setSeriesShapesFilled(0, false);
  194           boolean b8 = (r1.equals(r2));
  195           
  196           r1.setDefaultShapesFilled(false);
  197           r2.setDefaultShapesFilled(true);
  198           boolean b9 = !r1.equals(r2);
  199           r2.setDefaultShapesFilled(false);
  200           boolean b10 = (r1.equals(r2));
  201           
  202           return b0 && b1 && b2 && b3 && b4 && b5 && b6 && b7 && b8 && b9 && b10;
  203       
  204       }
  205       
  206       /**
  207        * Serialize an instance, restore it, and check for equality.
  208        */
  209       public void testSerialization() {
  210   
  211           LineAndShapeRenderer r1 = new LineAndShapeRenderer();
  212           LineAndShapeRenderer r2 = null;
  213   
  214           try {
  215               ByteArrayOutputStream buffer = new ByteArrayOutputStream();
  216               ObjectOutput out = new ObjectOutputStream(buffer);
  217               out.writeObject(r1);
  218               out.close();
  219   
  220               ObjectInput in = new ObjectInputStream(
  221                   new ByteArrayInputStream(buffer.toByteArray())
  222               );
  223               r2 = (LineAndShapeRenderer) in.readObject();
  224               in.close();
  225           }
  226           catch (Exception e) {
  227               System.out.println(e.toString());
  228           }
  229           assertEquals(r1, r2);
  230   
  231       }
  232   
  233   }

Save This Page
Home » jcommon-1.0.13 » org.jfree » chart » renderer » category » junit » [javadoc | source]