use of games.strategy.engine.data.ITestDelegateBridge in project triplea by triplea-game.
the class RevisedTest method testLandBattleNoSneakAttack.
@Test
public void testLandBattleNoSneakAttack() {
final String defender = "Germans";
final String attacker = "British";
final Territory attacked = territory("Libya", gameData);
final Territory from = territory("Anglo Egypt", gameData);
final ITestDelegateBridge bridge = getDelegateBridge(british(gameData));
bridge.setStepName("CombatMove");
moveDelegate(gameData).setDelegateBridgeAndPlayer(bridge);
moveDelegate(gameData).start();
move(from.getUnits().getUnits(), new Route(from, attacked));
moveDelegate(gameData).end();
final MustFightBattle battle = (MustFightBattle) AbstractMoveDelegate.getBattleTracker(gameData).getPendingBattle(attacked, false, null);
final List<String> steps = battle.determineStepStrings(true);
assertEquals(Arrays.asList(attacker + FIRE, defender + SELECT_CASUALTIES, defender + FIRE, attacker + SELECT_CASUALTIES, REMOVE_CASUALTIES, attacker + ATTACKER_WITHDRAW).toString(), steps.toString());
}
use of games.strategy.engine.data.ITestDelegateBridge in project triplea by triplea-game.
the class RevisedTest method testCanalMovementFail.
@Test
public void testCanalMovementFail() {
final Territory sz14 = territory("14 Sea Zone", gameData);
final Territory sz15 = territory("15 Sea Zone", gameData);
final Territory sz34 = territory("34 Sea Zone", gameData);
// clear the british in sz 15
removeFrom(sz15, sz15.getUnits().getUnits());
final ITestDelegateBridge bridge = getDelegateBridge(germans(gameData));
bridge.setStepName("CombatMove");
final MoveDelegate moveDelegate = moveDelegate(gameData);
moveDelegate.setDelegateBridgeAndPlayer(bridge);
moveDelegate.start();
final String error = moveDelegate.move(sz14.getUnits().getUnits(), new Route(sz14, sz15, sz34));
assertError(error);
}
use of games.strategy.engine.data.ITestDelegateBridge in project triplea by triplea-game.
the class RevisedTest method testSubAttackNonCombat.
@Test
public void testSubAttackNonCombat() {
final Territory sz2 = territory("2 Sea Zone", gameData);
final Territory sz8 = territory("8 Sea Zone", gameData);
final PlayerID germans = germans(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(germans);
bridge.setStepName("NonCombatMove");
moveDelegate.setDelegateBridgeAndPlayer(bridge);
moveDelegate.start();
final String error = moveDelegate(gameData).move(sz8.getUnits().getUnits(), new Route(sz8, sz2));
assertError(error);
}
use of games.strategy.engine.data.ITestDelegateBridge in project triplea by triplea-game.
the class RevisedTest method testMoveThroughSubmergedSubs.
@Test
public void testMoveThroughSubmergedSubs() {
final PlayerID british = GameDataTestUtil.british(gameData);
final Territory sz1 = gameData.getMap().getTerritory("1 Sea Zone");
final Territory sz7 = gameData.getMap().getTerritory("7 Sea Zone");
final Territory sz8 = gameData.getMap().getTerritory("8 Sea Zone");
final TripleAUnit sub = (TripleAUnit) sz8.getUnits().iterator().next();
sub.setSubmerged(true);
// now move to attack it
final MoveDelegate moveDelegate = (MoveDelegate) gameData.getDelegateList().getDelegate("move");
final ITestDelegateBridge bridge = getDelegateBridge(british);
bridge.setStepName("NonCombatMove");
moveDelegate.setDelegateBridgeAndPlayer(bridge);
moveDelegate.start();
// the transport can enter sz 8
// since the sub is submerged
final Route m1 = new Route(sz1, sz8);
assertNull(moveDelegate.move(sz1.getUnits().getUnits(), m1));
// the transport can now leave sz8
final Route m2 = new Route(sz8, sz7);
final String error = moveDelegate.move(sz8.getUnits().getMatches(Matches.unitIsOwnedBy(british)), m2);
assertNull(error, error);
}
use of games.strategy.engine.data.ITestDelegateBridge in project triplea by triplea-game.
the class RevisedTest method testUnloadInPreviousPhase.
@Test
public void testUnloadInPreviousPhase() {
// a transport may not unload in both combat and non combat
final Territory sz5 = gameData.getMap().getTerritory("5 Sea Zone");
final Territory eastEurope = gameData.getMap().getTerritory("Eastern Europe");
final UnitType infantryType = GameDataTestUtil.infantry(gameData);
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 eeToSz5 = new Route();
eeToSz5.setStart(eastEurope);
eeToSz5.add(sz5);
// load the transport in the baltic
final List<Unit> infantry = eastEurope.getUnits().getMatches(Matches.unitIsOfType(infantryType));
assertEquals(2, infantry.size());
final TripleAUnit transport = (TripleAUnit) sz5.getUnits().getMatches(Matches.unitIsTransport()).get(0);
String error = moveDelegate.move(infantry, eeToSz5, Collections.singletonList(transport));
assertNull(error, error);
// unload one infantry to Norway
final Territory norway = gameData.getMap().getTerritory("Norway");
final Route sz5ToNorway = new Route();
sz5ToNorway.setStart(sz5);
sz5ToNorway.add(norway);
error = moveDelegate.move(infantry.subList(0, 1), sz5ToNorway);
assertNull(error, error);
assertTrue(((TripleAUnit) infantry.get(0)).getWasUnloadedInCombatPhase());
// start non combat
moveDelegate.end();
bridge.setStepName("germanNonCombatMove");
// the transport tracker relies on the step name
while (!gameData.getSequence().getStep().getName().equals("germanNonCombatMove")) {
gameData.getSequence().next();
}
moveDelegate.setDelegateBridgeAndPlayer(bridge);
moveDelegate.start();
// try to unload the other infantry somewhere else, an error occurs
error = moveDelegate.move(infantry.subList(1, 2), sz5ToNorway);
assertNotNull(error, error);
assertTrue(error.startsWith(MoveValidator.TRANSPORT_HAS_ALREADY_UNLOADED_UNITS_IN_A_PREVIOUS_PHASE));
}
Aggregations