From 0f4c206f9b256c441a142b0be68a4a76421c2911 Mon Sep 17 00:00:00 2001 From: Wesley Wolfe Date: Fri, 14 Dec 2012 02:02:02 -0600 Subject: [PATCH] Add isRecord and new material method tests. Cleaned up all of the CraftBukkit tests, including moving some tests from MaterialTest to PerMaterialTest. --- src/test/java/org/bukkit/AchievementTest.java | 12 +-- src/test/java/org/bukkit/ArtTest.java | 13 ++- src/test/java/org/bukkit/MaterialTest.java | 41 ++------- src/test/java/org/bukkit/PerMaterialTest.java | 88 +++++++++++++++++-- src/test/java/org/bukkit/SoundTest.java | 5 +- src/test/java/org/bukkit/WorldTypeTest.java | 19 +--- .../inventory/CraftItemStackTest.java | 28 +++--- .../java/org/bukkit/potion/PotionTest.java | 6 +- 8 files changed, 122 insertions(+), 90 deletions(-) diff --git a/src/test/java/org/bukkit/AchievementTest.java b/src/test/java/org/bukkit/AchievementTest.java index f2e4d0601d..b8695ccdf7 100644 --- a/src/test/java/org/bukkit/AchievementTest.java +++ b/src/test/java/org/bukkit/AchievementTest.java @@ -1,9 +1,9 @@ package org.bukkit; -import static org.hamcrest.Matchers.hasSize; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertThat; +import static org.junit.Assert.*; +import static org.hamcrest.Matchers.*; +import java.util.Collections; import java.util.List; import net.minecraft.server.AchievementList; @@ -17,7 +17,7 @@ import com.google.common.collect.Lists; public class AchievementTest { @Test @SuppressWarnings("unchecked") - public void verifyMapping() throws IllegalArgumentException, SecurityException, IllegalAccessException, NoSuchFieldException { + public void verifyMapping() throws Throwable { List achievements = Lists.newArrayList(Achievement.values()); for (net.minecraft.server.Achievement statistic : (List) AchievementList.e) { @@ -29,9 +29,9 @@ public class AchievementTest { Achievement subject = Achievement.getById(id); assertNotNull(message, subject); - achievements.remove(subject); + assertTrue(name, achievements.remove(subject)); } - assertThat("org.bukkit.Achievement has too many achievements", achievements, hasSize(0)); + assertThat("org.bukkit.Achievement has too many achievements", achievements, is(Collections.EMPTY_LIST)); } } diff --git a/src/test/java/org/bukkit/ArtTest.java b/src/test/java/org/bukkit/ArtTest.java index cca4ddf2f1..46804f7ed4 100644 --- a/src/test/java/org/bukkit/ArtTest.java +++ b/src/test/java/org/bukkit/ArtTest.java @@ -1,10 +1,9 @@ package org.bukkit; -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.Matchers.hasSize; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertThat; +import static org.junit.Assert.*; +import static org.hamcrest.Matchers.*; +import java.util.Collections; import java.util.EnumMap; import java.util.List; import java.util.Map; @@ -41,7 +40,7 @@ public class ArtTest { arts.remove(subject); } - assertThat("org.bukkit.Art has too many arts", arts, hasSize(0)); + assertThat("org.bukkit.Art has too many arts", arts, is(Collections.EMPTY_LIST)); } @Test @@ -50,7 +49,7 @@ public class ArtTest { for (Art art : Art.values()) { EnumArt enumArt = CraftArt.BukkitToNotch(art); assertNotNull(art.name(), enumArt); - assertThat(art.name(), cache.put(enumArt, art), is((Art) null)); + assertThat(art.name(), cache.put(enumArt, art), is(nullValue())); } } @@ -60,7 +59,7 @@ public class ArtTest { for (EnumArt enumArt : EnumArt.values()) { Art art = CraftArt.NotchToBukkit(enumArt); assertNotNull(enumArt.name(), art); - assertThat(enumArt.name(), cache.put(art, enumArt), is((EnumArt) null)); + assertThat(enumArt.name(), cache.put(art, enumArt), is(nullValue())); } } } diff --git a/src/test/java/org/bukkit/MaterialTest.java b/src/test/java/org/bukkit/MaterialTest.java index f4464fd884..dbb60de007 100644 --- a/src/test/java/org/bukkit/MaterialTest.java +++ b/src/test/java/org/bukkit/MaterialTest.java @@ -1,14 +1,12 @@ package org.bukkit; -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.Matchers.hasSize; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertThat; +import static org.junit.Assert.*; +import static org.hamcrest.Matchers.*; +import java.util.Collections; import java.util.Map; import net.minecraft.server.Item; -import net.minecraft.server.ItemFood; import org.bukkit.support.AbstractTestingBase; import org.junit.Test; @@ -16,6 +14,7 @@ import org.junit.Test; import com.google.common.collect.Maps; public class MaterialTest extends AbstractTestingBase { + @Test public void verifyMapping() { Map materials = Maps.newHashMap(); @@ -29,40 +28,12 @@ public class MaterialTest extends AbstractTestingBase { int id = item.id; String name = item.getName(); - int maxStackSize = item.getMaxStackSize(); - int maxDurability = item.getMaxDurability(); Material material = materials.remove(id); - assertNotNull(String.format("org.bukkit.Material is missing id: %d named: %s", id, name), material); - - assertThat(String.format("org.bukkit.Material.%s maxStackSize:", material), material.getMaxStackSize(), is(maxStackSize)); - assertThat(String.format("org.bukkit.Material.%s maxDurability:", material), material.getMaxDurability(), is((short) maxDurability)); + assertThat("Missing " + name + "(" + id + ")", material, is(not(nullValue()))); } - assertThat("org.bukkit.Material has too many entries", materials.values(), hasSize(0)); - } - - @Test - public void verifyIsEdible() { - Map materials = Maps.newHashMap(); - for (Material material : Material.values()) { - if (!material.isEdible()) continue; - materials.put(material.getId(), material); - } - - for (Item item : Item.byId) { - if (item == null) continue; - if (!(item instanceof ItemFood)) continue; - - int id = item.id; - String name = item.getName(); - - Material material = materials.remove(id); - - assertNotNull(String.format("org.bukkit.Material does not list id: %d named: %s edible", id, name), material); - } - - assertThat("org.bukkit.Material has entries marked edible that are not ItemFood", materials.values(), hasSize(0)); + assertThat(materials, is(Collections.EMPTY_MAP)); } } diff --git a/src/test/java/org/bukkit/PerMaterialTest.java b/src/test/java/org/bukkit/PerMaterialTest.java index f73a9b2dba..766bce26a3 100644 --- a/src/test/java/org/bukkit/PerMaterialTest.java +++ b/src/test/java/org/bukkit/PerMaterialTest.java @@ -3,27 +3,37 @@ package org.bukkit; import static org.junit.Assert.*; import static org.hamcrest.Matchers.*; -import java.util.ArrayList; import java.util.List; -import net.minecraft.server.AchievementList; import net.minecraft.server.Block; +import net.minecraft.server.BlockFire; +import net.minecraft.server.Item; +import net.minecraft.server.ItemFood; +import net.minecraft.server.ItemRecord; +import org.bukkit.support.AbstractTestingBase; +import org.bukkit.support.Util; +import org.junit.BeforeClass; 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; +import com.google.common.collect.Lists; + @RunWith(Parameterized.class) -public class PerMaterialTest { - static { - AchievementList.a(); +public class PerMaterialTest extends AbstractTestingBase { + private static int[] fireValues; + + @BeforeClass + public static void getFireValues() { + fireValues = Util.getInternalState(BlockFire.class, Block.FIRE, "a"); } @Parameters(name= "{index}: {0}") public static List data() { - List list = new ArrayList(); + List list = Lists.newArrayList(); for (Material material : Material.values()) { list.add(new Object[] {material}); } @@ -42,4 +52,70 @@ public class PerMaterialTest { assertFalse(material.isSolid()); } } + + @Test + public void isEdible() { + assertThat(material.isEdible(), is(Item.byId[material.getId()] instanceof ItemFood)); + } + + @Test + public void isRecord() { + assertThat(material.isRecord(), is(Item.byId[material.getId()] instanceof ItemRecord)); + } + + @Test + public void maxDurability() { + if (material == Material.AIR) { + assertThat((int) material.getMaxDurability(), is(0)); + } else { + assertThat((int) material.getMaxDurability(), is(Item.byId[material.getId()].getMaxDurability())); + } + } + + @Test + public void maxStackSize() { + if (material == Material.AIR) { + assertThat(material.getMaxStackSize(), is(64 /* Why can't I hold all of these AIR? */)); + } else { + assertThat(material.getMaxStackSize(), is(Item.byId[material.getId()].getMaxStackSize())); + } + } + + @Test + public void isTransparent() { + if (material == Material.AIR) { + assertTrue(material.isTransparent()); + } else if (material.isBlock()) { + assertThat(material.isTransparent(), is(not(Block.byId[material.getId()].material.blocksLight()))); + } else { + assertFalse(material.isTransparent()); + } + } + + @Test + public void isFlammable() { + if (material != Material.AIR && material.isBlock()) { + assertThat(material.isFlammable(), is(Block.byId[material.getId()].material.isBurnable())); + } else { + assertFalse(material.isFlammable()); + } + } + + @Test + public void isBurnable() { + if (material.isBlock()) { + assertThat(material.isBurnable(), is(fireValues[material.getId()] > 0)); + } else { + assertFalse(material.isBurnable()); + } + } + + @Test + public void isOccluding() { + if (material.isBlock()) { + assertThat(material.isOccluding(), is(Block.i(material.getId()))); + } else { + assertFalse(material.isOccluding()); + } + } } diff --git a/src/test/java/org/bukkit/SoundTest.java b/src/test/java/org/bukkit/SoundTest.java index ca45067fbe..c9865fa089 100644 --- a/src/test/java/org/bukkit/SoundTest.java +++ b/src/test/java/org/bukkit/SoundTest.java @@ -1,6 +1,7 @@ package org.bukkit; -import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.*; +import static org.hamcrest.Matchers.*; import org.bukkit.craftbukkit.CraftSound; import org.junit.Test; @@ -11,7 +12,7 @@ public class SoundTest { @Test public void testGetSound() { for (Sound sound : Sound.values()) { - assertNotNull(sound.name(), CraftSound.getSound(sound)); + assertThat(sound.name(), CraftSound.getSound(sound), is(not(nullValue()))); } } } diff --git a/src/test/java/org/bukkit/WorldTypeTest.java b/src/test/java/org/bukkit/WorldTypeTest.java index 8d063ca57d..154d0b499d 100644 --- a/src/test/java/org/bukkit/WorldTypeTest.java +++ b/src/test/java/org/bukkit/WorldTypeTest.java @@ -1,9 +1,7 @@ package org.bukkit; -import static org.junit.Assert.fail; - -import java.util.ArrayList; -import java.util.List; +import static org.junit.Assert.*; +import static org.hamcrest.Matchers.*; import net.minecraft.server.WorldType; import org.junit.Test; @@ -11,21 +9,10 @@ import org.junit.Test; public class WorldTypeTest { @Test public void testTypes() { - List missingTypes = new ArrayList(); - for (WorldType type : WorldType.types) { if (type == null) continue; - if (org.bukkit.WorldType.getByName(type.name()) == null) { - missingTypes.add(type); - } - } - - if (!missingTypes.isEmpty()) { - for (WorldType type : missingTypes) { - System.out.println(type.name() + " is missing!"); - } - fail("Missing (" + missingTypes.size() + ") WorldTypes!"); + assertThat(type.name() + " has no Bukkit world", org.bukkit.WorldType.getByName(type.name()), is(not(nullValue()))); } } } diff --git a/src/test/java/org/bukkit/craftbukkit/inventory/CraftItemStackTest.java b/src/test/java/org/bukkit/craftbukkit/inventory/CraftItemStackTest.java index a57ddca6d5..fe2bc181aa 100644 --- a/src/test/java/org/bukkit/craftbukkit/inventory/CraftItemStackTest.java +++ b/src/test/java/org/bukkit/craftbukkit/inventory/CraftItemStackTest.java @@ -1,16 +1,15 @@ package org.bukkit.craftbukkit.inventory; +import static org.junit.Assert.*; +import static org.hamcrest.Matchers.*; + import net.minecraft.server.Enchantment; -import net.minecraft.server.StatisticList; + import org.bukkit.inventory.ItemStack; -import org.junit.Before; +import org.bukkit.support.AbstractTestingBase; import org.junit.Test; -public class CraftItemStackTest { - @Before - public void setUp() throws Exception { - StatisticList.a(); - } +public class CraftItemStackTest extends AbstractTestingBase { @Test public void testCloneEnchantedItem() throws Exception { @@ -18,12 +17,13 @@ public class CraftItemStackTest { nmsItemStack.addEnchantment(Enchantment.DAMAGE_ALL, 1); ItemStack itemStack = new CraftItemStack(nmsItemStack); ItemStack clone = itemStack.clone(); - assert (clone.getType().equals(itemStack.getType())); - assert (clone.getAmount() == itemStack.getAmount()); - assert (clone.getDurability() == itemStack.getDurability()); - assert (clone.getEnchantments().equals(itemStack.getEnchantments())); - assert (clone.getTypeId() == itemStack.getTypeId()); - assert (clone.getData().equals(itemStack.getData())); + assertThat(clone.getType(), is(itemStack.getType())); + assertThat(clone.getAmount(), is(itemStack.getAmount())); + assertThat(clone.getDurability(), is(itemStack.getDurability())); + assertThat(clone.getEnchantments(), is(itemStack.getEnchantments())); + assertThat(clone.getTypeId(), is(itemStack.getTypeId())); + assertThat(clone.getData(), is(itemStack.getData())); + assertThat(clone, is(itemStack)); } @Test @@ -31,6 +31,6 @@ public class CraftItemStackTest { net.minecraft.server.ItemStack nmsItemStack = null; ItemStack itemStack = new CraftItemStack(nmsItemStack); ItemStack clone = itemStack.clone(); - assert (clone.equals(itemStack)); + assertThat(clone, is(itemStack)); } } diff --git a/src/test/java/org/bukkit/potion/PotionTest.java b/src/test/java/org/bukkit/potion/PotionTest.java index 1f0a2c52e8..1040b6ad6b 100644 --- a/src/test/java/org/bukkit/potion/PotionTest.java +++ b/src/test/java/org/bukkit/potion/PotionTest.java @@ -3,11 +3,11 @@ package org.bukkit.potion; import static org.junit.Assert.*; import static org.hamcrest.Matchers.*; -import java.lang.reflect.Field; import java.util.EnumMap; import java.util.Map; import org.bukkit.craftbukkit.potion.CraftPotionBrewer; +import org.bukkit.support.Util; import org.junit.BeforeClass; import org.junit.Test; @@ -36,9 +36,7 @@ public class PotionTest { @Test public void testEffectCompleteness() throws SecurityException, IllegalAccessException, NoSuchFieldException { - Field durationsField = net.minecraft.server.PotionBrewer.class.getDeclaredField("effectDurations"); - durationsField.setAccessible(true); - Map effectDurations = (Map) durationsField.get(null); + Map effectDurations = Util.getInternalState(net.minecraft.server.PotionBrewer.class, null, "effectDurations"); Map effects = new EnumMap(PotionType.class); for (int id : effectDurations.keySet()) {