2013-12-10 12:17:15 +01:00
|
|
|
package com.comphenix.protocol.wrappers;
|
|
|
|
|
2014-11-15 19:02:03 +01:00
|
|
|
import static org.junit.Assert.assertEquals;
|
2013-12-10 12:17:15 +01:00
|
|
|
|
2018-09-15 20:32:18 +02:00
|
|
|
import net.minecraft.server.v1_13_R2.EntityHuman.EnumChatVisibility;
|
|
|
|
import net.minecraft.server.v1_13_R2.EnumDifficulty;
|
|
|
|
import net.minecraft.server.v1_13_R2.EnumGamemode;
|
|
|
|
import net.minecraft.server.v1_13_R2.EnumProtocol;
|
|
|
|
import net.minecraft.server.v1_13_R2.PacketPlayInClientCommand.EnumClientCommand;
|
|
|
|
import net.minecraft.server.v1_13_R2.PacketPlayInUseEntity.EnumEntityUseAction;
|
2016-11-17 03:56:46 +01:00
|
|
|
|
2013-12-10 12:17:15 +01:00
|
|
|
import org.junit.BeforeClass;
|
|
|
|
import org.junit.Test;
|
|
|
|
|
|
|
|
import com.comphenix.protocol.BukkitInitialization;
|
|
|
|
import com.comphenix.protocol.reflect.EquivalentConverter;
|
|
|
|
import com.comphenix.protocol.reflect.accessors.Accessors;
|
|
|
|
import com.comphenix.protocol.reflect.accessors.FieldAccessor;
|
|
|
|
|
|
|
|
public class EnumWrappersTest {
|
|
|
|
private static class EnumClass {
|
|
|
|
public EnumProtocol protocol;
|
|
|
|
public EnumClientCommand command;
|
|
|
|
public EnumChatVisibility visibility;
|
|
|
|
public EnumDifficulty difficulty;
|
|
|
|
public EnumEntityUseAction action;
|
|
|
|
public EnumGamemode mode;
|
|
|
|
}
|
|
|
|
|
|
|
|
@BeforeClass
|
2015-06-24 17:48:07 +02:00
|
|
|
public static void initializeBukkit() {
|
2013-12-10 12:17:15 +01:00
|
|
|
BukkitInitialization.initializePackage();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
public void testEnum() {
|
|
|
|
EnumClass obj = new EnumClass();
|
|
|
|
obj.protocol = EnumProtocol.LOGIN;
|
|
|
|
obj.command = EnumClientCommand.PERFORM_RESPAWN;
|
|
|
|
obj.visibility = EnumChatVisibility.FULL;
|
|
|
|
obj.difficulty = EnumDifficulty.PEACEFUL;
|
|
|
|
obj.action = EnumEntityUseAction.INTERACT;
|
|
|
|
obj.mode = EnumGamemode.CREATIVE;
|
|
|
|
|
|
|
|
assertEquals(obj.protocol, roundtrip(obj, "protocol", EnumWrappers.getProtocolConverter()) );
|
|
|
|
assertEquals(obj.command, roundtrip(obj, "command", EnumWrappers.getClientCommandConverter()) );
|
|
|
|
assertEquals(obj.visibility, roundtrip(obj, "visibility", EnumWrappers.getChatVisibilityConverter()) );
|
|
|
|
assertEquals(obj.difficulty, roundtrip(obj, "difficulty", EnumWrappers.getDifficultyConverter()) );
|
|
|
|
assertEquals(obj.action, roundtrip(obj, "action", EnumWrappers.getEntityUseActionConverter()) );
|
|
|
|
assertEquals(obj.mode, roundtrip(obj, "mode", EnumWrappers.getGameModeConverter()) );
|
|
|
|
}
|
|
|
|
|
|
|
|
@SuppressWarnings("unchecked")
|
|
|
|
public <T extends Enum<T>> T roundtrip(Object target, String fieldName, EquivalentConverter<T> converter) {
|
|
|
|
FieldAccessor accessor = Accessors.getFieldAccessor(target.getClass(), fieldName, true);
|
|
|
|
|
|
|
|
return (T) converter.getGeneric(
|
|
|
|
converter.getSpecific(accessor.get(target))
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|