diff --git a/pom.xml b/pom.xml index a20fe64..11aa576 100644 --- a/pom.xml +++ b/pom.xml @@ -43,7 +43,14 @@ org.bukkit bukkit - 1.6.2-R0.1-SNAPSHOT + 1.7.2-R0.1-SNAPSHOT + jar + + + + org.bukkit + craftbukkit + 1.7.2-R0.1-SNAPSHOT jar diff --git a/src/test/java/test/java/com/graywolf336/jail/util/MockPlayerInventory.java b/src/test/java/test/java/com/graywolf336/jail/util/MockPlayerInventory.java new file mode 100644 index 0000000..bf2dbdc --- /dev/null +++ b/src/test/java/test/java/com/graywolf336/jail/util/MockPlayerInventory.java @@ -0,0 +1,300 @@ +package test.java.com.graywolf336.jail.util; + +import org.bukkit.Material; +import org.bukkit.entity.HumanEntity; +import org.bukkit.event.inventory.InventoryType; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.PlayerInventory; + +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.ListIterator; +import java.util.Map; + +public class MockPlayerInventory implements PlayerInventory { + + private int armorSize = 4, inventorySize = 36; + ItemStack[] armorContents = new ItemStack[armorSize]; + ItemStack[] inventoryContents = new ItemStack[inventorySize]; + + @Override + public ItemStack[] getArmorContents() { + return armorContents; + } + + @Override + public ItemStack getHelmet() { + return armorContents[0]; + } + + @Override + public ItemStack getChestplate() { + return armorContents[1]; + } + + @Override + public ItemStack getLeggings() { + return armorContents[2]; + } + + @Override + public ItemStack getBoots() { + return armorContents[3]; + } + + @Override + public void setArmorContents(ItemStack[] itemStacks) { + this.armorContents = itemStacks; + } + + @Override + public void setHelmet(ItemStack itemStack) { + this.armorContents[0] = itemStack; + } + + @Override + public void setChestplate(ItemStack itemStack) { + this.armorContents[1] = itemStack; + } + + @Override + public void setLeggings(ItemStack itemStack) { + this.armorContents[2] = itemStack; + } + + @Override + public void setBoots(ItemStack itemStack) { + this.armorContents[3] = itemStack; + } + + @Override + public ItemStack getItemInHand() { + return null; + } + + @Override + public void setItemInHand(ItemStack itemStack) { + + } + + @Override + public int getHeldItemSlot() { + return 0; + } + + @Override + public int clear(int i, int i2) { + return 0; + } + + @Override + public HumanEntity getHolder() { + return null; + } + + @Override + public int getSize() { + return inventoryContents.length + armorContents.length; + } + + @Override + public String getName() { + return null; + } + + @Override + public ItemStack getItem(int i) { + if (i >= 0 && i < inventorySize) { + return inventoryContents[i]; + } else if (i >= inventorySize + && i < inventorySize + armorSize) { + return armorContents[i - inventorySize]; + } else { + throw new ArrayIndexOutOfBoundsException(); + } + } + + @Override + public void setItem(int i, ItemStack itemStack) { + if (i >= 0 && i < inventorySize) { + inventoryContents[i] = itemStack; + } else if (i >= inventorySize + && i < inventorySize + armorSize) { + armorContents[i - inventorySize] = itemStack; + } else { + throw new ArrayIndexOutOfBoundsException(); + } + } + + @Override + public HashMap addItem(ItemStack... itemStacks) { + return null; + } + + @Override + public HashMap removeItem(ItemStack... itemStacks) { + return null; + } + + @Override + public ItemStack[] getContents() { + return this.inventoryContents; + } + + @Override + public void setContents(ItemStack[] itemStacks) { + this.inventoryContents = itemStacks; + } + + @Override + public boolean contains(int i) { + return false; + } + + @Override + public boolean contains(Material material) { + return false; + } + + @Override + public boolean contains(ItemStack itemStack) { + return false; + } + + @Override + public boolean contains(int i, int i1) { + return false; + } + + @Override + public boolean contains(Material material, int i) { + return false; + } + + @Override + public boolean contains(ItemStack itemStack, int i) { + return false; + } + + @Override + public HashMap all(int i) { + return null; + } + + @Override + public HashMap all(Material material) { + return null; + } + + @Override + public HashMap all(ItemStack itemStack) { + return null; + } + + @Override + public int first(int i) { + return 0; + } + + @Override + public int first(Material material) { + return 0; + } + + @Override + public int first(ItemStack itemStack) { + return 0; + } + + @Override + public int firstEmpty() { + return 0; + } + + @Override + public void remove(int i) { + + } + + @Override + public void remove(Material material) { + + } + + @Override + public void remove(ItemStack itemStack) { + + } + + @Override + public void clear(int i) { + inventoryContents[i] = null; + } + + @Override + public void clear() { + + } + + @Override + public List getViewers() { + return null; + } + + @Override + public String getTitle() { + return null; + } + + @Override + public InventoryType getType() { + return null; + } + + @Override + public ListIterator iterator() { + return null; + } + + @Override + public int getMaxStackSize() { + return 0; + } + + @Override + public void setMaxStackSize(int i) { + + } + + @Override + public ListIterator iterator(int i) { + return null; + } + + @Override + public boolean containsAtLeast(final ItemStack itemStack, final int i) { + return false; + } + + private static Map makeMap(ItemStack[] items) { + Map contents = new LinkedHashMap( + items.length); + for (int i = 0; i < items.length; i++) { + if (items[i] != null && items[i].getTypeId() != 0) { + contents.put(Integer.valueOf(i).toString(), items[i]); + } + } + return contents; + } + + public String toString() { + return "{\"inventoryContents\":" + makeMap(getContents()) + + ",\"armorContents\":" + makeMap(getArmorContents()) + "}"; + } + + @Override + public void setHeldItemSlot(int slot) { + + } +} \ No newline at end of file diff --git a/src/test/java/test/java/com/graywolf336/jail/util/TestInstanceCreator.java b/src/test/java/test/java/com/graywolf336/jail/util/TestInstanceCreator.java index badf869..86a1e3e 100644 --- a/src/test/java/test/java/com/graywolf336/jail/util/TestInstanceCreator.java +++ b/src/test/java/test/java/com/graywolf336/jail/util/TestInstanceCreator.java @@ -14,6 +14,7 @@ import org.bukkit.Server; import org.bukkit.World; import org.bukkit.WorldCreator; import org.bukkit.command.CommandSender; +import org.bukkit.craftbukkit.v1_7_R1.inventory.CraftItemFactory; import org.bukkit.entity.Player; import org.bukkit.permissions.Permission; import org.bukkit.plugin.Plugin; @@ -22,18 +23,23 @@ import org.bukkit.plugin.PluginLogger; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scheduler.BukkitScheduler; + import org.junit.Assert; + import org.mockito.Matchers; import org.mockito.invocation.InvocationOnMock; import org.mockito.stubbing.Answer; + import org.powermock.api.mockito.PowerMockito; import org.powermock.core.MockGateway; +import org.powermock.core.classloader.annotations.PrepareForTest; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.*; import com.graywolf336.jail.JailMain; +@PrepareForTest({ CraftItemFactory.class }) public class TestInstanceCreator { private JailMain main; private Server mockServer; @@ -59,6 +65,7 @@ public class TestInstanceCreator { Logger.getLogger("Minecraft").setParent(Util.logger); when(mockServer.getLogger()).thenReturn(Util.logger); when(mockServer.getWorldContainer()).thenReturn(worldsDirectory); + when(mockServer.getItemFactory()).thenReturn(CraftItemFactory.instance()); main = PowerMockito.spy(new JailMain()); @@ -208,6 +215,7 @@ public class TestInstanceCreator { when(mockPlayer.hasPermission(anyString())).thenReturn(true); when(mockPlayer.hasPermission(Matchers.isA(Permission.class))).thenReturn(true); when(mockPlayer.isOp()).thenReturn(true); + when(mockPlayer.getInventory()).thenReturn(new MockPlayerInventory()); // Init our second command sender, but this time is an instance of a player mockPlayerSender = (CommandSender) mockPlayer;