use of games.strategy.engine.data.Route in project triplea by triplea-game.
the class RevisedTest method testTransportsUnloadingToMultipleTerritoriesDie.
@Test
public void testTransportsUnloadingToMultipleTerritoriesDie() {
// two transports enter a battle, but drop off
// their units to two allied territories before
// the begin the battle
// the units they drop off should die with the transports
final PlayerID germans = germans(gameData);
final PlayerID british = british(gameData);
final Territory sz6 = territory("6 Sea Zone", gameData);
final Territory sz5 = territory("5 Sea Zone", gameData);
final Territory germany = territory("Germany", gameData);
final Territory norway = territory("Norway", gameData);
final Territory we = territory("Western Europe", gameData);
final Territory uk = territory("United Kingdom", gameData);
addTo(sz6, destroyer(gameData).create(2, british));
addTo(sz5, transport(gameData).create(3, germans));
addTo(germany, armour(gameData).create(3, germans));
final ITestDelegateBridge bridge = getDelegateBridge(germans(gameData));
bridge.setStepName("CombatMove");
bridge.setRemote(dummyPlayer);
moveDelegate(gameData).setDelegateBridgeAndPlayer(bridge);
moveDelegate(gameData).start();
// load two transports, 1 tank each
load(germany.getUnits().getMatches(Matches.unitCanBlitz()).subList(0, 1), new Route(germany, sz5));
load(germany.getUnits().getMatches(Matches.unitCanBlitz()).subList(0, 1), new Route(germany, sz5));
load(germany.getUnits().getMatches(Matches.unitCanBlitz()).subList(0, 1), new Route(germany, sz5));
// attack sz 6
move(sz5.getUnits().getMatches(Matches.unitCanBlitz().or(Matches.unitIsTransport())), new Route(sz5, sz6));
// unload transports, 1 each to a different country
// this move is illegal now
assertMoveError(sz6.getUnits().getMatches(Matches.unitCanBlitz()).subList(0, 1), new Route(sz6, norway));
// this move is illegal now
assertMoveError(sz6.getUnits().getMatches(Matches.unitCanBlitz()).subList(0, 1), new Route(sz6, we));
move(sz6.getUnits().getMatches(Matches.unitCanBlitz()).subList(0, 1), new Route(sz6, uk));
// fight the battle
moveDelegate(gameData).end();
final MustFightBattle battle = (MustFightBattle) AbstractMoveDelegate.getBattleTracker(gameData).getPendingBattle(sz6, false, null);
// everything hits, this will kill both transports
bridge.setRandomSource(new ScriptedRandomSource(0));
battle.fight(bridge);
// the armour should have died
assertEquals(0, norway.getUnits().countMatches(Matches.unitCanBlitz()));
assertEquals(2, we.getUnits().countMatches(Matches.unitCanBlitz()));
assertEquals(0, uk.getUnits().countMatches(Matches.unitIsOwnedBy(germans)));
}
use of games.strategy.engine.data.Route in project triplea by triplea-game.
the class RevisedTest method testTransportAttack.
@Test
public void testTransportAttack() {
final Territory sz14 = gameData.getMap().getTerritory("14 Sea Zone");
final Territory sz13 = gameData.getMap().getTerritory("13 Sea Zone");
final PlayerID germans = GameDataTestUtil.germans(gameData);
final MoveDelegate moveDelegate = (MoveDelegate) gameData.getDelegateList().getDelegate("move");
final ITestDelegateBridge bridge = getDelegateBridge(germans);
bridge.setStepName("CombatMove");
moveDelegate.setDelegateBridgeAndPlayer(bridge);
moveDelegate.start();
final Route sz14To13 = new Route();
sz14To13.setStart(sz14);
sz14To13.add(sz13);
final List<Unit> transports = sz14.getUnits().getMatches(Matches.unitIsTransport());
assertEquals(1, transports.size());
final String error = moveDelegate.move(transports, sz14To13);
assertNull(error, error);
}
use of games.strategy.engine.data.Route in project triplea by triplea-game.
the class RevisedTest method testTransportAttackSubNonCombat.
@Test
public void testTransportAttackSubNonCombat() {
final Territory sz1 = territory("1 Sea Zone", gameData);
final Territory sz8 = territory("8 Sea Zone", gameData);
final PlayerID british = british(gameData);
// german sub tries to attack a transport in non combat
// should be an error
final MoveDelegate moveDelegate = (MoveDelegate) gameData.getDelegateList().getDelegate("move");
final ITestDelegateBridge bridge = getDelegateBridge(british);
bridge.setStepName("NonCombatMove");
moveDelegate.setDelegateBridgeAndPlayer(bridge);
moveDelegate.start();
final String error = moveDelegate(gameData).move(sz8.getUnits().getUnits(), new Route(sz1, sz8));
assertError(error);
}
use of games.strategy.engine.data.Route in project triplea by triplea-game.
the class RevisedTest method testLoadAlliedTransports.
@Test
public void testLoadAlliedTransports() {
final PlayerID british = british(gameData);
final PlayerID americans = americans(gameData);
final Territory uk = territory("United Kingdom", gameData);
final ITestDelegateBridge bridge = getDelegateBridge(british);
bridge.setStepName("CombatMove");
moveDelegate(gameData).setDelegateBridgeAndPlayer(bridge);
moveDelegate(gameData).start();
// create 2 us infantry
addTo(uk, infantry(gameData).create(2, americans));
// try to load them on the british players turn
final Territory sz2 = territory("2 Sea Zone", gameData);
final String error = moveDelegate(gameData).move(uk.getUnits().getMatches(Matches.unitIsOwnedBy(americans)), new Route(uk, sz2), sz2.getUnits().getMatches(Matches.unitIsTransport()));
// should not be able to load on british turn, only on american turn
assertFalse(error == null);
}
use of games.strategy.engine.data.Route in project triplea by triplea-game.
the class RevisedTest method testRocketsDontFireInConquered.
@Test
public void testRocketsDontFireInConquered() {
final MoveDelegate move = moveDelegate(gameData);
final ITestDelegateBridge bridge = getDelegateBridge(germans(gameData));
bridge.setStepName("CombatMove");
bridge.setRemote(dummyPlayer);
move.setDelegateBridgeAndPlayer(bridge);
move.start();
// remove the russians units in caucasus so we can blitz
final Territory cauc = territory("Caucasus", gameData);
removeFrom(cauc, cauc.getUnits().getMatches(Matches.unitIsNotAa()));
// blitz
final Territory wr = territory("West Russia", gameData);
move(wr.getUnits().getMatches(Matches.unitCanBlitz()), new Route(wr, cauc));
final Set<Territory> fire = RocketsFireHelper.getTerritoriesWithRockets(gameData, germans(gameData));
// germany, WE, SE, but not caucusus
assertEquals(3, fire.size());
}
Aggregations