Package net.glowstone.constants

Source Code of net.glowstone.constants.PotionEffectTest

package net.glowstone.constants;

import org.bukkit.potion.PotionEffectType;
import org.bukkit.potion.PotionEffectTypeWrapper;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import static org.junit.Assert.*;

/**
* Tests for {@link GlowPotionEffect}.
*/
@RunWith(Parameterized.class)
public class PotionEffectTest {

    private static final int STATIC_FINAL = Modifier.STATIC | Modifier.FINAL;

    private final Field field;

    public PotionEffectTest(Field field) {
        this.field = field;
    }

    @BeforeClass
    public static void staticSetup() {
        GlowPotionEffect.register();
    }

    @Parameterized.Parameters
    public static Collection<Object[]> data() {
        Field[] fields = PotionEffectType.class.getFields();
        List<Object[]> result = new ArrayList<>(fields.length);
        for (Field field : PotionEffectType.class.getFields()) {
            if (field.getType() == PotionEffectType.class && (field.getModifiers() & STATIC_FINAL) == STATIC_FINAL) {
                result.add(new Object[]{field});
            }
        }
        return result;
    }

    @Test
    public void effect() throws ReflectiveOperationException {
        PotionEffectTypeWrapper wrapper = (PotionEffectTypeWrapper) field.get(null);
        GlowPotionEffect effect = (GlowPotionEffect) wrapper.getType();
        assertNotNull("missing potion effect for " + field.getName(), effect);
        assertEquals("wrong name on wrapped effect", field.getName(), effect.getName());
        assertEquals("missing from byName", effect, PotionEffectType.getByName(effect.getName()));
        assertEquals("missing from byId", effect, PotionEffectType.getById(effect.getId()));
        assertTrue("non-positive duration amplifier for " + effect, effect.getDurationModifier() > 0);
    }

}
TOP

Related Classes of net.glowstone.constants.PotionEffectTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.