summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWesley Wolfe <weswolf@aol.com>2012-11-01 03:06:47 -0500
committerWesley Wolfe <weswolf@aol.com>2012-11-01 03:06:47 -0500
commit1c14586c49f6314a907ae11805f4b8579e095dcc (patch)
tree53517837729e157f7d782a66ffc6be1e7c67585d
parent9a88e615d449e7a3fe3bf20b90acd2f35e02c6c1 (diff)
downloadcraftbukkit-1c14586c49f6314a907ae11805f4b8579e095dcc.tar
craftbukkit-1c14586c49f6314a907ae11805f4b8579e095dcc.tar.gz
craftbukkit-1c14586c49f6314a907ae11805f4b8579e095dcc.tar.lz
craftbukkit-1c14586c49f6314a907ae11805f4b8579e095dcc.tar.xz
craftbukkit-1c14586c49f6314a907ae11805f4b8579e095dcc.zip
Add CraftArt mappings for Wither. Fixes BUKKIT-2667.
The static assertions are not normally evaluated in the JVM, and failed to fail when the enums went from size 25 to size 26. This meant missing values would not be detected at runtime and instead return null, compounding problems later. The switches should never evaluate to null so will instead throw runtime assertion errors. Additional unit tests were added to detect new paintings and assure they have proper, unique mappings. The test checks both that a mapping exists, is not null, and does not duplicate another mapping.
-rw-r--r--src/main/java/org/bukkit/craftbukkit/CraftArt.java14
-rw-r--r--src/test/java/org/bukkit/ArtTest.java23
2 files changed, 30 insertions, 7 deletions
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftArt.java b/src/main/java/org/bukkit/craftbukkit/CraftArt.java
index 44b88b32..f617e9e2 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftArt.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftArt.java
@@ -5,6 +5,7 @@ import org.bukkit.Art;
// Safety class, will break if either side changes
public class CraftArt {
+
public static Art NotchToBukkit(EnumArt art) {
switch (art) {
case KEBAB: return Art.KEBAB;
@@ -32,8 +33,10 @@ public class CraftArt {
case BURNINGSKULL: return Art.BURNINGSKULL;
case SKELETON: return Art.SKELETON;
case DONKEYKONG: return Art.DONKEYKONG;
+ case WITHER: return Art.WITHER;
+ default:
+ throw new AssertionError(art);
}
- return null;
}
public static EnumArt BukkitToNotch(Art art) {
@@ -63,12 +66,9 @@ public class CraftArt {
case BURNINGSKULL: return EnumArt.BURNINGSKULL;
case SKELETON: return EnumArt.SKELETON;
case DONKEYKONG: return EnumArt.DONKEYKONG;
+ case WITHER: return EnumArt.WITHER;
+ default:
+ throw new AssertionError(art);
}
- return null;
- }
-
- static {
- assert (EnumArt.values().length == 25);
- assert (Art.values().length == 25);
}
}
diff --git a/src/test/java/org/bukkit/ArtTest.java b/src/test/java/org/bukkit/ArtTest.java
index 6a9774f1..cca4ddf2 100644
--- a/src/test/java/org/bukkit/ArtTest.java
+++ b/src/test/java/org/bukkit/ArtTest.java
@@ -5,10 +5,13 @@ import static org.hamcrest.Matchers.hasSize;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
+import java.util.EnumMap;
import java.util.List;
+import java.util.Map;
import net.minecraft.server.EnumArt;
+import org.bukkit.craftbukkit.CraftArt;
import org.junit.Test;
import com.google.common.collect.Lists;
@@ -40,4 +43,24 @@ public class ArtTest {
assertThat("org.bukkit.Art has too many arts", arts, hasSize(0));
}
+
+ @Test
+ public void testCraftArtToNotch() {
+ Map<EnumArt, Art> cache = new EnumMap(EnumArt.class);
+ for (Art art : Art.values()) {
+ EnumArt enumArt = CraftArt.BukkitToNotch(art);
+ assertNotNull(art.name(), enumArt);
+ assertThat(art.name(), cache.put(enumArt, art), is((Art) null));
+ }
+ }
+
+ @Test
+ public void testCraftArtToBukkit() {
+ Map<Art, EnumArt> cache = new EnumMap(Art.class);
+ for (EnumArt enumArt : EnumArt.values()) {
+ Art art = CraftArt.NotchToBukkit(enumArt);
+ assertNotNull(enumArt.name(), art);
+ assertThat(enumArt.name(), cache.put(art, enumArt), is((EnumArt) null));
+ }
+ }
}