package net.sf.freecol.common.model;
import net.sf.freecol.util.test.FreeColTestCase;
public class IndianSettlementTest extends FreeColTestCase {
private static GoodsType musketsType = spec().getGoodsType("model.goods.muskets");
private static GoodsType horsesType = spec().getGoodsType("model.goods.horses");
public void testAutomaticEquipBraves(){
Game game = getStandardGame();
Map map = getTestMap();
game.setMap(map);
FreeColTestCase.IndianSettlementBuilder builder = new FreeColTestCase.IndianSettlementBuilder(game);
IndianSettlement camp = builder.initialBravesInCamp(1).build();
Unit indianBrave = camp.getUnitList().get(0);
String errMsg = "Unit should not be able to automatically equip, no muskets available";
assertTrue(errMsg, indianBrave.getAutomaticEquipment() == null);
camp.addGoods(musketsType, 100);
errMsg = "Unit should be able to automatically equip, camp has muskets available";
assertFalse(errMsg, indianBrave.getAutomaticEquipment() == null);
}
/*
* Test settlement adjacent tiles ownership
* Per Col1 rules, Indian settlements do not own water tiles
*/
public void testSettlementDoesNotOwnWaterTiles(){
Game game = getStandardGame();
Map map = getCoastTestMap(spec().getTileType("model.tile.plains"));
game.setMap(map);
Tile campTile = map.getTile(9, 9);
Tile landTile = map.getTile(8, 9);
Tile waterTile = map.getTile(10, 9);
assertTrue("Setup error, camp tile should be land", campTile.isLand());
assertTrue("Setup error, tile should be land", landTile.isLand());
assertFalse("Setup error, tile should be water", waterTile.isLand());
assertTrue("Setup error, tiles should be adjacent", campTile.isAdjacent(waterTile));
assertTrue("Setup error, tiles should be adjacent", campTile.isAdjacent(landTile));
FreeColTestCase.IndianSettlementBuilder builder = new FreeColTestCase.IndianSettlementBuilder(game);
IndianSettlement camp = builder.settlementTile(campTile).build();
Player indianPlayer = camp.getOwner();
assertTrue("Indian player should own camp tile", campTile.getOwner() == indianPlayer);
assertTrue("Indian player should own land tile", landTile.getOwner() == indianPlayer);
assertFalse("Indian player should not own water tile", waterTile.getOwner() == indianPlayer);
}
/*
* Test settlement trade
*/
public void testTradeGoodsWithSetlement(){
Game game = getStandardGame();
Map map = getTestMap();
game.setMap(map);
Tile camp2Tile = map.getTile(3, 3);
FreeColTestCase.IndianSettlementBuilder builder = new FreeColTestCase.IndianSettlementBuilder(game);
IndianSettlement camp1 = builder.build();
IndianSettlement camp2 = builder.reset().settlementTile(camp2Tile).build();
final int notEnoughToShare = 50;
final int enoughToShare = 100;
final int none = 0;
camp1.addGoods(horsesType, notEnoughToShare);
camp1.addGoods(musketsType, enoughToShare);
String wrongQtyMusketsMsg = "Wrong quantity of muskets";
String wrongQtyHorsesMsg = "Wrong quantity of horses";
assertEquals(wrongQtyMusketsMsg,enoughToShare,camp1.getGoodsCount(musketsType));
assertEquals(wrongQtyHorsesMsg,notEnoughToShare,camp1.getGoodsCount(horsesType));
assertEquals(wrongQtyMusketsMsg,none,camp2.getGoodsCount(musketsType));
assertEquals(wrongQtyHorsesMsg,none,camp2.getGoodsCount(horsesType));
camp1.tradeGoodsWithSettlement(camp2);
assertEquals(wrongQtyMusketsMsg,enoughToShare / 2,camp1.getGoodsCount(musketsType));
assertEquals(wrongQtyHorsesMsg,notEnoughToShare,camp1.getGoodsCount(horsesType));
assertEquals(wrongQtyMusketsMsg,enoughToShare / 2,camp2.getGoodsCount(musketsType));
assertEquals(wrongQtyHorsesMsg,none,camp2.getGoodsCount(horsesType));
}
}