X-Git-Url: https://git.pterodactylus.net/?p=Sone.git;a=blobdiff_plain;f=src%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2FTestUtil.java;fp=src%2Ftest%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2FTestUtil.java;h=d1a4d04797e1e9cdbcae2d2aec811ffc785211f9;hp=0000000000000000000000000000000000000000;hb=8677d84408d2495fe6c3e114e64accd28d6576ec;hpb=f9ec36b55750b14c7aec195e7f3ff092a570003d diff --git a/src/test/java/net/pterodactylus/sone/TestUtil.java b/src/test/java/net/pterodactylus/sone/TestUtil.java new file mode 100644 index 0000000..d1a4d04 --- /dev/null +++ b/src/test/java/net/pterodactylus/sone/TestUtil.java @@ -0,0 +1,40 @@ +package net.pterodactylus.sone; + +import java.lang.reflect.Field; +import java.lang.reflect.Modifier; + +/** + * Utilities for testing. + * + * @author David ‘Bombe’ Roden + */ +public class TestUtil { + + public static void setFinalField(Object object, String fieldName, Object value) { + try { + Field clientCoreField = object.getClass().getField(fieldName); + clientCoreField.setAccessible(true); + Field modifiersField = Field.class.getDeclaredField("modifiers"); + modifiersField.setAccessible(true); + modifiersField.setInt(clientCoreField, clientCoreField.getModifiers() & ~Modifier.FINAL); + clientCoreField.set(object, value); + } catch (NoSuchFieldException e) { + throw new RuntimeException(e); + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } + } + + public static T getPrivateField(Object object, String fieldName) { + try { + Field field = object.getClass().getDeclaredField(fieldName); + field.setAccessible(true); + return (T) field.get(object); + } catch (NoSuchFieldException e) { + throw new RuntimeException(e); + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } + } + +}