Package games.stendhal.server.actions.admin

Source Code of games.stendhal.server.actions.admin.AlterActionTest

/* $Id: AlterActionTest.java,v 1.8 2010/09/19 02:38:52 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.actions.admin;

import static marauroa.common.game.Definition.Type.BYTE;
import static marauroa.common.game.Definition.Type.FLAG;
import static marauroa.common.game.Definition.Type.FLOAT;
import static marauroa.common.game.Definition.Type.INT;
import static marauroa.common.game.Definition.Type.LONG_STRING;
import static marauroa.common.game.Definition.Type.NOTYPE;
import static marauroa.common.game.Definition.Type.SHORT;
import static marauroa.common.game.Definition.Type.STRING;
import static marauroa.common.game.Definition.Type.VERY_LONG_STRING;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import games.stendhal.server.core.engine.SingletonRepository;
import games.stendhal.server.core.engine.StendhalRPZone;
import games.stendhal.server.entity.player.Player;
import games.stendhal.server.maps.MockStendhalRPRuleProcessor;
import games.stendhal.server.maps.MockStendlRPWorld;
import marauroa.common.game.Definition;
import marauroa.common.game.RPAction;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;

import utilities.PlayerTestHelper;

public class AlterActionTest {

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

  @AfterClass
  public static void tearDownAfterClass() throws Exception {
  }

  @Before
  public void setUp() throws Exception {
  }

  @After
  public void tearDown() throws Exception {
  }

 

  /**
   * Tests for perform.
   */
  @Test
  public final void testPerform() {
    AlterAction action = new AlterAction();
    RPAction rpAction = new RPAction();
    rpAction.put("target", "");
    rpAction.put("mode", "");
    rpAction.put("stat", "");
    rpAction.put("value", "");
    Player player = PlayerTestHelper.createPlayer("bob");
    assertTrue(player.events().isEmpty());
    action.perform(player, rpAction);
    assertFalse(player.events().isEmpty());
    assertEquals("Entity not found", player.events().get(0).get("text"));
  }

  /**
   * Tests for unknownAttribute.
   */
  @Test
  public final void testUnknownAttribute() {
    Player player = PlayerTestHelper.createPlayer("bob");
    StendhalRPZone zone = new StendhalRPZone("testzone");
    zone.add(player);
    AlterAction action = new AlterAction();
    RPAction rpAction = new RPAction();
    rpAction.put("target", "#" + player.getID().getObjectID());
    rpAction.put("mode", "");
    rpAction.put("stat", "");
    rpAction.put("value", "");
    assertTrue(player.events().isEmpty());
    action.perform(player, rpAction);
    assertFalse(player.events().isEmpty());
    assertEquals("Attribute you are altering is not defined in RPClass(player)", player.events().get(0).get("text"));
  }
 
  /**
   * Tests for nameAttribute.
   */
  @Test
  public final void testNameAttribute() {
    Player player = PlayerTestHelper.createPlayer("bob");
    StendhalRPZone zone = new StendhalRPZone("testzone");
    zone.add(player);
    AlterAction action = new AlterAction();
    RPAction rpAction = new RPAction();
    rpAction.put("target", "#" + player.getID().getObjectID());
    rpAction.put("mode", "");
    rpAction.put("stat", "name");
    rpAction.put("value", "");
    assertTrue(player.events().isEmpty());
    action.perform(player, rpAction);
    assertFalse(player.events().isEmpty());
    assertEquals("Sorry, name cannot be changed.", player.events().get(0).get("text"));
  }
 
  /**
   * Tests for adminlevelAttribute.
   */
  @Test
  public final void testAdminlevelAttribute() {
    Player player = PlayerTestHelper.createPlayer("bob");
    StendhalRPZone zone = new StendhalRPZone("testzone");
    zone.add(player);
    AlterAction action = new AlterAction();
    RPAction rpAction = new RPAction();
    rpAction.put("target", "#" + player.getID().getObjectID());
    rpAction.put("mode", "");
    rpAction.put("stat", "adminlevel");
    rpAction.put("value", "");
    assertTrue(player.events().isEmpty());
    action.perform(player, rpAction);
    assertFalse(player.events().isEmpty());
    assertEquals("Use #/adminlevel #<playername> #[<newlevel>] to display or change adminlevel.", player.events().get(0).get("text"));
  }
  /**
   * Tests for titleAttribute.
   */
  @Test
  public final void testTitleAttribute() {
    Player player = PlayerTestHelper.createPlayer("bob");
    StendhalRPZone zone = new StendhalRPZone("testzone");
    zone.add(player);
    AlterAction action = new AlterAction();
    RPAction rpAction = new RPAction();
    rpAction.put("target", "#" + player.getID().getObjectID());
    rpAction.put("mode", "");
    rpAction.put("stat", "title");
    rpAction.put("value", "");
    assertTrue(player.events().isEmpty());
    action.perform(player, rpAction);
    assertFalse(player.events().isEmpty());
    assertEquals("The title attribute may not be changed directly.", player.events().get(0).get("text"));
  }
 
  /**
   * Tests for validAttributeInvalidNumber.
   */
  @Test
  public final void testValidAttributeInvalidNumber() {
    Player player = PlayerTestHelper.createPlayer("bob");
    StendhalRPZone zone = new StendhalRPZone("testzone");
    zone.add(player);
    AlterAction action = new AlterAction();
    RPAction rpAction = new RPAction();
    rpAction.put("target", "#" + player.getID().getObjectID());
    rpAction.put("mode", "");
    rpAction.put("stat", "hp");
    rpAction.put("value", "");
    assertTrue(player.events().isEmpty());
    action.perform(player, rpAction);
    assertFalse(player.events().isEmpty());
    assertEquals("Please issue a numeric value instead of ''", player.events().get(0).get("text"));
  }
 
  /**
   * Tests for validAttributeValidNumber.
   */
  @Test
  public final void testValidAttributeValidNumber() {
    Player player = PlayerTestHelper.createPlayer("bob");
    player.put("base_hp", 100);
    StendhalRPZone zone = new StendhalRPZone("testzone");
    zone.add(player);
    AlterAction action = new AlterAction();
    RPAction rpAction = new RPAction();
    rpAction.put("target", "#" + player.getID().getObjectID());
    rpAction.put("mode", "");
    rpAction.put("stat", "hp");
    rpAction.put("value", "50");
    assertEquals(100, player.getHP());
    action.perform(player, rpAction);
    assertEquals(50, player.getHP());
   
   
    player.setHP(100);
    rpAction.put("value", "-10");
    assertEquals(100, player.getHP());
    action.perform(player, rpAction);
    assertEquals(100, player.getHP());
   
    rpAction.put("value", "5");
    assertEquals(100, player.getHP());
    action.perform(player , rpAction);
    assertEquals(5, player.getHP());
  }
 
 
  /**
   * Tests for validAttributeValidName.
   */
  @Test
  public final void testValidAttributeValidName() {
    Player player = PlayerTestHelper.createPlayer("bob");
    player.put("base_hp", 10);
    StendhalRPZone zone = new StendhalRPZone("testzone");
   
    MockStendlRPWorld.get().addRPZone(zone);
    MockStendhalRPRuleProcessor.get().addPlayer(player);
    zone.add(player);
    assertNotNull(SingletonRepository.getRuleProcessor().getPlayer("bob"));
    AlterAction action = new AlterAction();
    RPAction rpAction = new RPAction();
    rpAction.put("target", "bob");
    rpAction.put("mode", "");
    rpAction.put("stat", "hp");
    rpAction.put("value", "50");
    assertEquals(100, player.getHP());
    action.perform(player, rpAction);
    assertEquals("reset to base", 10, player.getHP());
   
    player.setHP(100);
    rpAction.put("value", "-10");
    assertEquals(100, player.getHP());
    action.perform(player, rpAction);
    assertEquals(100, player.getHP());
   
    rpAction.put("value", "5");
    assertEquals(100, player.getHP());
    action.perform(player , rpAction);
    assertEquals(5, player.getHP());
  }
 
  /**
   * Tests for validAttributeValidNameDifferentZone.
   */
  @Test
  public final void testValidAttributeValidNameDifferentZone() {
    Player player = PlayerTestHelper.createPlayer("bob");
    player.put("base_hp", 10);
    StendhalRPZone zone = new StendhalRPZone("testzone");
    StendhalRPZone zoneaway = new StendhalRPZone("testzonefaraway");
    zone.add(player);
    Player playerAway = PlayerTestHelper.createPlayer("bobaway");
    playerAway.put("base_hp", 10);
    zoneaway.add(playerAway);
   
   
    MockStendlRPWorld.get().addRPZone(zone);
    MockStendhalRPRuleProcessor.get().addPlayer(player);
    MockStendlRPWorld.get().addRPZone(zoneaway);
    MockStendhalRPRuleProcessor.get().addPlayer(playerAway);
   
    assertNotNull(SingletonRepository.getRuleProcessor().getPlayer("bobaway"));
    AlterAction action = new AlterAction();
    RPAction rpAction = new RPAction();
    rpAction.put("target", "bobaway");
    rpAction.put("mode", "");
    rpAction.put("stat", "hp");
    rpAction.put("value", "50");
    assertEquals(100, playerAway.getHP());
    action.perform(player, rpAction);
    assertEquals("reset to base", 10, playerAway.getHP());
   
    playerAway.setHP(100);
    rpAction.put("value", "-10");
    assertEquals(100, playerAway.getHP());
    action.perform(player, rpAction);
    assertEquals(100, playerAway.getHP());
   
    rpAction.put("value", "5");
    assertEquals(100, playerAway.getHP());
    action.perform(player , rpAction);
    assertEquals(5, playerAway.getHP());
  }
 
  /**
   * Tests for hasNeededAttributes.
   */
  @Test
  public final void testHasNeededAttributes() {
    AlterAction action = new AlterAction();
    RPAction rpAction = new RPAction();
    assertFalse(action.hasNeededAttributes(rpAction));
    rpAction.put("target", "");
    assertFalse(action.hasNeededAttributes(rpAction));
    rpAction.put("mode", "");
    assertFalse(action.hasNeededAttributes(rpAction));
    rpAction.put("stat", "");
    assertFalse(action.hasNeededAttributes(rpAction));
    rpAction.put("value", "");
    assertTrue(action.hasNeededAttributes(rpAction));
  }
 
  /**
   * Tests for isParsableByInteger.
   */
  @Test
  public final void testIsParsableByInteger() {
    AlterAction action = new AlterAction();
      Definition def = new Definition();
       def.setType(BYTE);
    assertTrue(action.isParsableByInteger(def));   

    def.setType(FLAG);
    assertFalse(action.isParsableByInteger(def));   

   
    def.setType(INT);
    assertTrue(action.isParsableByInteger(def));   

    def.setType(LONG_STRING);
    assertFalse(action.isParsableByInteger(def));   

    def.setType(NOTYPE);
    assertFalse(action.isParsableByInteger(def));   

    def.setType(SHORT);
    assertTrue(action.isParsableByInteger(def));   

    def.setType(STRING);
    assertFalse(action.isParsableByInteger(def));   

    def.setType(VERY_LONG_STRING);
    assertFalse(action.isParsableByInteger(def));

    def.setType(FLOAT);
    assertFalse(action.isParsableByInteger(def));   

  }
}
TOP

Related Classes of games.stendhal.server.actions.admin.AlterActionTest

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.