/* * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ package test.reflection import test.* import kotlin.reflect.* import kotlin.test.* class KClassTest { @Test fun className() { assertEquals("KClassTest", KClassTest::class.simpleName) // assertEquals(null, object {}::class.simpleName) // doesn't work as documented in JDK < 9, see KT-23072 } @Test fun extendsKClassifier() { assertStaticAndRuntimeTypeIs(KClassTest::class) } @Test fun isInstanceCastSafeCast() { fun checkIsInstance(kclass: KClass, value: Any?, expectedResult: Boolean) { if (expectedResult) { assertTrue(kclass.isInstance(value)) assertSame(value, kclass.safeCast(value)) assertSame(value, kclass.cast(value)) } else { assertFalse(kclass.isInstance(value)) assertNull(kclass.safeCast(value)) assertFailsWith { kclass.cast(value) } } } val numberClass = Number::class checkIsInstance(numberClass, 1, true) checkIsInstance(numberClass, 1.0, true) checkIsInstance(numberClass, null, false) checkIsInstance(numberClass, "42", false) } }