You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by lu...@apache.org on 2009/07/20 21:23:43 UTC
svn commit: r795963 - in /commons/proper/math/trunk/src:
java/org/apache/commons/math/util/BigReal.java
test/org/apache/commons/math/util/BigRealTest.java
Author: luc
Date: Mon Jul 20 19:23:43 2009
New Revision: 795963
URL: http://svn.apache.org/viewvc?rev=795963&view=rev
Log:
checked serialization of BigReal and added a tests suite for the class
Added:
commons/proper/math/trunk/src/test/org/apache/commons/math/util/BigRealTest.java (with props)
Modified:
commons/proper/math/trunk/src/java/org/apache/commons/math/util/BigReal.java
Modified: commons/proper/math/trunk/src/java/org/apache/commons/math/util/BigReal.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/java/org/apache/commons/math/util/BigReal.java?rev=795963&r1=795962&r2=795963&view=diff
==============================================================================
--- commons/proper/math/trunk/src/java/org/apache/commons/math/util/BigReal.java (original)
+++ commons/proper/math/trunk/src/java/org/apache/commons/math/util/BigReal.java Mon Jul 20 19:23:43 2009
@@ -35,8 +35,6 @@
* @version $Revision$ $Date$
*/
public class BigReal implements FieldElement<BigReal>, Comparable<BigReal>, Serializable {
- // TODO: Add Serializable documentation
- // TODO: Check Serializable implementation
/** Serializable version identifier. */
private static final long serialVersionUID = 7887631840434052850L;
@@ -208,6 +206,20 @@
return d.compareTo(a.d);
}
+ /** Get the double value corresponding to the instance.
+ * @return double value corresponding to the instance
+ */
+ public double doubleValue() {
+ return d.doubleValue();
+ }
+
+ /** Get the BigDecimal value corresponding to the instance.
+ * @return BigDecimal value corresponding to the instance
+ */
+ public BigDecimal bigDecimalValue() {
+ return d;
+ }
+
/** {@inheritDoc} */
@Override
public boolean equals(Object other) {
Added: commons/proper/math/trunk/src/test/org/apache/commons/math/util/BigRealTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/org/apache/commons/math/util/BigRealTest.java?rev=795963&view=auto
==============================================================================
--- commons/proper/math/trunk/src/test/org/apache/commons/math/util/BigRealTest.java (added)
+++ commons/proper/math/trunk/src/test/org/apache/commons/math/util/BigRealTest.java Mon Jul 20 19:23:43 2009
@@ -0,0 +1,128 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.math.util;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+import java.math.MathContext;
+
+import org.apache.commons.math.TestUtils;
+import org.junit.Test;
+
+public class BigRealTest {
+
+ @Test
+ public void testConstructor() {
+ assertEquals(1.625, new BigReal(new BigDecimal("1.625")).doubleValue(), 1.0e-15);
+ assertEquals(-5.0, new BigReal(new BigInteger("-5")).doubleValue(), 1.0e-15);
+ assertEquals(-5.0, new BigReal(new BigInteger("-5"), MathContext.DECIMAL64).doubleValue(), 1.0e-15);
+ assertEquals(0.125, new BigReal(new BigInteger("125"), 3).doubleValue(), 1.0e-15);
+ assertEquals(0.125, new BigReal(new BigInteger("125"), 3, MathContext.DECIMAL64).doubleValue(), 1.0e-15);
+ assertEquals(1.625, new BigReal(new char[] { '1', '.', '6', '2', '5' }).doubleValue(), 1.0e-15);
+ assertEquals(1.625, new BigReal(new char[] { 'A', 'A', '1', '.', '6', '2', '5', '9' }, 2, 5).doubleValue(), 1.0e-15);
+ assertEquals(1.625, new BigReal(new char[] { 'A', 'A', '1', '.', '6', '2', '5', '9' }, 2, 5, MathContext.DECIMAL64).doubleValue(), 1.0e-15);
+ assertEquals(1.625, new BigReal(new char[] { '1', '.', '6', '2', '5' }, MathContext.DECIMAL64).doubleValue(), 1.0e-15);
+ assertEquals(1.625, new BigReal(1.625).doubleValue(), 1.0e-15);
+ assertEquals(1.625, new BigReal(1.625, MathContext.DECIMAL64).doubleValue(), 1.0e-15);
+ assertEquals(-5.0, new BigReal(-5).doubleValue(), 1.0e-15);
+ assertEquals(-5.0, new BigReal(-5, MathContext.DECIMAL64).doubleValue(), 1.0e-15);
+ assertEquals(-5.0, new BigReal(-5l).doubleValue(), 1.0e-15);
+ assertEquals(-5.0, new BigReal(-5l, MathContext.DECIMAL64).doubleValue(), 1.0e-15);
+ assertEquals(1.625, new BigReal("1.625").doubleValue(), 1.0e-15);
+ assertEquals(1.625, new BigReal("1.625", MathContext.DECIMAL64).doubleValue(), 1.0e-15);
+ }
+
+ @Test
+ public void testCompareTo() {
+ BigReal first = new BigReal(1.0 / 2.0);
+ BigReal second = new BigReal(1.0 / 3.0);
+ BigReal third = new BigReal(1.0 / 2.0);
+
+ assertEquals(0, first.compareTo(first));
+ assertEquals(0, first.compareTo(third));
+ assertEquals(1, first.compareTo(second));
+ assertEquals(-1, second.compareTo(first));
+
+ }
+
+ public void testAdd() {
+ BigReal a = new BigReal("1.2345678");
+ BigReal b = new BigReal("8.7654321");
+ assertEquals(9.9999999, a.add(b).doubleValue(), 1.0e-15);
+ }
+
+ public void testSubtract() {
+ BigReal a = new BigReal("1.2345678");
+ BigReal b = new BigReal("8.7654321");
+ assertEquals( -7.5308643, a.subtract(b).doubleValue(), 1.0e-15);
+ }
+
+ public void testDivide() {
+ BigReal a = new BigReal("1.0000000000");
+ BigReal b = new BigReal("0.0009765625");
+ assertEquals(1024.0, a.divide(b).doubleValue(), 1.0e-15);
+ }
+
+ public void testMultiply() {
+ BigReal a = new BigReal("1024.0");
+ BigReal b = new BigReal("0.0009765625");
+ assertEquals(1.0, a.multiply(b).doubleValue(), 1.0e-15);
+ }
+
+ @Test
+ public void testDoubleValue() {
+ assertEquals(0.5, new BigReal(0.5).doubleValue(), 1.0e-15);
+ }
+
+ @Test
+ public void testBigDecimalValue() {
+ BigDecimal pi = new BigDecimal("3.1415926535897932384626433832795028841971693993751");
+ assertEquals(pi, new BigReal(pi).bigDecimalValue());
+ assertEquals(new BigDecimal(0.5), new BigReal(1.0 / 2.0).bigDecimalValue());
+ }
+
+ @Test
+ public void testEqualsAndHashCode() {
+ BigReal zero = new BigReal(0.0);
+ BigReal nullReal = null;
+ assertTrue(zero.equals(zero));
+ assertFalse(zero.equals(nullReal));
+ assertFalse(zero.equals(Double.valueOf(0)));
+ BigReal zero2 = new BigReal(0.0);
+ assertTrue(zero.equals(zero2));
+ assertEquals(zero.hashCode(), zero2.hashCode());
+ BigReal one = new BigReal(1.0);
+ assertFalse((one.equals(zero) || zero.equals(one)));
+ assertTrue(one.equals(BigReal.ONE));
+ }
+
+ public void testSerial() {
+ BigReal[] Reals = {
+ new BigReal(3.0), BigReal.ONE, BigReal.ZERO,
+ new BigReal(17), new BigReal(Math.PI),
+ new BigReal(-2.5)
+ };
+ for (BigReal Real : Reals) {
+ assertEquals(Real, TestUtils.serializeAndRecover(Real));
+ }
+ }
+
+}
Propchange: commons/proper/math/trunk/src/test/org/apache/commons/math/util/BigRealTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: commons/proper/math/trunk/src/test/org/apache/commons/math/util/BigRealTest.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision