package org.scotlandyard.tests.engine.boardmap;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.scotlandyard.engine.GameException;
import org.scotlandyard.engine.boardmap.BoardMap;
import org.scotlandyard.engine.constants.TransportationMethod;
import org.scotlandyard.impl.engine.GameEngine;
import org.scotlandyard.impl.engine.boardmap.BoardMapFactory;
import org.scotlandyard.impl.engine.boardmap.BoardMapImpl;
/**
* TODO add description
*
* @author Hussain Al-Mutawa
* @version 1.0
* @since Sept 2011
*
*/
public class BoardMapTest {
private transient BoardMap boardMap;
//TODO add description here
public BoardMapTest() throws GameException {
GameEngine.instance().clearRecords();
BoardMapFactory.setDefaultBoardMap(BoardMapFactory.createBoardMap("Palmerston North"));
}
@Before//TODO add description here
public void setUp() throws Exception {
boardMap = BoardMapFactory.getDefaultBoardMap();
}
@Test//TODO add description here
public final void testAddLink() throws Exception{
Assert.assertEquals("Test if the links set is empty",boardMap.getLinks().size(), 0);
boardMap.addLink(BoardMapFactory.createLink(TransportationMethod.BUS, 1, 1, 0, 0));
Assert.assertEquals("Test if the links set has one element",boardMap.getLinks().size(), 1);
boardMap.removeAllLinks();
Assert.assertEquals("Test if the links set has no element",boardMap.getLinks().size(), 0);
Assert.assertNotSame(boardMap.getCoordinates().size(), 0);
boardMap.removeAllCoordinates();
Assert.assertEquals(boardMap.getCoordinates().size(), 0);
}
@Test//TODO add description here
public final void testGetLinkAB()throws Exception{
final BoardMap map = BoardMapImpl.getNewInstance("pnth");
map.prepareMap("web/maps/pnth.xml");
Assert.assertNotNull(map.getLink("4", "3"));
Assert.assertNotNull(map.getLink("5", "7"));
Assert.assertNotNull(map.getLink("3", "4"));
Assert.assertEquals(map.getLink("1", "8").getTransportationMethod().toString(), TransportationMethod.TAXI.toString());
Assert.assertSame(map.getLink("3", "4").getCoordinateA(),map.getCoordinate("3"));
GameEngine.instance().getBoardMaps().remove("pnth");
}
@Test(expected=Exception.class)//TODO add description here
public final void testBoardMapImpl1() throws GameException{
BoardMapFactory.createBoardMap(null);
}
@Test(expected=Exception.class)//TODO add description here
public final void testBoardMapImpl2() throws GameException{
BoardMapImpl.getNewInstance(null);
}
@Test//TODO add description here
public final void testEqualsObject() throws GameException{
// for(Object o:GameEngine.instance().boardMaps().entrySet()){
// System.out.println(o);
// }
String mapName="Board Map : [Palmerston North]";
Assert.assertEquals(GameEngine.instance().getBoardMaps().get("Palmerston North").hashCode(),mapName.hashCode());
Assert.assertEquals(GameEngine.instance().getBoardMaps().size(), 1);
final BoardMap map = BoardMapFactory.createBoardMap("Palmerston North");
Assert.assertTrue(map.equals(boardMap));
Assert.assertEquals(GameEngine.instance().getBoardMaps().size(), 1);
final BoardMap map2 = BoardMapFactory.createBoardMap("Auckland");
Assert.assertFalse(map2.equals(boardMap));
Assert.assertEquals(GameEngine.instance().getBoardMaps().size(), 2);
GameEngine.instance().getBoardMaps().remove("Auckland");
Assert.assertEquals(GameEngine.instance().getBoardMaps().size(), 1);
}
@Test//TODO add description here
public final void testGetCoordinates() throws GameException{
Assert.assertEquals(boardMap.getCoordinates().size(), 0);
Assert.assertEquals(boardMap.getLinks().size(), 0);
boardMap.addLink(BoardMapFactory.createLink(TransportationMethod.UG, 1,2,3,4));
Assert.assertEquals(boardMap.getCoordinates().size(), 2);
boardMap.addLink(BoardMapFactory.createLink(TransportationMethod.UG, 1,2,3,4));
Assert.assertEquals(boardMap.getCoordinates().size(), 2);
boardMap.removeAllCoordinates();
}
@Test//TODO add description here
public final void testGetLinks() {
Assert.assertEquals(boardMap.getCoordinates().size(), 0);
Assert.assertEquals(boardMap.getLinks().size(), 0);
}
@Test//TODO add description here
public final void testGetLinksCoordinate() throws GameException{
boardMap.addLink(BoardMapFactory.createLink(TransportationMethod.UG, 1,2,3,4));
Assert.assertEquals(boardMap.getLinks(BoardMapFactory.createCoordinate(1, 2)).size(), 1);
Assert.assertEquals(boardMap.getLinks(BoardMapFactory.createCoordinate(3, 4)).size(), 1);
Assert.assertEquals(boardMap.getLinks(BoardMapFactory.createCoordinate(9991, 19999)).size(), 0);
}
@Test//TODO add description here
public final void testGetName() {
Assert.assertEquals(boardMap.getName(), "Palmerston North");
}
@Test//TODO add description here
public final void testToString() {
Assert.assertEquals(boardMap.toString(), "Board Map : [Palmerston North]");
}
}