blob: 63543df03af7b585714098d010c6384b91d55294 [file] [log] [blame]
/*
* Copyright 2010-2022 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the LICENSE file.
*/
import Kt
private func testCustomComponentMethodsAreAccessible() throws {
let d = DataClassWithExplicitComponentMethod(x: 1, y: 2)
try assertEquals(actual: d.component1(arg: 3), expected: 4)
}
private func testDataClassWithInheritedComponentAreAccessible() throws {
let d = DataClassWithInheritedComponentMethod(x: 1)
try assertEquals(actual: d.component1(), expected: 1)
}
// Absence of deprecation attributes is checked by comparing "lazy header".
private func testRegularComponentMethodsAreAccessible() throws {
let r = RegularClassWithComponentMethods()
try assertEquals(actual: r.component1(), expected: 3)
try assertEquals(actual: r.component3(), expected: 4)
}
private func testTopLevelComponentMethodsAreAccessible() throws {
try assertEquals(actual: DataClassComponentMethodsKt.component1(), expected: 5)
try assertEquals(actual: DataClassComponentMethodsKt.component4(), expected: 6)
}
private func testComponentExportedOrNot() throws {
try assertFalse(class_respondsToSelector(object_getClass(DataClassWithStrangeNames.self), NSSelectorFromString("component1")));
try assertFalse(class_respondsToSelector(object_getClass(DataClassWithStrangeNames.self), NSSelectorFromString("component2")));
try assertFalse(class_respondsToSelector(object_getClass(DataClassWithStrangeNames.self), NSSelectorFromString("component15")));
let r = DataClassWithStrangeNames(component124: 1, componentABC:2)
try assertEquals(actual: r.component124, expected: 1)
try assertEquals(actual: r.componentABC, expected: 2)
try assertEquals(actual: r.component16(), expected: 1)
}
class DataClassComponentMethodsTests : SimpleTestProvider {
override init() {
super.init()
test("testDataClassWithInheritedComponentAreAccessible", testDataClassWithInheritedComponentAreAccessible)
test("testCustomComponentMethodsAreAccessible", testCustomComponentMethodsAreAccessible)
test("testRegularComponentMethodsAreAccessible", testRegularComponentMethodsAreAccessible)
test("testTopLevelComponentMethodsAreAccessible", testTopLevelComponentMethodsAreAccessible)
test("testComponentExportedOrNot", testComponentExportedOrNot)
}
}