From: <mu...@us...> - 2009-05-28 06:18:48
|
Revision: 2102 http://jfreechart.svn.sourceforge.net/jfreechart/?rev=2102&view=rev Author: mungady Date: 2009-05-28 06:18:43 +0000 (Thu, 28 May 2009) Log Message: ----------- 2009-05-28 David Gilbert <dav...@ob...> * source/org/jfree/data/function/NormalDistributionFunction2D.java: Implemented Serializable, (equals): New method override, (hashCode): Likewise, * tests/org/jfree/data/function/junit/NormalDistributionFunction2DTests.java: New file. Modified Paths: -------------- branches/jfreechart-1.0.x-branch/ChangeLog branches/jfreechart-1.0.x-branch/source/org/jfree/data/function/NormalDistributionFunction2D.java branches/jfreechart-1.0.x-branch/tests/org/jfree/data/function/junit/DataFunctionPackageTests.java Added Paths: ----------- branches/jfreechart-1.0.x-branch/tests/org/jfree/data/function/junit/NormalDistributionFunction2DTests.java Modified: branches/jfreechart-1.0.x-branch/ChangeLog =================================================================== --- branches/jfreechart-1.0.x-branch/ChangeLog 2009-05-28 06:11:21 UTC (rev 2101) +++ branches/jfreechart-1.0.x-branch/ChangeLog 2009-05-28 06:18:43 UTC (rev 2102) @@ -1,5 +1,14 @@ 2009-05-28 David Gilbert <dav...@ob...> + * source/org/jfree/data/function/NormalDistributionFunction2D.java: + Implemented Serializable, + (equals): New method override, + (hashCode): Likewise, + * tests/org/jfree/data/function/junit/NormalDistributionFunction2DTests.java: + New file. + +2009-05-28 David Gilbert <dav...@ob...> + * source/org/jfree/data/function/LineFunction2D.java: Implemented Serializable, (getIntercept): New method, Modified: branches/jfreechart-1.0.x-branch/source/org/jfree/data/function/NormalDistributionFunction2D.java =================================================================== --- branches/jfreechart-1.0.x-branch/source/org/jfree/data/function/NormalDistributionFunction2D.java 2009-05-28 06:11:21 UTC (rev 2101) +++ branches/jfreechart-1.0.x-branch/source/org/jfree/data/function/NormalDistributionFunction2D.java 2009-05-28 06:18:43 UTC (rev 2102) @@ -38,16 +38,22 @@ * 21-Nov-2005 : Added getters for the mean and standard deviation (DG); * 12-Feb-2009 : Precompute some constants from the function - see bug * 2572016 (DG); + * 28-May-2009 : Implemented equals() and hashCode(), and added serialization + * support (DG); * */ package org.jfree.data.function; +import java.io.Serializable; + +import org.jfree.chart.HashUtilities; + /** * A normal distribution function. See * http://en.wikipedia.org/wiki/Normal_distribution. */ -public class NormalDistributionFunction2D implements Function2D { +public class NormalDistributionFunction2D implements Function2D, Serializable { /** The mean. */ private double mean; @@ -108,4 +114,37 @@ return this.factor * Math.exp(-z * z / this.denominator); } + /** + * Tests this function for equality with an arbitrary object. + * + * @param obj the object (<code>null</code> permitted). + * + * @return A boolean. + */ + public boolean equals(Object obj) { + if (!(obj instanceof NormalDistributionFunction2D)) { + return false; + } + NormalDistributionFunction2D that = (NormalDistributionFunction2D) obj; + if (this.mean != that.mean) { + return false; + } + if (this.std != that.std) { + return false; + } + return true; + } + + /** + * Returns a hash code for this instance. + * + * @return A hash code. + */ + public int hashCode() { + int result = 29; + result = HashUtilities.hashCode(result, this.mean); + result = HashUtilities.hashCode(result, this.std); + return result; + } + } Modified: branches/jfreechart-1.0.x-branch/tests/org/jfree/data/function/junit/DataFunctionPackageTests.java =================================================================== --- branches/jfreechart-1.0.x-branch/tests/org/jfree/data/function/junit/DataFunctionPackageTests.java 2009-05-28 06:11:21 UTC (rev 2101) +++ branches/jfreechart-1.0.x-branch/tests/org/jfree/data/function/junit/DataFunctionPackageTests.java 2009-05-28 06:18:43 UTC (rev 2102) @@ -59,6 +59,7 @@ public static Test suite() { TestSuite suite = new TestSuite("org.jfree.data.function"); suite.addTestSuite(LineFunction2DTests.class); + suite.addTestSuite(NormalDistributionFunction2DTests.class); suite.addTestSuite(PolynomialFunction2DTests.class); return suite; } Added: branches/jfreechart-1.0.x-branch/tests/org/jfree/data/function/junit/NormalDistributionFunction2DTests.java =================================================================== --- branches/jfreechart-1.0.x-branch/tests/org/jfree/data/function/junit/NormalDistributionFunction2DTests.java (rev 0) +++ branches/jfreechart-1.0.x-branch/tests/org/jfree/data/function/junit/NormalDistributionFunction2DTests.java 2009-05-28 06:18:43 UTC (rev 2102) @@ -0,0 +1,146 @@ +/* =========================================================== + * JFreeChart : a free chart library for the Java(tm) platform + * =========================================================== + * + * (C) Copyright 2000-2009, 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. + * + * [Java is a trademark or registered trademark of Sun Microsystems, Inc. + * in the United States and other countries.] + * + * -------------------------------------- + * NormalDistributionFunction2DTests.java + * -------------------------------------- + * (C) Copyright 2009, by Object Refinery Limited and Contributors. + * + * Original Author: David Gilbert (for Object Refinery Limited); + * Contributor(s): -; + * + * Changes + * ------- + * 28-May-2009 : Version 1 (DG); + * + */ + +package org.jfree.data.function.junit; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.ObjectInput; +import java.io.ObjectInputStream; +import java.io.ObjectOutput; +import java.io.ObjectOutputStream; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +import org.jfree.data.function.LineFunction2D; +import org.jfree.data.function.NormalDistributionFunction2D; + +/** + * Tests for the {@link NormalDistributionFunction2D} class. + */ +public class NormalDistributionFunction2DTests extends TestCase { + + /** + * Returns the tests as a test suite. + * + * @return The test suite. + */ + public static Test suite() { + return new TestSuite(NormalDistributionFunction2DTests.class); + } + + /** + * Constructs a new set of tests. + * + * @param name the name of the tests. + */ + public NormalDistributionFunction2DTests(String name) { + super(name); + } + + private static final double EPSILON = 0.000000001; + + /** + * Some tests for the constructor. + */ + public void testConstructor() { + NormalDistributionFunction2D f = new NormalDistributionFunction2D(1.0, + 2.0); + assertEquals(1.0, f.getMean(), EPSILON); + assertEquals(2.0, f.getStandardDeviation(), EPSILON); + } + + /** + * For datasets, the equals() method just checks keys and values. + */ + public void testEquals() { + NormalDistributionFunction2D f1 = new NormalDistributionFunction2D(1.0, + 2.0); + NormalDistributionFunction2D f2 = new NormalDistributionFunction2D(1.0, + 2.0); + assertTrue(f1.equals(f2)); + f1 = new NormalDistributionFunction2D(2.0, 3.0); + assertFalse(f1.equals(f2)); + f2 = new NormalDistributionFunction2D(2.0, 3.0); + assertTrue(f1.equals(f2)); + } + + /** + * Serialize an instance, restore it, and check for equality. + */ + public void testSerialization() { + NormalDistributionFunction2D f1 = new NormalDistributionFunction2D(1.0, + 2.0); + NormalDistributionFunction2D f2 = null; + + try { + ByteArrayOutputStream buffer = new ByteArrayOutputStream(); + ObjectOutput out = new ObjectOutputStream(buffer); + out.writeObject(f1); + out.close(); + + ObjectInput in = new ObjectInputStream(new ByteArrayInputStream( + buffer.toByteArray())); + f2 = (NormalDistributionFunction2D) in.readObject(); + in.close(); + } + catch (Exception e) { + e.printStackTrace(); + } + assertEquals(f1, f2); + } + + /** + * Objects that are equal should have the same hash code otherwise FindBugs + * will tell on us... + */ + public void testHashCode() { + NormalDistributionFunction2D f1 = new NormalDistributionFunction2D(1.0, + 2.0); + NormalDistributionFunction2D f2 = new NormalDistributionFunction2D(1.0, + 2.0); + assertEquals(f1.hashCode(), f2.hashCode()); + } + +} + + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |