Add unit test for MobRepository#remove(null)

Add explicit null check

Remove empty line, change useless exception message
This commit is contained in:
atomicint
2016-02-03 19:10:46 -05:00
parent dac20a4b3f
commit 2e9a7ddaaf
4 changed files with 27 additions and 22 deletions
+12 -14
View File
@@ -309,13 +309,12 @@ public final class World {
* @param npc The npc. * @param npc The npc.
*/ */
public void unregister(final Npc npc) { public void unregister(final Npc npc) {
if (npcRepository.remove(npc)) { Preconditions.checkNotNull(npc, "Npc may not be null.");
Region region = regions.fromPosition(npc.getPosition());
region.removeEntity(npc); Region region = regions.fromPosition(npc.getPosition());
} else { region.removeEntity(npc);
logger.warning("Could not find npc " + npc + " to unregister!");
} npcRepository.remove(npc);
} }
/** /**
@@ -324,15 +323,14 @@ public final class World {
* @param player The player. * @param player The player.
*/ */
public void unregister(final Player player) { public void unregister(final Player player) {
if (playerRepository.remove(player)) { Preconditions.checkNotNull(player, "Player may not be null.");
players.remove(NameUtil.encodeBase37(player.getUsername())); players.remove(NameUtil.encodeBase37(player.getUsername()));
logger.info("Unregistered player: " + player + " [count=" + playerRepository.size() + "]");
Region region = regions.fromPosition(player.getPosition()); Region region = regions.fromPosition(player.getPosition());
region.removeEntity(player); region.removeEntity(player);
} else {
logger.warning("Could not find player " + player + " to unregister!"); playerRepository.remove(player);
} logger.info("Unregistered player: " + player + " [count=" + playerRepository.size() + "]");
} }
/** /**
@@ -18,6 +18,7 @@ import org.apollo.game.model.area.update.GroupableEntity;
import org.apollo.game.model.area.update.UpdateOperation; import org.apollo.game.model.area.update.UpdateOperation;
import org.apollo.game.model.entity.Entity; import org.apollo.game.model.entity.Entity;
import org.apollo.game.model.entity.EntityType; import org.apollo.game.model.entity.EntityType;
import org.apollo.game.model.entity.Mob;
import org.apollo.game.model.entity.obj.DynamicGameObject; import org.apollo.game.model.entity.obj.DynamicGameObject;
import com.google.common.base.MoreObjects; import com.google.common.base.MoreObjects;
@@ -175,30 +175,27 @@ public final class MobRepository<T extends Mob> implements Iterable<T> {
* Removes a Mob from the repository. * Removes a Mob from the repository.
* *
* @param mob The Mob to remove. * @param mob The Mob to remove.
* @return {@code true} if the Mob was removed, {@code false} if not.
*/ */
public boolean remove(T mob) { public void remove(T mob) {
Preconditions.checkNotNull(mob); Preconditions.checkNotNull(mob, "Mob may not be null.");
return remove(mob.getIndex()); remove(mob.getIndex());
} }
/** /**
* Removes a Mob from the repository by the specified index. * Removes a Mob from the repository by the specified index.
* *
* @param index The index of the Mob to remove. * @param index The index of the Mob to remove.
* @return {@code true} if the Mob at the specified index was removed otherwise {@code false}.
*/ */
public boolean remove(int index) { private void remove(int index) {
Mob mob = get(index); Mob mob = get(index);
if (mob.getIndex() != index) { if (mob.getIndex() != index) {
return false; throw new IllegalArgumentException("MobRepository index mismatch, cannot remove Mob.");
} }
mobs[index - 1] = null; mobs[index - 1] = null;
mob.setIndex(-1); mob.setIndex(-1);
size--; size--;
return true;
} }
/** /**
@@ -73,6 +73,15 @@ public final class MobRepositoryTest {
assertEquals(0, players.size()); assertEquals(0, players.size());
} }
/**
* Tests failing of {@link MobRepository#remove(Mob)}
*/
@Test(expected = NullPointerException.class)
public void testRemoveNull() {
MobRepository<Player> players = new MobRepository<>(CAPACITY);
players.remove(null);
}
/** /**
* Ensures that a MobRepository maintains a fixed capacity. * Ensures that a MobRepository maintains a fixed capacity.
*/ */