X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Ftest%2FTestUtils.kt;fp=src%2Ftest%2Fkotlin%2Fnet%2Fpterodactylus%2Fsone%2Ftest%2FTestUtils.kt;h=999692529367efd5004d6e75541496091546778f;hp=0000000000000000000000000000000000000000;hb=70ae04e2fd5ffa01c6f000f74ec8ece826ab7b2b;hpb=a73938206e78e061bc63db07391623ee6a218845 diff --git a/src/test/kotlin/net/pterodactylus/sone/test/TestUtils.kt b/src/test/kotlin/net/pterodactylus/sone/test/TestUtils.kt new file mode 100644 index 0000000..9996925 --- /dev/null +++ b/src/test/kotlin/net/pterodactylus/sone/test/TestUtils.kt @@ -0,0 +1,19 @@ +package net.pterodactylus.sone.test + +import java.lang.reflect.* + +private val modifiers = Field::class.java.getDeclaredField("modifiers").apply { + isAccessible = true +} + +fun setField(instance: Any, name: String, value: Any?) { + generateSequence>(instance.javaClass) { it.superclass } + .flatMap { it.declaredFields.asSequence() } + .filter { it.name == name } + .toList() + .forEach { field -> + field.isAccessible = true + modifiers.setInt(field, field.modifiers and Modifier.FINAL.inv()) + field.set(instance, value) + } +}