backend/tests: add cast_null and unchecked_cast3

This commit is contained in:
Svyatoslav Scherbina
2017-01-23 11:04:42 +07:00
committed by SvyatoslavScherbina
parent ef6c5364a6
commit 16ca882298
3 changed files with 93 additions and 0 deletions
@@ -0,0 +1,48 @@
fun main(args: Array<String>) {
testCast(null, false)
testCastToNullable(null, true)
testCastToNullable(Test(), true)
testCastToNullable("", false)
testCastNotNullableToNullable(Test(), true)
testCastNotNullableToNullable("", false)
println("Ok")
}
class Test
fun ensure(b: Boolean) {
if (!b) {
println("Error")
}
}
fun testCast(x: Any?, expectSuccess: Boolean) {
try {
x as Test
} catch (e: Throwable) {
ensure(!expectSuccess)
return
}
ensure(expectSuccess)
}
fun testCastToNullable(x: Any?, expectSuccess: Boolean) {
try {
x as Test?
} catch (e: Throwable) {
ensure(!expectSuccess)
return
}
ensure(expectSuccess)
}
fun testCastNotNullableToNullable(x: Any, expectSuccess: Boolean) {
try {
x as Test?
} catch (e: Throwable) {
ensure(!expectSuccess)
return
}
ensure(expectSuccess)
}