Mocking is better than implementing Mock-classes

This commit is contained in:
main() 2011-12-11 13:32:21 +01:00
parent 32ccfe3458
commit 4b53a8dfea
2 changed files with 19 additions and 214 deletions

View File

@ -1,213 +0,0 @@
/******************************************************************************
* Multiverse 2 Copyright (c) the Multiverse Team 2011. *
* Multiverse 2 is licensed under the BSD License. *
* For more information please check the README.md file included *
* with this project. *
******************************************************************************/
package com.onarandombox.MultiverseCore.test.utils;
import org.bukkit.ChatColor;
import org.bukkit.Server;
import org.bukkit.command.CommandSender;
import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionAttachment;
import org.bukkit.permissions.PermissionAttachmentInfo;
import org.bukkit.plugin.Plugin;
import java.util.Set;
import java.util.logging.Logger;
public class TestCommandSender implements CommandSender {
private Server server;
private boolean isOp;
static {
Logger.getLogger("CommandSender").setParent(Util.logger);
}
private static final Logger logger = Logger.getLogger("CommandSender");
public TestCommandSender(Server server) {
this.server = server;
}
/**
* Sends this sender a message
*
* @param message Message to be displayed
*/
@Override
public void sendMessage(String message) {
logger.info(ChatColor.stripColor(message));
}
/**
* Returns the server instance that this command is running on
*
* @return Server instance
*/
@Override
public Server getServer() {
return this.server;
}
/**
* Gets the name of this command sender
*
* @return Name of the sender
*/
@Override
public String getName() {
return "CONSOLE";
}
/**
* Checks if this object contains an override for the specified permission, by fully qualified name
*
* @param name Name of the permission
* @return true if the permission is set, otherwise false
*/
@Override
public boolean isPermissionSet(String name) {
return true;
}
/**
* Checks if this object contains an override for the specified {@link org.bukkit.permissions.Permission}
*
* @param perm Permission to check
* @return true if the permission is set, otherwise false
*/
@Override
public boolean isPermissionSet(Permission perm) {
return true;
}
/**
* Gets the value of the specified permission, if set.
* <p>
* If a permission override is not set on this object, the default value of the permission will be returned.
*
* @param name Name of the permission
* @return Value of the permission
*/
@Override
public boolean hasPermission(String name) {
return true;
}
/**
* Gets the value of the specified permission, if set.
* <p>
* If a permission override is not set on this object, the default value of the permission will be returned
*
* @param perm Permission to get
* @return Value of the permission
*/
@Override
public boolean hasPermission(Permission perm) {
return true;
}
/**
* Adds a new {@link org.bukkit.permissions.PermissionAttachment} with a single permission by name and value
*
* @param plugin Plugin responsible for this attachment, may not be null or disabled
* @param name Name of the permission to attach
* @param value Value of the permission
* @return The PermissionAttachment that was just created
*/
@Override
public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value) {
return null;
}
/**
* Adds a new empty {@link org.bukkit.permissions.PermissionAttachment} to this object
*
* @param plugin Plugin responsible for this attachment, may not be null or disabled
* @return The PermissionAttachment that was just created
*/
@Override
public PermissionAttachment addAttachment(Plugin plugin) {
return null;
}
/**
* Temporarily adds a new {@link org.bukkit.permissions.PermissionAttachment} with a single permission by name and
* value
*
* @param plugin Plugin responsible for this attachment, may not be null or disabled
* @param name Name of the permission to attach
* @param value Value of the permission
* @param ticks Amount of ticks to automatically remove this attachment after
* @return The PermissionAttachment that was just created
*/
@Override
public PermissionAttachment addAttachment(Plugin plugin, String name, boolean value, int ticks) {
return null;
}
/**
* Temporarily adds a new empty {@link org.bukkit.permissions.PermissionAttachment} to this object
*
* @param plugin Plugin responsible for this attachment, may not be null or disabled
* @param ticks Amount of ticks to automatically remove this attachment after
* @return The PermissionAttachment that was just created
*/
@Override
public PermissionAttachment addAttachment(Plugin plugin, int ticks) {
return null;
}
/**
* Removes the given {@link org.bukkit.permissions.PermissionAttachment} from this object
*
* @param attachment Attachment to remove
* @throws IllegalArgumentException Thrown when the specified attachment isn't part of this object
*/
@Override
public void removeAttachment(PermissionAttachment attachment) {
}
/**
* Recalculates the permissions for this object, if the attachments have changed values.
* <p>
* This should very rarely need to be called from a plugin.
*/
@Override
public void recalculatePermissions() {
}
/**
* Gets a set containing all of the permissions currently in effect by this object
*
* @return Set of currently effective permissions
*/
@Override
public Set<PermissionAttachmentInfo> getEffectivePermissions() {
return null;
}
/**
* Checks if this object is a server operator
*
* @return true if this is an operator, otherwise false
*/
@Override
public boolean isOp() {
return this.isOp;
}
/**
* Sets the operator status of this object
*
* @param value New operator value
*/
@Override
public void setOp(boolean value) {
this.isOp = value;
}
}

View File

@ -20,10 +20,12 @@ import java.util.logging.Logger;
import junit.framework.Assert;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Server;
import org.bukkit.World;
import org.bukkit.WorldCreator;
import org.bukkit.command.CommandSender;
import org.bukkit.permissions.Permission;
import org.bukkit.plugin.PluginDescriptionFile;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
@ -138,7 +140,23 @@ public class TestInstanceCreator {
worldmanagerfield.set(core, wm);
// Init our command sender
commandSender = spy(new TestCommandSender(mockServer));
final Logger commandSenderLogger = Logger.getLogger("CommandSender");
commandSenderLogger.setParent(Util.logger);
commandSender = mock(CommandSender.class);
doAnswer(new Answer<Void>() {
public Void answer(InvocationOnMock invocation) throws Throwable {
commandSenderLogger.info(ChatColor.stripColor((String) invocation.getArguments()[0]));
return null;
}}).when(commandSender).sendMessage(anyString());
when(commandSender.getServer()).thenReturn(mockServer);
when(commandSender.getName()).thenReturn("MockCommandSender");
when(commandSender.isPermissionSet(anyString())).thenReturn(true);
when(commandSender.isPermissionSet(Matchers.isA(Permission.class))).thenReturn(true);
when(commandSender.hasPermission(anyString())).thenReturn(true);
when(commandSender.hasPermission(Matchers.isA(Permission.class))).thenReturn(true);
when(commandSender.addAttachment(core)).thenReturn(null);
when(commandSender.isOp()).thenReturn(true);
Bukkit.setServer(mockServer);
// Load Multiverse Core