summaryrefslogtreecommitdiff
path: root/test/files/run/numbereq.scala
diff options
context:
space:
mode:
authorDmitry Nadezhin <Dmitry.Nadezhin@gmail.com>2012-04-02 10:29:25 +0400
committerDmitry Nadezhin <Dmitry.Nadezhin@gmail.com>2012-04-02 10:29:25 +0400
commit883ca63361a039f27e412eb0cb1bee7e9742a0bb (patch)
tree94faf198670c55ee613a2e182ce740bee75ce837 /test/files/run/numbereq.scala
parentf7535f72903f083b2444fb1d0b73363efa5482e9 (diff)
downloadscala-883ca63361a039f27e412eb0cb1bee7e9742a0bb.tar.gz
scala-883ca63361a039f27e412eb0cb1bee7e9742a0bb.tar.bz2
scala-883ca63361a039f27e412eb0cb1bee7e9742a0bb.zip
SI-5627 BigInt.equals(Number) and BigDecimal.equals(Number) should implement equality in mathematical sense
Diffstat (limited to 'test/files/run/numbereq.scala')
-rw-r--r--test/files/run/numbereq.scala35
1 files changed, 33 insertions, 2 deletions
diff --git a/test/files/run/numbereq.scala b/test/files/run/numbereq.scala
index 77a217df36..a1f11da205 100644
--- a/test/files/run/numbereq.scala
+++ b/test/files/run/numbereq.scala
@@ -16,7 +16,20 @@ object Test {
base ::: extras
}
-
+
+ def mkNumbers(x: BigInt): List[AnyRef] = {
+ List(
+ List(BigDecimal(x, java.math.MathContext.UNLIMITED)),
+ List(x),
+ if (x.isValidDouble) List(new java.lang.Double(x.toDouble)) else Nil,
+ if (x.isValidFloat) List(new java.lang.Float(x.toFloat)) else Nil,
+ if (x.isValidLong) List(new java.lang.Long(x.toLong)) else Nil,
+ if (x.isValidInt) List(new java.lang.Integer(x.toInt)) else Nil,
+ if (x.isValidShort) List(new java.lang.Short(x.toShort)) else Nil,
+ if (x.isValidByte) List(new java.lang.Byte(x.toByte)) else Nil,
+ if (x.isValidChar) List(new java.lang.Character(x.toChar)) else Nil
+ ).flatten
+ }
def main(args: Array[String]): Unit = {
val ints = (0 to 15).toList map (Short.MinValue >> _)
@@ -37,5 +50,23 @@ object Test {
assert(x == y, "%s/%s != %s/%s".format(x, x.getClass, y, y.getClass))
assert(x.## == y.##, "%s != %s".format(x.getClass, y.getClass))
}
+
+ val bigInts = (0 to 1024).toList map (BigInt(-1) << _)
+ val bigInts2 = bigInts map (x => -x)
+ val bigInts3 = bigInts map (_ + 1)
+ val bigInts4 = bigInts2 map (_ - 1)
+
+ val setneg1b = bigInts map mkNumbers
+ val setneg2b = bigInts3 map mkNumbers
+ val setpos1b = bigInts2 map mkNumbers
+ val setpos2b = bigInts4 map mkNumbers
+
+ val sets2 = setneg1 ++ setneg1b ++ setneg2 ++ setneg2b ++ List(zero) ++ setpos1 ++ setpos1b ++ setpos2 ++ setpos2b
+
+ for (set <- sets2 ; x <- set ; y <- set) {
+// println("'%s' == '%s' (%s == %s) (%s == %s)".format(x, y, x.hashCode, y.hashCode, x.##, y.##))
+ assert(x == y, "%s/%s != %s/%s".format(x, x.getClass, y, y.getClass))
+// assert(x.## == y.##, "%s != %s".format(x.getClass, y.getClass)) Disable until Double.## is fixed (SI-5640)
+ }
}
-} \ No newline at end of file
+}