/* * Copyright (C) 2013-2016 Gonçalo Baltazar <me@goncalomb.com> * * This file is part of NBTEditor. * * NBTEditor is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * NBTEditor is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with NBTEditor. If not, see <http://www.gnu.org/licenses/>. */ package com.goncalomb.bukkit.mylib; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.HashMap; import java.util.List; import org.bukkit.enchantments.Enchantment; import org.bukkit.potion.PotionEffectType; import org.junit.Assert; import org.junit.Test; import com.goncalomb.bukkit.mylib.namemaps.EnchantmentsMap; import com.goncalomb.bukkit.mylib.namemaps.PotionEffectsMap; public class TestNameMaps { @Test public void testEnchantmentsMap() throws IllegalAccessException { // Find all bukkit enchantments. HashMap<Enchantment, Field> bukkitEnchantments = new HashMap<Enchantment, Field>(); for (Field field : Enchantment.class.getFields()) { if (field.getType() == Enchantment.class && Modifier.isStatic(field.getModifiers()) && Modifier.isFinal(field.getModifiers())) { bukkitEnchantments.put((Enchantment) field.get(null), field); } } // Get registered enchantment names. List<String> names = EnchantmentsMap.getNames(); if (bukkitEnchantments.size() < names.size()) { Assert.fail("Error finding Enchantment fields."); } // Remove all registered enchantments. for (String name : names) { bukkitEnchantments.remove(EnchantmentsMap.getByName(name)); } // Now we should have 0 enchantments, all enchantments are registered. int size = bukkitEnchantments.size(); if (size > 1) { Assert.fail(bukkitEnchantments.values().iterator().next().getName() + " and " + (size - 1) + " other(s) are not registered on EnchantmentsMap."); } else if (size > 0) { Assert.fail(bukkitEnchantments.values().iterator().next().getName() + " is not registered on EnchantmentsMap."); } } @Test public void testPotionEffectsMap() throws IllegalAccessException { // Find all bukkit effects. HashMap<PotionEffectType, Field> bukkitPotionEffects = new HashMap<PotionEffectType, Field>(); for (Field field : PotionEffectType.class.getFields()) { if (field.getType() == PotionEffectType.class && Modifier.isStatic(field.getModifiers()) && Modifier.isFinal(field.getModifiers())) { bukkitPotionEffects.put((PotionEffectType) field.get(null), field); } } // Get registered effect names. List<String> names = PotionEffectsMap.getNames(); if (bukkitPotionEffects.size() < names.size()) { Assert.fail("Error finding PotionEffectType fields."); } // Remove all registered effects. for (String name : names) { bukkitPotionEffects.remove(PotionEffectsMap.getByName(name)); } // Now we should have 0 effects, all effects are registered. int size = bukkitPotionEffects.size(); if (size > 1) { Assert.fail(bukkitPotionEffects.values().iterator().next().getName() + " and " + (size - 1) + " other(s) are not registered on PotionEffectsMap."); } else if (size > 0) { Assert.fail(bukkitPotionEffects.values().iterator().next().getName() + " in not registered on PotionEffectsMap."); } } }