diff --git a/kotlin/tests/src/test/kotlin/com/squareup/moshi/kotlin/codegen/GeneratedAdaptersTest.kt b/kotlin/tests/src/test/kotlin/com/squareup/moshi/kotlin/codegen/GeneratedAdaptersTest.kt index aa756fb..4bfd54d 100644 --- a/kotlin/tests/src/test/kotlin/com/squareup/moshi/kotlin/codegen/GeneratedAdaptersTest.kt +++ b/kotlin/tests/src/test/kotlin/com/squareup/moshi/kotlin/codegen/GeneratedAdaptersTest.kt @@ -35,6 +35,7 @@ import org.junit.Assert.fail import org.junit.Ignore import org.junit.Test import java.util.Locale +import kotlin.properties.Delegates import kotlin.reflect.full.memberProperties @ExperimentalStdlibApi @@ -563,6 +564,38 @@ class GeneratedAdaptersTest { } } + @Test fun transientDelegateProperty() { + val jsonAdapter = moshi.adapter() + + val encoded = TransientDelegateProperty() + encoded.a = 3 + encoded.setB(4) + encoded.c = 5 + assertThat(jsonAdapter.toJson(encoded)).isEqualTo("""{"c":5}""") + + val decoded = jsonAdapter.fromJson("""{"a":4,"b":5,"c":6}""")!! + assertThat(decoded.a).isEqualTo(-1) + assertThat(decoded.getB()).isEqualTo(-1) + assertThat(decoded.c).isEqualTo(6) + } + + @JsonClass(generateAdapter = true) + class TransientDelegateProperty { + + private fun delegate(initial: T) = Delegates.observable(initial) { _, _, _-> } + + @delegate:Transient var a: Int by delegate(-1) + @delegate:Transient private var b: Int by delegate(-1) + var c: Int by delegate(-1) + + @JvmName("getBPublic") + fun getB() = b + @JvmName("setBPublic") + fun setB(b: Int) { + this.b = b + } + } + @Test fun manyProperties32() { val moshi = Moshi.Builder().build() val jsonAdapter = moshi.adapter()