blob: b0f72e68aeee7520593122255b36bbc2045cc17e [file]
// WITH_STDLIB
@file:JvmName("TestKt")
package test
import kotlinx.parcelize.*
import android.graphics.Color
import android.graphics.Typeface
import android.os.Parcel
import android.os.Parcelable
import android.text.Spannable
import android.text.SpannableString
import android.text.style.ForegroundColorSpan
import android.text.style.StyleSpan
@Parcelize
data class Test(val spanned: SpannableString) : Parcelable
fun box() = parcelTest { parcel ->
val originalSpannable = SpannableString("Hello World").apply {
setSpan(ForegroundColorSpan(Color.RED), 0, 5, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
setSpan(StyleSpan(Typeface.BOLD), 6, 11, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE)
}
val test = Test(originalSpannable)
test.writeToParcel(parcel, 0)
val bytes = parcel.marshall()
parcel.unmarshall(bytes, 0, bytes.size)
parcel.setDataPosition(0)
val test2 = parcelableCreator<Test>().createFromParcel(parcel)
assert(test.spanned.toString() == test2.spanned.toString())
val colorSpans = test2.spanned.getSpans(0, 5, ForegroundColorSpan::class.java)
assert(colorSpans.size == 1)
assert(colorSpans[0].foregroundColor == Color.RED)
assert(test2.spanned.getSpanStart(colorSpans[0]) == 0)
assert(test2.spanned.getSpanEnd(colorSpans[0]) == 5)
val styleSpans = test2.spanned.getSpans(6, 11, StyleSpan::class.java)
assert(styleSpans.size == 1)
assert(styleSpans[0].style == Typeface.BOLD)
assert(test2.spanned.getSpanStart(styleSpans[0]) == 6)
assert(test2.spanned.getSpanEnd(styleSpans[0]) == 11)
}