Add Unit Test to detect mismatches between EnumHelper and Enum ctor
This commit is contained in:
commit
d2989c83a7
|
@ -1,6 +1,7 @@
|
||||||
package net.minecraftforge.test;
|
package net.minecraftforge.test;
|
||||||
|
|
||||||
import java.lang.reflect.Constructor;
|
import java.lang.reflect.Constructor;
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
|
||||||
import net.minecraftforge.client.EnumHelperClient;
|
import net.minecraftforge.client.EnumHelperClient;
|
||||||
import net.minecraftforge.common.BiomeDictionary;
|
import net.minecraftforge.common.BiomeDictionary;
|
||||||
|
@ -16,7 +17,60 @@ public class EnumHelperTest
|
||||||
private boolean failed = false;
|
private boolean failed = false;
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void test()
|
public void testEnumHelperMethodsMatchEnumConstructors()
|
||||||
|
{
|
||||||
|
//Quick note to point out that Enum constructors start with (string name, int ordinal).
|
||||||
|
// EnumHelper methods by convention start with (string name), and the ordinal is calculated.
|
||||||
|
for (Method method : EnumHelper.class.getDeclaredMethods())
|
||||||
|
{
|
||||||
|
String name = method.getName();
|
||||||
|
if (!name.equals("addEnum") && name.startsWith("add"))
|
||||||
|
{
|
||||||
|
System.out.println(" " + method);
|
||||||
|
|
||||||
|
Class<?> returnType = method.getReturnType();
|
||||||
|
Constructor<?>[] declaredConstructors = returnType.getDeclaredConstructors();
|
||||||
|
Class<?>[] actualParameters = method.getParameterTypes();
|
||||||
|
|
||||||
|
Assert.assertTrue(actualParameters.length >= 1);
|
||||||
|
Assert.assertEquals("First parameter of add method should be String (name)",
|
||||||
|
String.class,
|
||||||
|
actualParameters[0]);
|
||||||
|
Assert.assertEquals(String.class, actualParameters[0]);
|
||||||
|
|
||||||
|
for (Constructor<?> declaredConstructor : declaredConstructors)
|
||||||
|
{
|
||||||
|
System.out.println(" " + declaredConstructor.toString());
|
||||||
|
|
||||||
|
Class<?>[] expectedParameters = declaredConstructor.getParameterTypes();
|
||||||
|
|
||||||
|
Assert.assertTrue(expectedParameters.length >= 2);
|
||||||
|
Assert.assertEquals("First parameter of enum constructor should be String (name)",
|
||||||
|
String.class,
|
||||||
|
expectedParameters[0]);
|
||||||
|
Assert.assertEquals("Second parameter of enum should be int (ordinal)",
|
||||||
|
int.class,
|
||||||
|
expectedParameters[1]);
|
||||||
|
|
||||||
|
for (int i = 1, j = 2; i < actualParameters.length && j < expectedParameters.length; i++, j++)
|
||||||
|
{
|
||||||
|
Assert.assertEquals(
|
||||||
|
"method Parameter " + i + " (" + actualParameters[i].getName() + ") " +
|
||||||
|
"should match constructor parameter" + j + " (" + expectedParameters[j] + ")",
|
||||||
|
expectedParameters[j],
|
||||||
|
actualParameters[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
Assert.assertEquals("Length of parameters incorrect",
|
||||||
|
(expectedParameters.length - 2),
|
||||||
|
(actualParameters.length - 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEnumHelperTypes()
|
||||||
{
|
{
|
||||||
System.out.println("Testing EnumHelper:");
|
System.out.println("Testing EnumHelper:");
|
||||||
Object[][] types = (Object[][])ReflectionHelper.getPrivateValue(EnumHelper.class, null, "commonTypes");
|
Object[][] types = (Object[][])ReflectionHelper.getPrivateValue(EnumHelper.class, null, "commonTypes");
|
||||||
|
@ -24,7 +78,7 @@ public class EnumHelperTest
|
||||||
testType(o);
|
testType(o);
|
||||||
|
|
||||||
System.out.println("Testing EnumHelperClient:");
|
System.out.println("Testing EnumHelperClient:");
|
||||||
types = (Object[][])ReflectionHelper.getPrivateValue(EnumHelperClient.class, null, "clentTypes");
|
types = (Object[][])ReflectionHelper.getPrivateValue(EnumHelperClient.class, null, "clientTypes");
|
||||||
for (Object[] o : types)
|
for (Object[] o : types)
|
||||||
testType(o);
|
testType(o);
|
||||||
|
|
||||||
|
@ -33,6 +87,7 @@ public class EnumHelperTest
|
||||||
Assert.assertEquals(BiomeDictionary.Type.BEACH, BiomeDictionary.Type.getType("BEACH"));
|
Assert.assertEquals(BiomeDictionary.Type.BEACH, BiomeDictionary.Type.getType("BEACH"));
|
||||||
Assert.assertEquals(BiomeDictionary.Type.getType("NEWTYPE"), BiomeDictionary.Type.getType("NEWTYPE"));
|
Assert.assertEquals(BiomeDictionary.Type.getType("NEWTYPE"), BiomeDictionary.Type.getType("NEWTYPE"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void testType(Object[] info)
|
private void testType(Object[] info)
|
||||||
{
|
{
|
||||||
Class<?> cls = (Class<?>)info[0];
|
Class<?> cls = (Class<?>)info[0];
|
||||||
|
|
Loading…
Reference in New Issue