Test equals/hashCode/toString for function references

This commit is contained in:
Alexander Udalov
2015-07-10 16:27:11 +03:00
parent f8815d9450
commit 16b5b95556
5 changed files with 73 additions and 7 deletions
@@ -0,0 +1,31 @@
import kotlin.test.*
fun top() = 42
fun Int.intExt(): Int = this
class A {
fun mem() {}
}
class B {
fun mem() {}
}
fun checkEqual(x: Any, y: Any) {
assertEquals(x, y)
assertEquals(x.hashCode(), y.hashCode(), "Elements are equal but their hash codes are not: ${x.hashCode()} != ${y.hashCode()}")
}
fun box(): String {
checkEqual(::top, ::top)
checkEqual(Int::intExt, Int::intExt)
checkEqual(A::mem, A::mem)
assertFalse(::top == Int::intExt)
assertFalse(::top == A::mem)
assertFalse(A::mem == B::mem)
return "OK"
}
@@ -0,0 +1,24 @@
package test
import kotlin.test.assertEquals
fun top() = 42
fun String.ext(): Int = 0
fun IntRange?.ext2(): Array<Int?> = arrayOfNulls(0)
class A {
fun mem(): String = ""
}
fun assertToString(s: String, x: Any) {
assertEquals(s, x.toString())
}
fun box(): String {
assertToString("fun top(): kotlin.Int", ::top)
assertToString("fun kotlin.String.ext(): kotlin.Int", String::ext)
assertToString("fun kotlin.IntRange?.ext2(): kotlin.Array<kotlin.Int?>", IntRange::ext2)
assertToString("fun test.A.mem(): kotlin.String", A::mem)
return "OK"
}
@@ -3123,18 +3123,24 @@ public class BlackBoxWithStdlibCodegenTestGenerated extends AbstractBlackBoxCode
doTestWithStdlib(fileName);
}
@TestMetadata("equalsHashCode.kt")
public void testEqualsHashCode() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/methodsFromAny/equalsHashCode.kt");
doTestWithStdlib(fileName);
}
@TestMetadata("extensionPropertyReceiverToString.kt")
public void testExtensionPropertyReceiverToString() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/methodsFromAny/extensionPropertyReceiverToString.kt");
doTestWithStdlib(fileName);
}
@TestMetadata("functionEqualsHashCode.kt")
public void testFunctionEqualsHashCode() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/methodsFromAny/functionEqualsHashCode.kt");
doTestWithStdlib(fileName);
}
@TestMetadata("functionToString.kt")
public void testFunctionToString() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/methodsFromAny/functionToString.kt");
doTestWithStdlib(fileName);
}
@TestMetadata("memberExtensionToString.kt")
public void testMemberExtensionToString() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/methodsFromAny/memberExtensionToString.kt");
@@ -3153,6 +3159,12 @@ public class BlackBoxWithStdlibCodegenTestGenerated extends AbstractBlackBoxCode
doTestWithStdlib(fileName);
}
@TestMetadata("propertyEqualsHashCode.kt")
public void testPropertyEqualsHashCode() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/methodsFromAny/propertyEqualsHashCode.kt");
doTestWithStdlib(fileName);
}
@TestMetadata("propertyToString.kt")
public void testPropertyToString() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/reflection/methodsFromAny/propertyToString.kt");
@@ -55,7 +55,6 @@ object ReflectionObjectRenderer {
}
fun renderFunction(descriptor: FunctionDescriptor): String {
// TODO: add tests
return StringBuilder {
append("fun ")
appendReceiversAndName(descriptor)