summaryrefslogtreecommitdiffstats
path: root/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaImplementationOverrideTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaImplementationOverrideTest.java')
-rw-r--r--src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaImplementationOverrideTest.java67
1 files changed, 67 insertions, 0 deletions
diff --git a/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaImplementationOverrideTest.java b/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaImplementationOverrideTest.java
new file mode 100644
index 00000000..ac0702a2
--- /dev/null
+++ b/src/test/java/org/bukkit/craftbukkit/inventory/ItemMetaImplementationOverrideTest.java
@@ -0,0 +1,67 @@
+package org.bukkit.craftbukkit.inventory;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.bukkit.Material;
+import org.bukkit.craftbukkit.Overridden;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+import org.junit.runners.Parameterized.Parameter;
+import org.junit.runners.Parameterized.Parameters;
+
+@RunWith(Parameterized.class)
+public class ItemMetaImplementationOverrideTest {
+ static final Class<CraftMetaItem> parent = CraftMetaItem.class;
+ static final Class<Overridden> annotation = Overridden.class;
+
+ static final List<Object[]> testData = new ArrayList<Object[]>();
+ static final Method[] methods;
+
+ static final Class<? extends CraftMetaItem>[] subclasses;
+
+ static {
+ List<Class<? extends CraftMetaItem>> classes = new ArrayList<Class<? extends CraftMetaItem>>();
+
+ for (Material material : ItemStackTest.COMPOUND_MATERIALS) {
+ Class<? extends CraftMetaItem> clazz = CraftItemFactory.instance().getItemMeta(material).getClass().asSubclass(parent);
+ if (clazz != parent) {
+ classes.add(clazz);
+ }
+ }
+ subclasses = classes.toArray(new Class[0]);
+
+
+ List<Method> list = new ArrayList<Method>();
+
+ for (Method method: parent.getDeclaredMethods()) {
+ if (method.isAnnotationPresent(annotation)) {
+ list.add(method);
+ }
+ }
+
+ for (Class<?> clazz : subclasses) {
+ for (Method method : list) {
+ testData.add(new Object[]{clazz, method, clazz.getSimpleName() + " contains " + method.getName()});
+ }
+ }
+
+ methods = list.toArray(new Method[list.size()]);
+ }
+
+ @Parameters(name="[{index}]:{2}")
+ public static List<Object[]> data() {
+ return testData;
+ }
+
+ @Parameter(0) public Class clazz;
+ @Parameter(1) public Method method;
+ @Parameter(2) public String name;
+
+ @Test
+ public void testClass() throws Throwable {
+ clazz.getDeclaredMethod(method.getName(), method.getParameterTypes());
+ }
+}