Improve server mocking, test lore and material data
Dieser Commit ist enthalten in:
Ursprung
8576b7a057
Commit
3166241397
@ -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 {
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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<ItemStack> items = windowClick.getItemModifier();
|
||||
ItemStack goldAxe = new ItemStack(Material.GOLD_AXE);
|
||||
ItemStack item = itemWithData();
|
||||
|
||||
assertNotNull(goldAxe.getType());
|
||||
StructureModifier<ItemStack> 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<ItemStack[]> itemAccess = windowItems.getItemArrayModifier();
|
||||
|
||||
ItemStack[] itemArray = new ItemStack[] {
|
||||
new ItemStack(Material.GOLD_AXE),
|
||||
itemWithData(),
|
||||
new ItemStack(Material.DIAMOND_AXE)
|
||||
};
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
In neuem Issue referenzieren
Einen Benutzer sperren