diff options
author | Paul Phillips <paulp@improving.org> | 2010-09-28 00:51:25 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2010-09-28 00:51:25 +0000 |
commit | 9c0e58c48da4cdbae7c96ef45fc15cd7aff4301f (patch) | |
tree | 857d48a844aa0479863f79c2a991984ac6a0104f /test/files/scalacheck/primitive-eqeq.scala | |
parent | a56c33b6a470939a1396015972f09e19dc493245 (diff) | |
download | scala-9c0e58c48da4cdbae7c96ef45fc15cd7aff4301f.tar.gz scala-9c0e58c48da4cdbae7c96ef45fc15cd7aff4301f.tar.bz2 scala-9c0e58c48da4cdbae7c96ef45fc15cd7aff4301f.zip |
Cleaning up the contents of test.
including "CheckEither", written against scalacheck 1.2 in the year 471
AD. Removed all the duplicates I could find, mostly between pending
and files. Renamed a bunch of tests so they wouldn't look like likely
duplicates next time around. Nominated somebody else to do this once in
a while.
No review.
Diffstat (limited to 'test/files/scalacheck/primitive-eqeq.scala')
-rw-r--r-- | test/files/scalacheck/primitive-eqeq.scala | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/test/files/scalacheck/primitive-eqeq.scala b/test/files/scalacheck/primitive-eqeq.scala new file mode 100644 index 0000000000..60fe63c207 --- /dev/null +++ b/test/files/scalacheck/primitive-eqeq.scala @@ -0,0 +1,37 @@ +import org.scalacheck._ +import Prop._ +import Gen._ + +object Test extends Properties("==") { + def equalObjectsEqualHashcodes(x: Any, y: Any) = (x != y) || (x == y && x.## == y.##) + + // ticket #2087 + property("short/char") = forAll { (x: Short) => { + val ch: Char = x.toChar + (x == ch) == (ch == x) + } + } + + property("symmetry") = forAll { (x: AnyVal, y: AnyVal) => (x == y) == (y == x) } + property("transitivity") = forAll { (x: AnyVal, y: AnyVal, z: AnyVal) => x != y || y != z || x == z } + + property("##") = forAll { + (x: Short) => { + val anyvals = List(x.toByte, x.toChar, x, x.toInt, x.toLong, x.toFloat, x.toDouble, BigInt(x), BigDecimal(x)) + val shortAndLarger = anyvals drop 2 + + val result = ( + ((anyvals, anyvals).zipped forall equalObjectsEqualHashcodes) && + ((shortAndLarger, shortAndLarger).zipped forall (_ == _)) && + ((shortAndLarger, shortAndLarger).zipped forall ((x, y) => (x: Any) == (y: Any))) + ) + result + } + } + property("## 2") = forAll { + (dv: Double) => { + val fv = dv.toFloat + (fv != dv) || (fv.## == dv.##) + } + } +} |