package games.strategy.engine.xml;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.util.Collection;
import org.junit.Before;
import org.junit.Test;
import games.strategy.engine.data.DelegateList;
import games.strategy.engine.data.GameData;
import games.strategy.engine.data.GameMap;
import games.strategy.engine.data.PlayerID;
import games.strategy.engine.data.PlayerList;
import games.strategy.engine.data.ProductionFrontier;
import games.strategy.engine.data.RelationshipTracker;
import games.strategy.engine.data.Resource;
import games.strategy.engine.data.ResourceList;
import games.strategy.engine.data.Territory;
import games.strategy.engine.data.UnitTypeList;
import games.strategy.triplea.Constants;
import games.strategy.triplea.xml.TestMapGameData;
public class ParserTest {
private GameData gameData;
@Before
public void setUp() throws Exception {
gameData = TestMapGameData.GAME_EXAMPLE.getGameData();
}
@Test
public void testCanCreateData() {
assertNotNull(gameData);
}
@Test
public void testTerritoriesCreated() {
final GameMap map = gameData.getMap();
final Collection<Territory> territories = map.getTerritories();
assertEquals(territories.size(), 3);
}
@Test
public void testWater() {
final Territory atl = gameData.getMap().getTerritory("atlantic");
assertEquals(atl.isWater(), true);
final Territory can = gameData.getMap().getTerritory("canada");
assertEquals(can.isWater(), false);
}
@Test
public void testTerritoriesConnected() {
final GameMap map = gameData.getMap();
assertEquals(1, map.getDistance(map.getTerritory("canada"), map.getTerritory("us")));
}
@Test
public void testResourcesAdded() {
final ResourceList resources = gameData.getResourceList();
assertEquals(resources.size(), 2);
}
@Test
public void testUnitTypesAdded() {
final UnitTypeList units = gameData.getUnitTypeList();
assertEquals(units.size(), 1);
}
@Test
public void testPlayersAdded() {
final PlayerList players = gameData.getPlayerList();
assertEquals(players.size(), 3);
}
@Test
public void testAllianceMade() {
final PlayerList players = gameData.getPlayerList();
final PlayerID castro = players.getPlayerID("castro");
final PlayerID chretian = players.getPlayerID("chretian");
final RelationshipTracker alliances = gameData.getRelationshipTracker();
assertEquals(true, alliances.isAllied(castro, chretian));
}
@Test
public void testDelegatesCreated() {
final DelegateList delegates = gameData.getDelegateList();
assertEquals(delegates.size(), 2);
}
@Test
public void testStepsCreated() {
gameData.getSequence();
}
@Test
public void testProductionFrontiersCreated() {
assertEquals(gameData.getProductionFrontierList().size(), 2);
}
@Test
public void testProductionRulesCreated() {
assertEquals(gameData.getProductionRuleList().size(), 3);
}
@Test
public void testPlayerProduction() {
final ProductionFrontier cf = gameData.getProductionFrontierList().getProductionFrontier("canProd");
final PlayerID can = gameData.getPlayerList().getPlayerID("chretian");
assertEquals(can.getProductionFrontier(), cf);
}
@Test
public void testAttachments() {
TestAttachment att = (TestAttachment) gameData.getResourceList().getResource("gold")
.getAttachment(Constants.RESOURCE_ATTACHMENT_NAME);
assertEquals(att.getValue(), "gold");
att = (TestAttachment) gameData.getUnitTypeList().getUnitType(Constants.UNIT_TYPE_INF)
.getAttachment(Constants.INF_ATTACHMENT_NAME);
assertEquals(att.getValue(), "inf");
att = (TestAttachment) gameData.getMap().getTerritory("us").getAttachment(Constants.TERRITORY_ATTACHMENT_NAME);
assertEquals(att.getValue(), "us of a");
att = (TestAttachment) gameData.getPlayerList().getPlayerID("chretian")
.getAttachment(Constants.PLAYER_ATTACHMENT_NAME);
assertEquals(att.getValue(), "liberal");
}
@Test
public void testOwnerInitialze() {
final Territory can = gameData.getMap().getTerritory("canada");
assertNotNull("couldnt find country", can);
assertNotNull("owner null", can.getOwner());
assertEquals(can.getOwner().getName(), "chretian");
final Territory us = gameData.getMap().getTerritory("us");
assertEquals(us.getOwner().getName(), "bush");
}
@Test
public void testUnitsHeldInitialized() {
final PlayerID bush = gameData.getPlayerList().getPlayerID("bush");
assertEquals(bush.getUnits().getUnitCount(), 20);
}
@Test
public void testUnitsPlacedInitialized() {
final Territory terr = gameData.getMap().getTerritory("canada");
assertEquals(terr.getUnits().getUnitCount(), 5);
}
@Test
public void testResourcesGiven() {
final PlayerID chretian = gameData.getPlayerList().getPlayerID("chretian");
final Resource resource = gameData.getResourceList().getResource("silver");
assertEquals(200, chretian.getResources().getQuantity(resource));
}
}