Package games.stendhal.server.entity.creature

Source Code of games.stendhal.server.entity.creature.CreatureTest$MockCreature

/* $Id: CreatureTest.java,v 1.10 2010/12/02 21:01:25 nhnb Exp $ */
/***************************************************************************
*                   (C) Copyright 2003-2010 - Stendhal                    *
***************************************************************************
***************************************************************************
*                                                                         *
*   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.                                   *
*                                                                         *
***************************************************************************/
package games.stendhal.server.entity.creature;

import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import games.stendhal.server.core.engine.StendhalRPZone;
import games.stendhal.server.entity.RPEntity;
import games.stendhal.server.entity.player.Player;
import games.stendhal.server.maps.MockStendlRPWorld;

import java.util.LinkedList;
import java.util.List;

import org.junit.BeforeClass;
import org.junit.Test;

import utilities.PlayerTestHelper;
import utilities.RPClass.CreatureTestHelper;

public class CreatureTest {

  @BeforeClass
  public static void setUpBeforeClass() throws Exception {
    MockStendlRPWorld.get();
    CreatureTestHelper.generateRPClasses();
  }

  /**
   * Tests for getNearestEnemy.
   */
  @Test
  public void testGetNearestEnemy() {
   
    final Player onebyone = PlayerTestHelper.createPlayer("bob");
    onebyone.setPosition(6, 0);
    final MockCreature sevenbyseven = new MockCreature();
 
    final StendhalRPZone zone = new StendhalRPZone("test", 20 , 20);
    zone.add(sevenbyseven);
    zone.add(onebyone);
    enemies.add(onebyone);
    assertSame(onebyone, sevenbyseven.getNearestEnemy(6));
    assertSame(onebyone, sevenbyseven.getNearestEnemy(5));
    assertNull(sevenbyseven.getNearestEnemy(4));
   
    sevenbyseven.setSize(7, 7);
    onebyone.setPosition(10, 10);
    assertSame(onebyone, sevenbyseven.getNearestEnemy(7));
    assertSame(onebyone, sevenbyseven.getNearestEnemy(6));
    assertSame(onebyone, sevenbyseven.getNearestEnemy(5));
    assertNull(sevenbyseven.getNearestEnemy(4));
  }

 
  private static List<RPEntity> enemies  = new LinkedList<RPEntity>();
  private static class MockCreature extends Creature {

    @Override
    public List<RPEntity> getEnemyList() {
     
      return enemies;
    }
  }

  /**
   * Tests for hasTargetMoved.
   */
  @Test
  public void testhasTargetMoved() {
    final StendhalRPZone zone = new StendhalRPZone("testzone");
    final Creature attacker = new Creature();

    final Creature attackTarget = new Creature();
    zone.add(attacker);
    zone.add(attackTarget);
    attacker.setTarget(attackTarget);
    assertFalse(attacker.hasTargetMoved());
    assertFalse(attacker.hasTargetMoved());
    attackTarget.setPosition(1, 0);
    assertTrue(attacker.hasTargetMoved());
    assertFalse(attacker.hasTargetMoved());
  }

  /**
   * Tests for isAttackTurn.
   */
  @Test
  public void testIsAttackTurn() {
    final Creature creature = new Creature();
    int counter = 0;
    for (int i = 0; i < 10; i++) {
      if (creature.isAttackTurn(i)) {
        counter++;
      }
    }
    assertThat(counter, is(2));
  }
 
}
TOP

Related Classes of games.stendhal.server.entity.creature.CreatureTest$MockCreature

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.