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);
+ }
+ }
+
+}