diff options
Diffstat (limited to 'src/test/java/org/bukkit/support')
-rw-r--r-- | src/test/java/org/bukkit/support/AbstractTestingBase.java | 21 | ||||
-rw-r--r-- | src/test/java/org/bukkit/support/Util.java | 31 |
2 files changed, 52 insertions, 0 deletions
diff --git a/src/test/java/org/bukkit/support/AbstractTestingBase.java b/src/test/java/org/bukkit/support/AbstractTestingBase.java new file mode 100644 index 00000000..ca14db9b --- /dev/null +++ b/src/test/java/org/bukkit/support/AbstractTestingBase.java @@ -0,0 +1,21 @@ +package org.bukkit.support; + +import net.minecraft.server.StatisticList; + +import org.junit.BeforeClass; + +/** + * If you are getting: java.lang.ExceptionInInitializerError + * at net.minecraft.server.StatisticList.<clinit>(SourceFile:58) + * at net.minecraft.server.Item.<clinit>(SourceFile:252) + * at net.minecraft.server.Block.<clinit>(Block.java:577) + * + * extend this class to solve it. + */ +public abstract class AbstractTestingBase { + + @BeforeClass + public static void setup() { + StatisticList.a(); + } +}
\ No newline at end of file diff --git a/src/test/java/org/bukkit/support/Util.java b/src/test/java/org/bukkit/support/Util.java new file mode 100644 index 00000000..2f24d9a4 --- /dev/null +++ b/src/test/java/org/bukkit/support/Util.java @@ -0,0 +1,31 @@ +package org.bukkit.support; + +import java.lang.reflect.Field; + +public class Util { + /* + public static <T> T getInternalState(Object object, String fieldName) { + return getInternalState(object.getClass(), object, fieldName); + } + */ + + @SuppressWarnings("unchecked") + public static <T> T getInternalState(Class<?> clazz, Object object, String fieldName) { + Field field; + try { + field = clazz.getDeclaredField(fieldName); + } catch (SecurityException e) { + throw new RuntimeException("Not allowed to access " + clazz, e); + } catch (NoSuchFieldException e) { + throw new RuntimeException("Unable to find field " + fieldName, e); + } + + field.setAccessible(true); + try { + return (T) field.get(object); + } catch (IllegalArgumentException e) { + } catch (IllegalAccessException e) { + } + throw new RuntimeException("Unable to get internal value"); + } +} |