diff --git a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/ParcelBoxTestGenerated.java b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/ParcelBoxTestGenerated.java index 259df8d59da..0e5c9d3e2ff 100644 --- a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/ParcelBoxTestGenerated.java +++ b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/ParcelBoxTestGenerated.java @@ -209,6 +209,11 @@ public class ParcelBoxTestGenerated extends AbstractParcelBoxTest { runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/openParcelize.kt"); } + @TestMetadata("persistableBundle.kt") + public void testPersistableBundle() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/persistableBundle.kt"); + } + @TestMetadata("primitiveTypes.kt") public void testPrimitiveTypes() throws Exception { runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/primitiveTypes.kt"); diff --git a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/ParcelIrBoxTestGenerated.java b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/ParcelIrBoxTestGenerated.java index eaa8a30d7b9..b0505645166 100644 --- a/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/ParcelIrBoxTestGenerated.java +++ b/plugins/android-extensions/android-extensions-compiler/test/org/jetbrains/kotlin/android/parcel/ParcelIrBoxTestGenerated.java @@ -209,6 +209,11 @@ public class ParcelIrBoxTestGenerated extends AbstractParcelIrBoxTest { runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/openParcelize.kt"); } + @TestMetadata("persistableBundle.kt") + public void testPersistableBundle() throws Exception { + runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/persistableBundle.kt"); + } + @TestMetadata("primitiveTypes.kt") public void testPrimitiveTypes() throws Exception { runTest("plugins/android-extensions/android-extensions-compiler/testData/parcel/box/primitiveTypes.kt"); diff --git a/plugins/android-extensions/android-extensions-compiler/testData/parcel/box/persistableBundle.kt b/plugins/android-extensions/android-extensions-compiler/testData/parcel/box/persistableBundle.kt new file mode 100644 index 00000000000..ef05266c19b --- /dev/null +++ b/plugins/android-extensions/android-extensions-compiler/testData/parcel/box/persistableBundle.kt @@ -0,0 +1,40 @@ +// IGNORE_BACKEND: JVM +// See KT-38104 +// The support for PersistableBundles is broken on JVM. +// WITH_RUNTIME + +@file:JvmName("TestKt") +package test + +import kotlinx.android.parcel.* +import android.os.Parcel +import android.os.Parcelable +import android.os.BaseBundle +import android.os.PersistableBundle + +@Parcelize +data class User(val a: PersistableBundle) : Parcelable + +fun box() = parcelTest { parcel -> + val test = User( + PersistableBundle().apply { putLong("A", 1L) } + ) + test.writeToParcel(parcel, 0) + + val bytes = parcel.marshall() + parcel.unmarshall(bytes, 0, bytes.size) + + val test2 = readFromParcel(parcel) + + assert(compareBundles(test.a, test2.a)) +} + +private fun compareBundles(first: BaseBundle, second: BaseBundle): Boolean { + if (first.size() != second.size()) return false + + for (key in first.keySet()) { + if (first.get(key) != second.get(key)) return false + } + + return true +}