From: <mu...@us...> - 2009-05-28 06:27:00
|
Revision: 2103 http://jfreechart.svn.sourceforge.net/jfreechart/?rev=2103&view=rev Author: mungady Date: 2009-05-28 06:26:54 +0000 (Thu, 28 May 2009) Log Message: ----------- 2009-05-28 David Gilbert <dav...@ob...> * source/org/jfree/data/function/PowerFunction2D.java: Implemented Serializable, (getA): New method, (getB): Likewise, (equals): New method override, (hashCode): Likewise, * tests/org/jfree/data/function/junit/PowerFunction2DTests.java: New file. Modified Paths: -------------- branches/jfreechart-1.0.x-branch/ChangeLog branches/jfreechart-1.0.x-branch/source/org/jfree/data/function/PowerFunction2D.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/PowerFunction2DTests.java Modified: branches/jfreechart-1.0.x-branch/ChangeLog =================================================================== --- branches/jfreechart-1.0.x-branch/ChangeLog 2009-05-28 06:18:43 UTC (rev 2102) +++ branches/jfreechart-1.0.x-branch/ChangeLog 2009-05-28 06:26:54 UTC (rev 2103) @@ -1,5 +1,15 @@ 2009-05-28 David Gilbert <dav...@ob...> + * source/org/jfree/data/function/PowerFunction2D.java: Implemented + Serializable, + (getA): New method, + (getB): Likewise, + (equals): New method override, + (hashCode): Likewise, + * tests/org/jfree/data/function/junit/PowerFunction2DTests.java: New file. + +2009-05-28 David Gilbert <dav...@ob...> + * source/org/jfree/data/function/NormalDistributionFunction2D.java: Implemented Serializable, (equals): New method override, Modified: branches/jfreechart-1.0.x-branch/source/org/jfree/data/function/PowerFunction2D.java =================================================================== --- branches/jfreechart-1.0.x-branch/source/org/jfree/data/function/PowerFunction2D.java 2009-05-28 06:18:43 UTC (rev 2102) +++ branches/jfreechart-1.0.x-branch/source/org/jfree/data/function/PowerFunction2D.java 2009-05-28 06:26:54 UTC (rev 2103) @@ -2,7 +2,7 @@ * JFreeChart : a free chart library for the Java(tm) platform * =========================================================== * - * (C) Copyright 2000-2008, by Object Refinery Limited and Contributors. + * (C) Copyright 2000-2009, by Object Refinery Limited and Contributors. * * Project Info: http://www.jfree.org/jfreechart/index.html * @@ -27,7 +27,7 @@ * -------------------- * PowerFunction2D.java * -------------------- - * (C) Copyright 2002-2008, by Object Refinery Limited. + * (C) Copyright 2002-2009, by Object Refinery Limited. * * Original Author: David Gilbert (for Object Refinery Limited); * Contributor(s): -; @@ -35,15 +35,20 @@ * Changes: * -------- * 01-Oct-2002 : Version 1 (DG); + * 28-May-2009 : Added accessor methods for co-efficients, implemented + * equals() and hashCode(), and added Serialization support (DG); * */ package org.jfree.data.function; +import java.io.Serializable; +import org.jfree.chart.HashUtilities; + /** * A function of the form y = a * x ^ b. */ -public class PowerFunction2D implements Function2D { +public class PowerFunction2D implements Function2D, Serializable { /** The 'a' coefficient. */ private double a; @@ -63,6 +68,28 @@ } /** + * Returns the 'a' coefficient that was specified in the constructor. + * + * @return The 'a' coefficient. + * + * @since 1.0.14 + */ + public double getA() { + return this.a; + } + + /** + * Returns the 'b' coefficient that was specified in the constructor. + * + * @return The 'b' coefficient. + * + * @since 1.0.14 + */ + public double getB() { + return this.b; + } + + /** * Returns the value of the function for a given input ('x'). * * @param x the x-value. @@ -73,4 +100,37 @@ return this.a * Math.pow(x, this.b); } + /** + * 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 PowerFunction2D)) { + return false; + } + PowerFunction2D that = (PowerFunction2D) obj; + if (this.a != that.a) { + return false; + } + if (this.b != that.b) { + 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.a); + result = HashUtilities.hashCode(result, this.b); + 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:18:43 UTC (rev 2102) +++ branches/jfreechart-1.0.x-branch/tests/org/jfree/data/function/junit/DataFunctionPackageTests.java 2009-05-28 06:26:54 UTC (rev 2103) @@ -61,6 +61,7 @@ suite.addTestSuite(LineFunction2DTests.class); suite.addTestSuite(NormalDistributionFunction2DTests.class); suite.addTestSuite(PolynomialFunction2DTests.class); + suite.addTestSuite(PowerFunction2DTests.class); return suite; } Added: branches/jfreechart-1.0.x-branch/tests/org/jfree/data/function/junit/PowerFunction2DTests.java =================================================================== --- branches/jfreechart-1.0.x-branch/tests/org/jfree/data/function/junit/PowerFunction2DTests.java (rev 0) +++ branches/jfreechart-1.0.x-branch/tests/org/jfree/data/function/junit/PowerFunction2DTests.java 2009-05-28 06:26:54 UTC (rev 2103) @@ -0,0 +1,140 @@ +/* =========================================================== + * 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.] + * + * ------------------------- + * PowerFunction2DTests.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.PowerFunction2D; + +/** + * Tests for the {@link PowerFunction2D} class. + */ +public class PowerFunction2DTests extends TestCase { + + /** + * Returns the tests as a test suite. + * + * @return The test suite. + */ + public static Test suite() { + return new TestSuite(PowerFunction2DTests.class); + } + + /** + * Constructs a new set of tests. + * + * @param name the name of the tests. + */ + public PowerFunction2DTests(String name) { + super(name); + } + + private static final double EPSILON = 0.000000001; + + /** + * Some tests for the constructor. + */ + public void testConstructor() { + PowerFunction2D f = new PowerFunction2D(1.0, 2.0); + assertEquals(1.0, f.getA(), EPSILON); + assertEquals(2.0, f.getB(), EPSILON); + } + + /** + * For datasets, the equals() method just checks keys and values. + */ + public void testEquals() { + PowerFunction2D f1 = new PowerFunction2D(1.0, 2.0); + PowerFunction2D f2 = new PowerFunction2D(1.0, 2.0); + assertTrue(f1.equals(f2)); + f1 = new PowerFunction2D(2.0, 3.0); + assertFalse(f1.equals(f2)); + f2 = new PowerFunction2D(2.0, 3.0); + assertTrue(f1.equals(f2)); + } + + /** + * Serialize an instance, restore it, and check for equality. + */ + public void testSerialization() { + PowerFunction2D f1 = new PowerFunction2D(1.0, 2.0); + PowerFunction2D 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 = (PowerFunction2D) 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() { + PowerFunction2D f1 = new PowerFunction2D(1.0, 2.0); + PowerFunction2D f2 = new PowerFunction2D(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. |