File: hashhash.scala

package info (click to toggle)
scala 2.11.12-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 62,924 kB
  • sloc: javascript: 28,808; java: 13,415; xml: 3,135; sh: 1,620; python: 756; makefile: 38; awk: 36; ansic: 6
file content (23 lines) | stat: -rw-r--r-- 853 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
object Test {
  def confirmSame(x: Any)       = assert(x.## == x.hashCode, "%s.## != %s.hashCode".format(x, x))
  def confirmDifferent(x: Any)  = assert(x.## != x.hashCode, "%s.## == %s.hashCode (but should not)".format(x, x))

  def main(args: Array[String]): Unit = {
    /** Just a little sanity check, not to be confused with a unit test. */
    List(5, 5.5f, "abc", new AnyRef, ()) foreach confirmSame
    List(5.0f, 1.0d, -(5.0f), (-1.0d)) foreach confirmDifferent

    val x = (BigInt(1) << 64).toDouble
    val y: Any = x
    val f: Float = x.toFloat
    val jn: java.lang.Number = x
    val jf: java.lang.Float = x.toFloat
    val jd: java.lang.Double = x

    assert(x.## == y.##, ((x, y)))
    assert(x.## == f.##, ((x, f)))
    assert(x.## == jn.##, ((x, jn)))
    assert(x.## == jf.##, ((x, jf)))
    assert(x.## == jd.##, ((x, jd)))
  }
}