summaryrefslogtreecommitdiff
path: root/test/files/run/equality.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2009-11-12 22:13:04 +0000
committerPaul Phillips <paulp@improving.org>2009-11-12 22:13:04 +0000
commitb88e47ced9595d4193723c41e491bac318a59b80 (patch)
tree3006e49f4949633f131f05dd415875301c621b77 /test/files/run/equality.scala
parent07c295560c191297b3e4dae591878913b6461f74 (diff)
downloadscala-b88e47ced9595d4193723c41e491bac318a59b80.tar.gz
scala-b88e47ced9595d4193723c41e491bac318a59b80.tar.bz2
scala-b88e47ced9595d4193723c41e491bac318a59b80.zip
Bringing BigInt and BigDecimal into the club of...
Bringing BigInt and BigDecimal into the club of things which can be equal to one another and which will have the same hashCode. Fixed some old and some new bugs associated with equality. Note: not fully optimized.
Diffstat (limited to 'test/files/run/equality.scala')
-rw-r--r--test/files/run/equality.scala36
1 files changed, 36 insertions, 0 deletions
diff --git a/test/files/run/equality.scala b/test/files/run/equality.scala
new file mode 100644
index 0000000000..5b9ad207da
--- /dev/null
+++ b/test/files/run/equality.scala
@@ -0,0 +1,36 @@
+// a quickly assembled test of equality. Needs work.
+object Test
+{
+ def makeFromInt(x: Int) = List(
+ x.toByte, x.toShort, x.toInt, x.toLong, x.toFloat, x.toDouble, BigInt(x), BigDecimal(x)
+ ) ::: (
+ if (x < 0) Nil else List(x.toChar)
+ )
+ def makeFromDouble(x: Double) = List(
+ x.toShort, x.toInt, x.toLong, x.toFloat, x.toDouble, BigInt(x.toInt), BigDecimal(x)
+ )
+
+ def main(args: Array[String]): Unit = {
+ var xs = makeFromInt(5)
+ for (x <- xs ; y <- xs) {
+ assert(x == y, x + " == " + y)
+ assert(hash(x) == hash(y), "hash(%s) == hash(%s)".format(x, y))
+ }
+
+ xs = makeFromInt(-5)
+ for (x <- xs ; y <- xs) {
+ assert(x == y, x + " == " + y)
+ assert(hash(x) == hash(y), "hash(%s) == hash(%s)".format(x, y))
+ }
+
+ xs = makeFromDouble(500.0)
+ for (x <- xs ; y <- xs) {
+ assert(x == y, x + " == " + y)
+ assert(hash(x) == hash(y), "hash(%s) == hash(%s)".format(x, y))
+ }
+
+ // negatives
+ val bigLong = new java.util.concurrent.atomic.AtomicLong(Long.MaxValue)
+ assert(-1 != bigLong && bigLong != -1) // bigLong.intValue() == -1
+ }
+}