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