mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-05-09 15:53:37 +00:00
67 lines
1.6 KiB
Kotlin
Vendored
67 lines
1.6 KiB
Kotlin
Vendored
// TODO: muted automatically, investigate should it be ran for JS or not
|
|
// IGNORE_BACKEND: JS
|
|
|
|
// WITH_REFLECT
|
|
|
|
import kotlin.test.assertEquals
|
|
import kotlin.test.assertNotEquals
|
|
|
|
annotation class D(val d: Double)
|
|
annotation class F(val f: Float)
|
|
|
|
/*
|
|
// TODO: uncomment once KT-13887 is implemented
|
|
@D(Double.NaN)
|
|
fun dnan() {}
|
|
|
|
@F(Float.NaN)
|
|
fun fnan() {}
|
|
*/
|
|
|
|
@D(-0.0)
|
|
fun dMinusZero() {}
|
|
@D(+0.0)
|
|
fun dPlusZero() {}
|
|
|
|
@F(-0.0f)
|
|
fun fMinusZero() {}
|
|
@F(+0.0f)
|
|
fun fPlusZero() {}
|
|
|
|
fun check(x: Any, y: Any) {
|
|
assertEquals(x, y)
|
|
assertEquals(y, x)
|
|
assertEquals(x.hashCode(), y.hashCode())
|
|
assertEquals(x.toString(), y.toString())
|
|
}
|
|
|
|
fun checkNot(x: Any, y: Any) {
|
|
assertNotEquals(x, y)
|
|
assertNotEquals(y, x)
|
|
assertNotEquals(x.hashCode(), y.hashCode())
|
|
assertNotEquals(x.toString(), y.toString())
|
|
}
|
|
|
|
fun box(): String {
|
|
/*
|
|
check(::dnan.annotations.single() as D, D::class.constructors.single().call(Double.NaN))
|
|
check(::fnan.annotations.single() as F, F::class.constructors.single().call(Float.NaN))
|
|
*/
|
|
|
|
val dmz = D::class.constructors.single().call(-0.0)
|
|
val dpz = D::class.constructors.single().call(+0.0)
|
|
val fmz = F::class.constructors.single().call(-0.0f)
|
|
val fpz = F::class.constructors.single().call(+0.0f)
|
|
check(::dMinusZero.annotations.single() as D, dmz)
|
|
check(::dPlusZero.annotations.single() as D, dpz)
|
|
check(::fMinusZero.annotations.single() as F, fmz)
|
|
check(::fPlusZero.annotations.single() as F, fpz)
|
|
|
|
checkNot(dmz, dpz)
|
|
checkNot(fmz, fpz)
|
|
checkNot(dmz, fmz)
|
|
checkNot(dpz, fpz)
|
|
|
|
return "OK"
|
|
}
|