summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/library/scala/BigDecimal.scala9
-rw-r--r--test/files/jvm/bigints.check14
-rw-r--r--test/files/jvm/bigints.scala93
3 files changed, 69 insertions, 47 deletions
diff --git a/src/library/scala/BigDecimal.scala b/src/library/scala/BigDecimal.scala
index e551763c4e..8fd38c0d51 100644
--- a/src/library/scala/BigDecimal.scala
+++ b/src/library/scala/BigDecimal.scala
@@ -89,9 +89,18 @@ object BigDecimal {
/** Implicit conversion from <code>Long</code> to <code>BigDecimal</code>. */
implicit def long2bigDecimal(l: Long): BigDecimal = apply(l)
+ /** Implicit conversion from <code>Float</code> to <code>BigDecimal</code>. */
+ implicit def float2bigDecimal(f: Float): BigDecimal = apply(f)
+
/** Implicit conversion from <code>Double</code> to <code>BigDecimal</code>. */
implicit def double2bigDecimal(d: Double): BigDecimal = apply(d)
+ /** Implicit conversion from <code>String</code> to <code>BigDecimal</code>. */
+ implicit def string2bigDecimal(s: String): BigDecimal = apply(s)
+
+ /** Implicit conversion from <code>BigInt</code> to <code>BigDecimal</code>. */
+ implicit def bigInt2bigDecimal(x: BigInt): BigDecimal = apply(x)
+
/** Implicit conversion from BigDecimal to <code>Ordered</code>. */
implicit def bigDecimal2ordered(x: BigDecimal): Ordered[BigDecimal] =
new Ordered[BigDecimal] with Proxy {
diff --git a/test/files/jvm/bigints.check b/test/files/jvm/bigints.check
deleted file mode 100644
index 3e67ff1255..0000000000
--- a/test/files/jvm/bigints.check
+++ /dev/null
@@ -1,14 +0,0 @@
-3
-true
-false
-true
-true
-
-3
-true
-false
-true
-true
-9223372036854775806
-false
-true
diff --git a/test/files/jvm/bigints.scala b/test/files/jvm/bigints.scala
index 5daea0e638..efb5139180 100644
--- a/test/files/jvm/bigints.scala
+++ b/test/files/jvm/bigints.scala
@@ -1,38 +1,65 @@
-object Test extends Application {
- Test1
- Test2
+//############################################################################
+// BigInt, BigDecimal
+//############################################################################
+// $Id$
+
+//############################################################################
+
+import testing.SUnit._
+
+/** Test the Scala implementation of class <code>scala.BigDecimal</code>.
+*
+* @author Stephane Micheloud
+*/
+object Test extends TestConsoleMain {
+ def suite = new TestSuite(
+ Test_BigInt,
+ Test_BigDecimal
+ )
}
-object Test1 {
- import BigInt._
-
- val x: BigInt = 1
- val y = x + 1
- val z = 1 + y
- println(z)
- println(z <= 3)
- println(3 < z)
- println(z == 3)
- println(3 == z)
- println()
+object Test_BigInt extends TestCase("BigInt") with Assert {
+ override def enableStackTrace = false
+ override def runTest {
+ import BigInt._
+
+ val x: BigInt = 1
+ val y = x + 1
+ val z = 1 + y
+ assertEquals("int_add_bigint", 1+y, y+1)
+ assertEquals("int_sub_bigint", 1-y, -(y-1))
+ assertEquals("int_mul_bigint", 2*x*y, y*x*2)
+ assertTrue("z_<=_3", z <= 3)
+ assertFalse("3_<_z", 3 < z)
+ assertTrue("z_==_3", z == 3)
+ assertTrue("3_==_z", 3 == z)
+ }
}
-object Test2 {
- import BigDecimal._
-
- val x: BigDecimal = 1
- val y = x + 1
- val z = 1 + y
- println(z)
- println(z <= 3)
- println(3 < z)
- println(z == 3)
- println(3 == z)
-
- val a = BigDecimal(Math.MAX_LONG)
- val b = BigDecimal(Test1.x)
- val c = a - b
- println(c)
- println(c > Math.MAX_LONG)
- println(c <= Math.MAX_LONG)
+object Test_BigDecimal extends TestCase("BigDecimal") with Assert {
+ override def enableStackTrace = false
+ override def runTest {
+ import scala.BigDecimal, BigDecimal._
+
+ val xi: BigDecimal = 1
+ val xd: BigDecimal = 1.0
+ val xf: BigDecimal = 1.0f
+ val xs: BigDecimal = "1.0"
+ val xbi: BigDecimal = scala.BigInt(1)
+
+ val x: BigDecimal = 1
+ val y = x + 1
+ val z = 1 + y
+ assertTrue("z_<=_3", z <= 3)
+ assertFalse("3_<_z", 3 < z)
+ assertTrue("z_==_3", z == 3)
+ assertTrue("3_==_z", 3 == z)
+
+ val a: BigDecimal= Math.MAX_LONG
+ val b: BigDecimal = 1
+ val c = a - b
+ assertFalse("c_>_MAX_LONG", c > Math.MAX_LONG)
+ assertTrue("c_<=_MAX_LONG", c <= Math.MAX_LONG)
+ }
}
+