diff options
author | Paul Phillips <paulp@improving.org> | 2009-11-12 22:13:04 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2009-11-12 22:13:04 +0000 |
commit | b88e47ced9595d4193723c41e491bac318a59b80 (patch) | |
tree | 3006e49f4949633f131f05dd415875301c621b77 /test/files/run | |
parent | 07c295560c191297b3e4dae591878913b6461f74 (diff) | |
download | scala-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')
-rw-r--r-- | test/files/run/equality.scala | 36 |
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 + } +} |