Package games.stendhal.server.entity.mapstuff.portal

Source Code of games.stendhal.server.entity.mapstuff.portal.HousePortalTest

/* $Id: HousePortalTest.java,v 1.4 2010/12/04 15:04:20 martinfuchs 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.mapstuff.portal;

import games.stendhal.server.core.engine.SingletonRepository;
import games.stendhal.server.entity.item.HouseKey;
import games.stendhal.server.entity.item.Item;
import games.stendhal.server.entity.player.Player;
import games.stendhal.server.maps.MockStendlRPWorld;
import games.stendhal.server.maps.quests.houses.HouseUtilities;

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

import utilities.PlayerTestHelper;

import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertEquals;

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

  @AfterClass
  public static void tearDownAfterClass() throws Exception {
    HouseUtilities.clearCache();
  }

  /**
   * Tests for creation.
   */
  @Test
  public void testCreation() {
    final HousePortal portal = new HousePortal("henhouse");
    assertNotNull(portal);
    assertTrue(portal.isStorable());
    assertEquals("henhouse", portal.getDoorId());
    assertEquals("house_portal", portal.get("type"));
  }
 
  /**
   * Tests for owner.
   */
  @Test
  public void testOwner() {
    final HousePortal portal = new HousePortal("henhouse");
    assertEquals("", portal.getOwner());
    portal.setOwner("Mr Taxman");
    assertEquals("Mr Taxman", portal.getOwner());
  }
 
  /**
   * Tests for describe.
   */
  @Test
  public void testDescribe() {
    final HousePortal portal = new HousePortal("henhouse");
    assertEquals("For sale!", portal.describe());
    portal.setOwner("Mr Taxman");
    assertEquals("Here lives Mr Taxman.", portal.describe());
  }
 
  /**
   * Tests for isAllowed.
   */
  @Test
  public void testIsAllowed() {
    final HousePortal portal = new HousePortal("henhouse");
    final Player player = PlayerTestHelper.createPlayer("player");
   
    // should not be allowed in without a key
    assertFalse(portal.isAllowed(player));
   
    // or with some strange key
    Item key = SingletonRepository.getEntityManager().getItem("dungeon silver key");
    player.equipToInventoryOnly(key);
    assertFalse(portal.isAllowed(player));
   
    // wrong key. should not be allowed in
    key = SingletonRepository.getEntityManager().getItem("house key");
    player.equipToInventoryOnly(key);
    assertFalse(portal.isAllowed(player));
   
    // add a new key with the right qualities
    // adding a new one on purpose rather than changing the old one
    // to ensure that a wrong key is not enough to deny entrance
    key = SingletonRepository.getEntityManager().getItem("house key");
    ((HouseKey) key).setup("henhouse", 0, null);
    player.equipToInventoryOnly(key);
    assertTrue(portal.isAllowed(player));
   
    // after changing the lock the player should not be allowed in
    portal.changeLock();
    assertFalse(portal.isAllowed(player));
   
    // ...until the key is updated to match the portal
    ((HouseKey) key).setup("henhouse", portal.getLockNumber(), null);
    assertTrue(portal.isAllowed(player));
  }
 
  /**
   * Tests for changeLock.
   */
  @Test
  public void testChangeLock() {
    final HousePortal portal = new HousePortal("henhouse");
    for (int i = 0; i <= 10; i++) {
      assertEquals(i, portal.getLockNumber());
      portal.changeLock();
    }
  }
 
  /**
   * Tests for expiryTime.
   */
  @Test
  public void testExpiryTime() {
    final HousePortal portal = new HousePortal("henhouse");
    portal.setExpireTime(49584);
    assertEquals(49584, portal.getExpireTime());
    portal.setExpireTime(-912234223);
    assertEquals(-912234223, portal.getExpireTime());
  }
 
  /**
   * Tests for getPortalNumber.
   */
  @Test
  public void testGetPortalNumber() {
    HousePortal portal = new HousePortal("henhouse");
    assertEquals(0, portal.getPortalNumber());
   
    portal = new HousePortal("henhouse 2");
    assertEquals(0, portal.getPortalNumber());
   
    portal = new HousePortal("mental institution");
    assertEquals(0, portal.getPortalNumber());
   
    portal = new HousePortal("mental institution 0");
    assertEquals(0, portal.getPortalNumber());
   
    portal = new HousePortal("some other house");
    assertEquals(0, portal.getPortalNumber());
   
    portal = new HousePortal("real house 1");
    assertEquals(1, portal.getPortalNumber());
   
    portal = new HousePortal("real house 13");
    assertEquals(13, portal.getPortalNumber());
   
    portal = new HousePortal("another real house 13");
    assertEquals(0, portal.getPortalNumber());
  }
}
TOP

Related Classes of games.stendhal.server.entity.mapstuff.portal.HousePortalTest

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.