1 package net.pterodactylus.sone;
3 import java.lang.reflect.Field;
4 import java.lang.reflect.Modifier;
7 * Utilities for testing.
9 * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
11 public class TestUtil {
13 public static void setFinalField(Object object, String fieldName, Object value) {
15 Field clientCoreField = object.getClass().getField(fieldName);
16 clientCoreField.setAccessible(true);
17 Field modifiersField = Field.class.getDeclaredField("modifiers");
18 modifiersField.setAccessible(true);
19 modifiersField.setInt(clientCoreField, clientCoreField.getModifiers() & ~Modifier.FINAL);
20 clientCoreField.set(object, value);
21 } catch (NoSuchFieldException e) {
22 throw new RuntimeException(e);
23 } catch (IllegalAccessException e) {
24 throw new RuntimeException(e);
28 public static <T> T getPrivateField(Object object, String fieldName) {
30 Field field = object.getClass().getDeclaredField(fieldName);
31 field.setAccessible(true);
32 return (T) field.get(object);
33 } catch (NoSuchFieldException e) {
34 throw new RuntimeException(e);
35 } catch (IllegalAccessException e) {
36 throw new RuntimeException(e);