Package games.stendhal.common

Source Code of games.stendhal.common.CollisionMapTest

/* $Id: CollisionMapTest.java,v 1.6 2010/09/19 02:37:46 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.common;

import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import games.stendhal.client.entity.Player;
import games.stendhal.server.core.engine.StendhalRPRuleProcessor;
import games.stendhal.server.maps.MockStendlRPWorld;
import games.stendhal.tools.tiled.LayerDefinition;

import java.awt.geom.Rectangle2D;
import java.util.BitSet;

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 CollisionMapTest {

  @BeforeClass
  public static void setUpBeforeClass() throws Exception {
  }

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

  @Before
  public void setUp() throws Exception {
  }

  @After
  public void tearDown() throws Exception {
  }

  /**
   * Tests for collissionMap.
   */
  @Test
  public void testCollissionMap() throws Exception {
    final CollisionMap map = new CollisionMap(1, 1);
    assertThat(map.getWidth(), is(1));
    assertThat(map.getHeight(), is(1));
    final CollisionMap map2x2 = new CollisionMap(2, 2);
    assertThat(map2x2.getWidth(), is(2));
    assertThat(map2x2.getHeight(), is(2));

  }

  /**
   * Tests for collides.
   */
  @Test
  public void testcollides() throws Exception {
    final CollisionMap map = new CollisionMap(2, 2);
    assertFalse(map.get(0, 0));
    assertFalse(map.get(1, 0));
    assertFalse(map.get(0, 1));
    assertFalse(map.get(1, 1));
    map.set(1, 0);
    assertFalse(map.get(0, 0));
    assertTrue(map.get(1, 0));
    assertFalse(map.get(0, 1));
    assertFalse(map.get(1, 1));

    assertTrue(map.collides(0, 0, 2, 2));
  }

  /**
   * Tests for collides2.
   */
  @Test
  public void testcollides2() throws Exception {
    final CollisionMap map = new CollisionMap(4, 4);
    map.set(0, 0);
    map.set(3, 0);
    map.set(0, 3);
    map.set(3, 3);
    assertTrue(map.collides(0, 0, 4, 4));

    assertTrue(map.collides(0, 0, 2, 2));
    assertFalse(map.collides(0, 1, 2, 2));
    assertTrue(map.collides(0, 2, 2, 2));
    assertTrue("edge", map.collides(0, 3, 2, 2));

    assertFalse(map.collides(1, 0, 2, 2));
    assertFalse(map.collides(1, 1, 2, 2));
    assertFalse(map.collides(1, 2, 2, 2));
    assertTrue("edge", map.collides(1, 3, 2, 2));

    assertTrue(map.collides(2, 0, 2, 2));
    assertFalse(map.collides(2, 1, 2, 2));
    assertTrue(map.collides(2, 2, 2, 2));
    assertTrue("edge", map.collides(2, 3, 2, 2));

    assertTrue("edge", map.collides(3, 0, 2, 2));
    assertTrue("edge", map.collides(3, 1, 2, 2));
    assertTrue("edge", map.collides(3, 2, 2, 2));
    assertTrue("edge", map.collides(3, 3, 2, 2));

  }

  /**
   * Tests for collidesEdges.
   */
  @Test
  public void testcollidesEdges() throws Exception {
    final CollisionMap map = new CollisionMap(4, 4);
    assertFalse(map.collides(0, 0, 2, 2));
    assertFalse(map.collides(0, 1, 2, 2));
    assertFalse(map.collides(0, 2, 2, 2));
    assertTrue("edge", map.collides(0, 3, 2, 2));

    assertFalse(map.collides(1, 0, 2, 2));
    assertFalse(map.collides(1, 1, 2, 2));
    assertFalse(map.collides(1, 2, 2, 2));
    assertTrue("edge", map.collides(1, 3, 2, 2));

    assertFalse(map.collides(2, 0, 2, 2));
    assertFalse(map.collides(2, 1, 2, 2));
    assertFalse(map.collides(2, 2, 2, 2));
    assertTrue("edge", map.collides(2, 3, 2, 2));

    assertTrue("edge", map.collides(3, 0, 2, 2));
    assertTrue("edge", map.collides(3, 1, 2, 2));
    assertTrue("edge", map.collides(3, 2, 2, 2));
    assertTrue("edge", map.collides(3, 3, 2, 2));

  }

  /**
   * Tests for bitsetlogic.
   */
  @Test
  public void testbitsetlogic() throws Exception {
    final BitSet setallfalse = new BitSet(7);
    final BitSet invert = (BitSet) setallfalse.clone();
    assertThat(invert.length(), is(0));

    invert.flip(0, 6);
    assertThat(invert.length(), is(6));
    final BitSet set = new BitSet();
    set.set(3);
    set.set(4);
    set.set(5);
    set.set(7);
    set.set(8);

    final BitSet subset = set.get(2, 6);

    assertFalse(subset.get(0));
    assertTrue(subset.get(1));
    assertTrue(subset.get(2));
    assertTrue(subset.get(3));
    assertFalse(subset.get(4));
    assertFalse(subset.get(5));

    final BitSet subset2 = set.get(2, 8);

    assertFalse(subset2.get(0));
    assertTrue(subset2.get(1));
    assertTrue(subset2.get(2));
    assertTrue(subset2.get(3));
    assertFalse(subset2.get(4));
    assertTrue(subset2.get(5));
    assertFalse(subset2.get(6));

  }

  /**
   * Tests for clear.
   */
  @Test
  public void testClear() throws Exception {
    final CollisionMap map = new CollisionMap(4, 4);
    map.set(0, 0);
    map.set(3, 0);
    map.set(0, 3);
    map.set(3, 3);
    assertTrue(map.collides(0, 0, 4, 4));
    map.clear();
    assertFalse(map.collides(0, 0, 4, 4));

  }
 
  /**
   * Tests for setCollideRectangle2D2x1.
   */
  @Test
  public void testsetCollideRectangle2D2x1() throws Exception {
    final CollisionMap map = new CollisionMap(4, 4);
    Rectangle2D shape = new Rectangle2D.Double(1.0, 2.0, 2.0, 1.0);
    map.set(shape);
    assertFalse(map.get(0, 0));
    assertFalse(map.get(0, 1));
    assertFalse(map.get(0, 2));
    assertFalse(map.get(0, 3));
   
    assertFalse(map.get(1, 0));
    assertFalse(map.get(1, 1));
    assertTrue(map.get(1, 2));
    assertFalse(map.get(1, 3));
   
    assertFalse(map.get(2, 0));
    assertFalse(map.get(2, 1));
    assertTrue(map.get(2, 2));
    assertFalse(map.get(2, 3));
   
    assertFalse(map.get(3, 0));
    assertFalse(map.get(3, 1));
    assertFalse(map.get(3, 2));
    assertFalse(map.get(3, 3));

  }
  /**
   * Tests for setCollideRectangle2D2x3.
   */
  @Test
  public void testsetCollideRectangle2D2x3() throws Exception {
    final CollisionMap map = new CollisionMap(4, 4);
    Rectangle2D shape = new Rectangle2D.Double(1.0, 0.0, 2.0, 3.0);
    map.set(shape);
    assertFalse(map.get(0, 0));
    assertFalse(map.get(0, 1));
    assertFalse(map.get(0, 2));
    assertFalse(map.get(0, 3));
   
    assertTrue(map.get(1, 0));
    assertTrue(map.get(1, 1));
    assertTrue(map.get(1, 2));
    assertFalse(map.get(1, 3));
   
    assertTrue(map.get(2, 0));
    assertTrue(map.get(2, 1));
    assertTrue(map.get(2, 2));
    assertFalse(map.get(2, 3));
   
    assertFalse(map.get(3, 0));
    assertFalse(map.get(3, 1));
    assertFalse(map.get(3, 2));
    assertFalse(map.get(3, 3));

  }


  /**
   * Tests for createLayerDefintion.
   */
  @Test
  public void testCreateLayerDefintion() throws Exception {
    LayerDefinition layer;
    final int width = 3;
    final int height = 4;
    layer = new LayerDefinition(width, height);
    layer.build();
    layer.set(1, 2, 1);
    layer.set(2, 3, 1);

    final CollisionMap map = new CollisionMap(layer);
    assertThat(map.getWidth(), is(3));
    assertThat(map.getHeight(), is(4));
    for (int x = 0; x < width; x++) {
      for (int y = 0; y < height; y++) {
        final boolean isSet = layer.getTileAt(x, y) != 0;
        assertThat(x + ";" + y, map.get(x, y), is(isSet));
      }
    }

  }

  /**
   * Tests for collidesEntity.
   */
  @Test
  public void testCollidesEntity() throws Exception {
    final CollisionMap map = new CollisionMap(4, 4);
    map.set(1, 1);
    Player bob = new Player();
    PlayerTestHelper.generatePlayerRPClasses();
    StendhalRPRuleProcessor.get();
    MockStendlRPWorld.get();
    games.stendhal.server.entity.player.Player serverbob = games.stendhal.server.entity.player.Player
        .createZeroLevelPlayer("bob", null);
    serverbob.setPosition(0, 0);
    bob.initialize(serverbob);

    assertThat(bob.getWidth(), is(1.0));
    assertThat(bob.getWidth(), is(1.0));
    assertThat(bob.getX(), is(0.0));
    assertThat(bob.getY(), is(0.0));

    assertFalse(map.collides((int) bob.getX(), (int) bob.getY(), (int) bob
        .getWidth(), (int) bob.getHeight()));
    serverbob.setPosition(0, 1);
    bob.initialize(serverbob);
    assertThat(bob.getX(), is(0.0));
    assertThat(bob.getY(), is(1.0));

    assertFalse(map.collides((int) bob.getX(), (int) bob.getY(), (int) bob
        .getWidth(), (int) bob.getHeight()));
    serverbob.setPosition(0, 2);
    bob.initialize(serverbob);
    assertFalse(map.collides((int) bob.getX(), (int) bob.getY(), (int) bob
        .getWidth(), (int) bob.getHeight()));
    serverbob.setPosition(0, 3);
    bob.initialize(serverbob);
    assertFalse(map.collides((int) bob.getX(), (int) bob.getY(), (int) bob
        .getWidth(), (int) bob.getHeight()));
    serverbob.setPosition(1, 0);
    bob.initialize(serverbob);
    assertFalse(map.collides((int) bob.getX(), (int) bob.getY(), (int) bob
        .getWidth(), (int) bob.getHeight()));
    serverbob.setPosition(1, 1);
    bob.initialize(serverbob);
    assertTrue(map.collides((int) bob.getX(), (int) bob.getY(), (int) bob
        .getWidth(), (int) bob.getHeight()));
    serverbob.setPosition(1, 2);
    bob.initialize(serverbob);
    assertFalse(map.collides((int) bob.getX(), (int) bob.getY(), (int) bob
        .getWidth(), (int) bob.getHeight()));
    serverbob.setPosition(1, 3);
    bob.initialize(serverbob);
    assertFalse(map.collides((int) bob.getX(), (int) bob.getY(), (int) bob
        .getWidth(), (int) bob.getHeight()));
    serverbob.setPosition(2, 0);
    bob.initialize(serverbob);
    assertFalse(map.collides((int) bob.getX(), (int) bob.getY(), (int) bob
        .getWidth(), (int) bob.getHeight()));
    serverbob.setPosition(2, 1);
    bob.initialize(serverbob);
    assertFalse(map.collides((int) bob.getX(), (int) bob.getY(), (int) bob
        .getWidth(), (int) bob.getHeight()));
    serverbob.setPosition(2, 2);
    bob.initialize(serverbob);
    assertFalse(map.collides((int) bob.getX(), (int) bob.getY(), (int) bob
        .getWidth(), (int) bob.getHeight()));
    serverbob.setPosition(2, 3);
    bob.initialize(serverbob);
    assertFalse(map.collides((int) bob.getX(), (int) bob.getY(), (int) bob
        .getWidth(), (int) bob.getHeight()));
    serverbob.setPosition(3, 0);
    bob.initialize(serverbob);
    assertFalse(map.collides((int) bob.getX(), (int) bob.getY(), (int) bob
        .getWidth(), (int) bob.getHeight()));
    serverbob.setPosition(3, 1);
    bob.initialize(serverbob);
    assertFalse(map.collides((int) bob.getX(), (int) bob.getY(), (int) bob
        .getWidth(), (int) bob.getHeight()));
    serverbob.setPosition(3, 2);
    bob.initialize(serverbob);
    assertFalse(map.collides((int) bob.getX(), (int) bob.getY(), (int) bob
        .getWidth(), (int) bob.getHeight()));
    serverbob.setPosition(3, 3);
    bob.initialize(serverbob);
    assertFalse(map.collides((int) bob.getX(), (int) bob.getY(), (int) bob
        .getWidth(), (int) bob.getHeight()));

  }
 
 

}
TOP

Related Classes of games.stendhal.common.CollisionMapTest

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.