999692529367efd5004d6e75541496091546778f
[Sone.git] / src / test / kotlin / net / pterodactylus / sone / test / TestUtils.kt
1 package net.pterodactylus.sone.test
2
3 import java.lang.reflect.*
4
5 private val modifiers = Field::class.java.getDeclaredField("modifiers").apply {
6         isAccessible = true
7 }
8
9 fun setField(instance: Any, name: String, value: Any?) {
10         generateSequence<Class<*>>(instance.javaClass) { it.superclass }
11                         .flatMap { it.declaredFields.asSequence() }
12                         .filter { it.name == name }
13                         .toList()
14                         .forEach { field ->
15                                 field.isAccessible = true
16                                 modifiers.setInt(field, field.modifiers and Modifier.FINAL.inv())
17                                 field.set(instance, value)
18                         }
19 }