From 3166241397b43403692f00248f6cc7413d55b352 Mon Sep 17 00:00:00 2001 From: Dan Mulloy Date: Wed, 29 Jul 2015 12:29:59 -0400 Subject: [PATCH] Improve server mocking, test lore and material data --- .../comphenix/protocol/ProtocolLibrary.java | 4 +- .../protocol/BukkitInitialization.java | 19 +++-- .../protocol/events/PacketContainerTest.java | 25 +++++-- .../wrappers/ItemFactoryDelegate.java | 73 ------------------- 4 files changed, 30 insertions(+), 91 deletions(-) delete mode 100644 ProtocolLib/src/test/java/com/comphenix/protocol/wrappers/ItemFactoryDelegate.java diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/ProtocolLibrary.java b/ProtocolLib/src/main/java/com/comphenix/protocol/ProtocolLibrary.java index 51ff5ed2..c7f8d2dd 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/ProtocolLibrary.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/ProtocolLibrary.java @@ -93,9 +93,9 @@ public class ProtocolLibrary extends JavaPlugin { public static final String MAXIMUM_MINECRAFT_VERSION = "1.8.8"; /** - * The date (with ISO 8601 or YYYY-MM-DD) when the most recent version (1.8.7) was released. + * The date (with ISO 8601 or YYYY-MM-DD) when the most recent version (1.8.8) was released. */ - public static final String MINECRAFT_LAST_RELEASE_DATE = "2015-06-05"; + public static final String MINECRAFT_LAST_RELEASE_DATE = "2015-07-27"; // Different commands private enum ProtocolCommand { diff --git a/ProtocolLib/src/test/java/com/comphenix/protocol/BukkitInitialization.java b/ProtocolLib/src/test/java/com/comphenix/protocol/BukkitInitialization.java index 66ecddf9..ebce8d59 100644 --- a/ProtocolLib/src/test/java/com/comphenix/protocol/BukkitInitialization.java +++ b/ProtocolLib/src/test/java/com/comphenix/protocol/BukkitInitialization.java @@ -2,19 +2,20 @@ package com.comphenix.protocol; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; + +import java.util.logging.Logger; + import net.minecraft.server.v1_8_R3.DispenserRegistry; import org.bukkit.Bukkit; import org.bukkit.Server; import org.bukkit.craftbukkit.v1_8_R3.CraftServer; -import org.bukkit.inventory.ItemFactory; -import org.bukkit.inventory.meta.ItemMeta; +import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftItemFactory; +import org.bukkit.craftbukkit.v1_8_R3.util.Versioning; -import com.comphenix.protocol.reflect.FieldUtils; import com.comphenix.protocol.utility.Constants; import com.comphenix.protocol.utility.MinecraftReflection; import com.comphenix.protocol.utility.MinecraftVersion; -import com.comphenix.protocol.wrappers.ItemFactoryDelegate; /** * Used to ensure that ProtocolLib and Bukkit is prepared to be tested. @@ -37,15 +38,17 @@ public class BukkitInitialization { // Mock the server object Server mockedServer = mock(Server.class); - ItemMeta mockedMeta = mock(ItemMeta.class); - ItemFactory mockedFactory = new ItemFactoryDelegate(mockedMeta); + when(mockedServer.getLogger()).thenReturn(Logger.getLogger("Minecraft")); + when(mockedServer.getName()).thenReturn("Mock Server"); when(mockedServer.getVersion()).thenReturn(CraftServer.class.getPackage().getImplementationVersion()); - when(mockedServer.getItemFactory()).thenReturn(mockedFactory); + when(mockedServer.getBukkitVersion()).thenReturn(Versioning.getBukkitVersion()); + + when(mockedServer.getItemFactory()).thenReturn(CraftItemFactory.instance()); when(mockedServer.isPrimaryThread()).thenReturn(true); // Inject this fake server - FieldUtils.writeStaticField(Bukkit.class, "server", mockedServer, true); + Bukkit.setServer(mockedServer); initializePackage(); } diff --git a/ProtocolLib/src/test/java/com/comphenix/protocol/events/PacketContainerTest.java b/ProtocolLib/src/test/java/com/comphenix/protocol/events/PacketContainerTest.java index 5e64c863..5dc9f29c 100644 --- a/ProtocolLib/src/test/java/com/comphenix/protocol/events/PacketContainerTest.java +++ b/ProtocolLib/src/test/java/com/comphenix/protocol/events/PacketContainerTest.java @@ -18,7 +18,6 @@ package com.comphenix.protocol.events; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -35,9 +34,11 @@ import net.minecraft.server.v1_8_R3.PacketPlayOutUpdateAttributes.AttributeSnaps import org.apache.commons.lang.SerializationUtils; import org.bukkit.ChatColor; +import org.bukkit.DyeColor; import org.bukkit.Material; import org.bukkit.WorldType; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import org.junit.BeforeClass; @@ -196,15 +197,23 @@ public class PacketContainerTest { public void testGetItemModifier() { PacketContainer windowClick = new PacketContainer(PacketType.Play.Client.WINDOW_CLICK); - StructureModifier items = windowClick.getItemModifier(); - ItemStack goldAxe = new ItemStack(Material.GOLD_AXE); + ItemStack item = itemWithData(); - assertNotNull(goldAxe.getType()); + StructureModifier items = windowClick.getItemModifier(); assertNull(items.read(0)); - // Insert the goldaxe and check if it's there - items.write(0, goldAxe); - assertTrue("Item " + goldAxe + " != " + items.read(0), equivalentItem(goldAxe, items.read(0))); + // Insert the item and check if it's there + items.write(0, item); + assertTrue("Item " + item + " != " + items.read(0), equivalentItem(item, items.read(0))); + } + + private ItemStack itemWithData() { + ItemStack item = new ItemStack(Material.WOOL, 1, DyeColor.GREEN.getWoolData()); + ItemMeta meta = item.getItemMeta(); + meta.setDisplayName(ChatColor.GREEN + "Green Wool"); + meta.setLore(Util.asList(ChatColor.WHITE + "This is lore.")); + item.setItemMeta(meta); + return item; } @Test @@ -213,7 +222,7 @@ public class PacketContainerTest { StructureModifier itemAccess = windowItems.getItemArrayModifier(); ItemStack[] itemArray = new ItemStack[] { - new ItemStack(Material.GOLD_AXE), + itemWithData(), new ItemStack(Material.DIAMOND_AXE) }; diff --git a/ProtocolLib/src/test/java/com/comphenix/protocol/wrappers/ItemFactoryDelegate.java b/ProtocolLib/src/test/java/com/comphenix/protocol/wrappers/ItemFactoryDelegate.java deleted file mode 100644 index 1636e1dd..00000000 --- a/ProtocolLib/src/test/java/com/comphenix/protocol/wrappers/ItemFactoryDelegate.java +++ /dev/null @@ -1,73 +0,0 @@ -/** - * ProtocolLib - Bukkit server library that allows access to the Minecraft protocol. - * Copyright (C) 2015 dmulloy2 - * - * This program 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 2 of - * the License, or (at your option) any later version. - * - * This program 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 this program; - * if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - */ -package com.comphenix.protocol.wrappers; - -import org.bukkit.Color; -import org.bukkit.Material; -import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftItemFactory; -import org.bukkit.inventory.ItemFactory; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; - -/** - * @author dmulloy2 - */ - -public class ItemFactoryDelegate implements ItemFactory { - private final CraftItemFactory factory; - private final ItemMeta mocked; - - public ItemFactoryDelegate(ItemMeta mocked) { - this.factory = CraftItemFactory.instance(); - this.mocked = mocked; - } - - @Override - public ItemMeta asMetaFor(ItemMeta meta, ItemStack stack) throws IllegalArgumentException { - return factory.asMetaFor(meta, stack); - } - - @Override - public ItemMeta asMetaFor(ItemMeta meta, Material material) throws IllegalArgumentException { - return factory.asMetaFor(meta, material); - } - - @Override - public boolean equals(ItemMeta meta1, ItemMeta meta2) throws IllegalArgumentException { - return factory.equals(meta1, meta2); - } - - @Override - public Color getDefaultLeatherColor() { - return factory.getDefaultLeatherColor(); - } - - @Override - public ItemMeta getItemMeta(Material arg0) { - return mocked; - } - - @Override - public boolean isApplicable(ItemMeta meta, ItemStack itemstack) throws IllegalArgumentException { - return factory.isApplicable(meta, itemstack); - } - - @Override - public boolean isApplicable(ItemMeta meta, Material material) throws IllegalArgumentException { - return factory.isApplicable(meta, material); - } -} \ No newline at end of file