Files
kotlin-fork/plugins/parcelize/parcelize-compiler/testData/box/unsignedArrays.kt
T
Ivan Kylchik c7435ba760 Replace all occurrences of WITH_RUNTIME with WITH_STDLIB
We are going to deprecate `WITH_RUNTIME` directive. The main reason
behind this change is that `WITH_STDLIB` directive better describes
its meaning, specifically it will add kotlin stdlib to test's classpath.
2021-11-17 15:26:38 +03:00

80 lines
2.1 KiB
Kotlin
Vendored

// !OPT_IN: kotlin.ExperimentalUnsignedTypes
// WITH_STDLIB
// IGNORE_BACKEND: JVM
@file:JvmName("TestKt")
package test
import kotlinx.parcelize.*
import android.os.Parcel
import android.os.Parcelable
import java.util.Arrays
@Parcelize
data class Test(
val a: UByteArray,
val b: UShortArray,
val c: UIntArray,
val d: ULongArray,
val e: UByteArray?,
val f: UShortArray?,
val g: UIntArray?,
val h: ULongArray?
) : Parcelable {
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (other !is Test) return false
if (!a.contentEquals(other.a)) return false
if (!b.contentEquals(other.b)) return false
if (!c.contentEquals(other.c)) return false
if (!d.contentEquals(other.d)) return false
if (!e.contentEquals(other.e)) return false
if (!f.contentEquals(other.f)) return false
if (!g.contentEquals(other.g)) return false
if (!h.contentEquals(other.h)) return false
return true
}
override fun hashCode(): Int {
return 0
}
}
fun box() = parcelTest { parcel ->
val first = Test(
a = ubyteArrayOf(1U, 2U, 3U),
b = ushortArrayOf(2U, 3U, 4U),
c = uintArrayOf(3U, 4U, 5U),
d = ulongArrayOf(4U, 5U, 6U),
e = ubyteArrayOf(UByte.MAX_VALUE, UByte.MIN_VALUE),
f = ushortArrayOf(UShort.MAX_VALUE, UShort.MIN_VALUE),
g = uintArrayOf(UInt.MAX_VALUE, UInt.MIN_VALUE),
h = ulongArrayOf(ULong.MAX_VALUE, ULong.MIN_VALUE),
)
val second = Test(
a = ubyteArrayOf(),
b = ushortArrayOf(),
c = uintArrayOf(),
d = ulongArrayOf(),
e = null,
f = null,
g = null,
h = null,
)
first.writeToParcel(parcel, 0)
second.writeToParcel(parcel, 0)
val bytes = parcel.marshall()
parcel.unmarshall(bytes, 0, bytes.size)
parcel.setDataPosition(0)
val creator = parcelableCreator<Test>()
val first2 = creator.createFromParcel(parcel)
val second2 = creator.createFromParcel(parcel)
assert(first == first2)
assert(second == second2)
}