From e996d5dda2aac23dcd00ab3194737ed0e950e0c4 Mon Sep 17 00:00:00 2001 From: Eduardo Speroni Date: Fri, 7 Jul 2023 10:50:38 -0300 Subject: [PATCH] test: add nested companion class test case --- .../companions/testCompanionObjectsSupport.js | 44 +++++++++++++++++++ ...inEnumClassWithCompanionWithNestedClass.kt | 28 ++++++++++++ ...mClassWithNamedCompanionWithNestedClass.kt | 29 ++++++++++++ 3 files changed, 101 insertions(+) create mode 100644 test-app/app/src/main/java/com/tns/tests/kotlin/companions/KotlinEnumClassWithCompanionWithNestedClass.kt create mode 100644 test-app/app/src/main/java/com/tns/tests/kotlin/companions/KotlinEnumClassWithNamedCompanionWithNestedClass.kt diff --git a/test-app/app/src/main/assets/app/tests/kotlin/companions/testCompanionObjectsSupport.js b/test-app/app/src/main/assets/app/tests/kotlin/companions/testCompanionObjectsSupport.js index 119417d6e..a14047a2a 100644 --- a/test-app/app/src/main/assets/app/tests/kotlin/companions/testCompanionObjectsSupport.js +++ b/test-app/app/src/main/assets/app/tests/kotlin/companions/testCompanionObjectsSupport.js @@ -90,4 +90,48 @@ describe("Tests Kotlin companion objects support", function () { expect(str).toBe("someString"); }); + + it("Test Kotlin enum class companion object without a name should be supported", function () { + console.log(com.tns.tests.kotlin.companions.KotlinEnumClassWithCompanionWithNestedClass.Companion); + var stringFromCompanion = com.tns.tests.kotlin.companions.KotlinEnumClassWithCompanionWithNestedClass.Companion.getStringFromCompanion(); + expect(stringFromCompanion).toBe("testCompanion"); + + var providedStringFromCompanion = com.tns.tests.kotlin.companions.KotlinEnumClassWithCompanionWithNestedClass.Companion.getProvidedStringFromCompanion("providedString"); + expect(providedStringFromCompanion).toBe("providedString"); + + var simpleObjectFromCompanion = com.tns.tests.kotlin.companions.KotlinEnumClassWithCompanionWithNestedClass.Companion.getSimpleObjectFromCompanion(); + expect(simpleObjectFromCompanion.getSomeString()).toBe("test"); + + var simpleKotlinObject = new com.tns.tests.kotlin.SimpleKotlinObject(); + var providedSimpleObjectFromCompanion = com.tns.tests.kotlin.companions.KotlinEnumClassWithCompanionWithNestedClass.Companion.getProvidedSimpleObjectFromCompanion(simpleKotlinObject); + expect(simpleKotlinObject.equals(providedSimpleObjectFromCompanion)).toBe(true); + + var stringJvmStaticFromCompanion = com.tns.tests.kotlin.companions.KotlinEnumClassWithCompanionWithNestedClass.getStringJvmStaticFromCompanion(); + expect(stringJvmStaticFromCompanion).toBe("testCompanion"); + + var providedStringJvmStaticFromCompanion = com.tns.tests.kotlin.companions.KotlinEnumClassWithCompanionWithNestedClass.getProvidedStringJvmStaticFromCompanion("providedString"); + expect(providedStringJvmStaticFromCompanion).toBe("providedString"); + }); + + it("Test Kotlin enum class named companion object without a name should be supported", function () { + var stringFromCompanion = com.tns.tests.kotlin.companions.KotlinEnumClassWithNamedCompanionWithNestedClass.NamedCompanion.getStringFromNamedCompanion(); + expect(stringFromCompanion).toBe("testCompanion"); + + var providedStringFromCompanion = com.tns.tests.kotlin.companions.KotlinEnumClassWithNamedCompanionWithNestedClass.NamedCompanion.getProvidedStringFromNamedCompanion("providedString"); + expect(providedStringFromCompanion).toBe("providedString"); + + var simpleObjectFromCompanion = com.tns.tests.kotlin.companions.KotlinEnumClassWithNamedCompanionWithNestedClass.NamedCompanion.getSimpleObjectFromNamedCompanion(); + expect(simpleObjectFromCompanion.getSomeString()).toBe("test"); + + var simpleKotlinObject = new com.tns.tests.kotlin.SimpleKotlinObject(); + var providedSimpleObjectFromCompanion = com.tns.tests.kotlin.companions.KotlinEnumClassWithNamedCompanionWithNestedClass.NamedCompanion.getProvidedSimpleObjectFromNamedCompanion(simpleKotlinObject); + expect(simpleKotlinObject.equals(providedSimpleObjectFromCompanion)).toBe(true); + + var stringJvmStaticFromCompanion = com.tns.tests.kotlin.companions.KotlinEnumClassWithNamedCompanionWithNestedClass.getStringJvmStaticFromNamedCompanion(); + expect(stringJvmStaticFromCompanion).toBe("testCompanion"); + + var providedStringJvmStaticFromCompanion = com.tns.tests.kotlin.companions.KotlinEnumClassWithNamedCompanionWithNestedClass.getProvidedStringJvmStaticFromNamedCompanion("providedString"); + expect(providedStringJvmStaticFromCompanion).toBe("providedString"); + }); + }); \ No newline at end of file diff --git a/test-app/app/src/main/java/com/tns/tests/kotlin/companions/KotlinEnumClassWithCompanionWithNestedClass.kt b/test-app/app/src/main/java/com/tns/tests/kotlin/companions/KotlinEnumClassWithCompanionWithNestedClass.kt new file mode 100644 index 000000000..0934c40c0 --- /dev/null +++ b/test-app/app/src/main/java/com/tns/tests/kotlin/companions/KotlinEnumClassWithCompanionWithNestedClass.kt @@ -0,0 +1,28 @@ +package com.tns.tests.kotlin.companions + +import com.tns.tests.kotlin.SimpleKotlinObject + + +enum class KotlinEnumClassWithCompanionWithNestedClass { + TEST_ENTRY; + + companion object { + fun getStringFromCompanion(): String = "testCompanion" + fun getProvidedStringFromCompanion(providedString: String) = providedString + + fun getSimpleObjectFromCompanion(): SimpleKotlinObject = SimpleKotlinObject() + fun getProvidedSimpleObjectFromCompanion(providedSimpleObject: SimpleKotlinObject) = + providedSimpleObject + + @JvmStatic + fun getStringJvmStaticFromCompanion(): String = "testCompanion" + + @JvmStatic + fun getProvidedStringJvmStaticFromCompanion(providedString: String) = providedString + + class TestClass { + + } + } + +} diff --git a/test-app/app/src/main/java/com/tns/tests/kotlin/companions/KotlinEnumClassWithNamedCompanionWithNestedClass.kt b/test-app/app/src/main/java/com/tns/tests/kotlin/companions/KotlinEnumClassWithNamedCompanionWithNestedClass.kt new file mode 100644 index 000000000..e3abc1900 --- /dev/null +++ b/test-app/app/src/main/java/com/tns/tests/kotlin/companions/KotlinEnumClassWithNamedCompanionWithNestedClass.kt @@ -0,0 +1,29 @@ +package com.tns.tests.kotlin.companions + +import com.tns.tests.kotlin.SimpleKotlinObject + +enum class KotlinEnumClassWithNamedCompanionWithNestedClass { + TEST_ENTRY; + + companion object NamedCompanion { + fun getStringFromNamedCompanion(): String = "testCompanion" + fun getProvidedStringFromNamedCompanion(providedString: String) = providedString + + fun getSimpleObjectFromNamedCompanion(): SimpleKotlinObject = SimpleKotlinObject() + fun getProvidedSimpleObjectFromNamedCompanion(providedSimpleObject: SimpleKotlinObject) = + providedSimpleObject + + @JvmStatic + fun getStringJvmStaticFromNamedCompanion(): String = "testCompanion" + + @JvmStatic + fun getProvidedStringJvmStaticFromNamedCompanion(providedString: String) = + providedString + + + class TestClass { + + } + } + +} \ No newline at end of file