summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorSébastien Doeraene <sjrdoeraene@gmail.com>2016-04-21 15:06:25 +0200
committerSébastien Doeraene <sjrdoeraene@gmail.com>2016-04-21 15:06:25 +0200
commit8a4653637a2b693cdcc730a93e17badaac14d56e (patch)
tree9bb1bd0aa5d12a7b757a9cab51e0a07e2bf7072e /test
parent4f2a20e843c0f07352dff87767cad13636942a3e (diff)
downloadscala-8a4653637a2b693cdcc730a93e17badaac14d56e.tar.gz
scala-8a4653637a2b693cdcc730a93e17badaac14d56e.tar.bz2
scala-8a4653637a2b693cdcc730a93e17badaac14d56e.zip
Bring Statics.doubleHash in sync with BoxesRunTime.hashFromDouble.
The two algorithms were different, and could result in different hash codes for some values, namely, valid long values that were not also valid int values. The other two functions `longHash` and `floatHash` are rewritten to keep a common style with `doubleHash`, but their algorithm does not change.
Diffstat (limited to 'test')
-rw-r--r--test/junit/scala/runtime/ScalaRunTimeTest.scala8
1 files changed, 8 insertions, 0 deletions
diff --git a/test/junit/scala/runtime/ScalaRunTimeTest.scala b/test/junit/scala/runtime/ScalaRunTimeTest.scala
index 5bfb12610e..9efbdd44de 100644
--- a/test/junit/scala/runtime/ScalaRunTimeTest.scala
+++ b/test/junit/scala/runtime/ScalaRunTimeTest.scala
@@ -9,6 +9,14 @@ import org.junit.runners.JUnit4
@RunWith(classOf[JUnit4])
class ScalaRunTimeTest {
@Test
+ def hashConsistentWithStaticsHash(): Unit = {
+ val problematicValue: Double = -Math.pow(2, 53) + 1
+ val scalaRunTimeHash = ScalaRunTime.hash(problematicValue)
+ val staticsHash = Statics.anyHash(problematicValue)
+ assertEquals(scalaRunTimeHash, staticsHash)
+ }
+
+ @Test
def testStingOf() {
import ScalaRunTime.stringOf
import scala.collection._