/* * 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) } }