From c881a632a2a0277b1cf20083e82bbe5434c5d485 Mon Sep 17 00:00:00 2001
From: Ola Leifler <ola.leifler@liu.se>
Date: Thu, 15 Jun 2017 09:00:56 +0200
Subject: [PATCH] Reset limit as cleanup after test

---
 .../sf/freecol/common/model/LimitTest.java    | 358 ++++++++++--------
 1 file changed, 199 insertions(+), 159 deletions(-)

diff --git a/test/src/net/sf/freecol/common/model/LimitTest.java b/test/src/net/sf/freecol/common/model/LimitTest.java
index d64f2f4..1a72f58 100644
--- a/test/src/net/sf/freecol/common/model/LimitTest.java
+++ b/test/src/net/sf/freecol/common/model/LimitTest.java
@@ -19,6 +19,8 @@
 
 package net.sf.freecol.common.model;
 
+import org.junit.After;
+
 import net.sf.freecol.common.model.GameOptions;
 import net.sf.freecol.common.model.Operand.OperandType;
 import net.sf.freecol.common.model.Operand.ScopeLevel;
@@ -27,165 +29,203 @@ import net.sf.freecol.server.model.ServerBuilding;
 import net.sf.freecol.server.model.ServerUnit;
 import net.sf.freecol.util.test.FreeColTestCase;
 
-
 public class LimitTest extends FreeColTestCase {
 
-    public void testOperand() {
-
-        UnitType carpenter = spec().getUnitType("model.unit.masterCarpenter");
-        UnitType frigate = spec().getUnitType("model.unit.frigate");
-
-        Operand operand = new Operand();
-        assertEquals(OperandType.NONE, operand.getOperandType());
-        assertEquals(ScopeLevel.NONE, operand.getScopeLevel());
-
-        operand.setType("model.unit.frigate");
-        assertTrue(operand.appliesTo(frigate));
-        assertFalse(operand.appliesTo(carpenter));
-
-    }
-
-    public void testWagonTrainLimit() {
-
-        Game game = getStandardGame();
-        Player dutch = game.getPlayerByNationId("model.nation.dutch");
-        Map map = getTestMap();
-        game.setMap(map);
-
-        Colony colony = getStandardColony(3);
-        Building armory = new ServerBuilding(getGame(), colony, spec().getBuildingType("model.building.armory"));
-        colony.addBuilding(armory);
-
-        UnitType wagonTrain = spec().getUnitType("model.unit.wagonTrain");
-        UnitType artillery = spec().getUnitType("model.unit.artillery");
-
-        Limit wagonTrainLimit = wagonTrain.getLimits().get(0);
-
-        assertTrue(colony.canBuild(artillery));
-        assertFalse(wagonTrainLimit.getLeftHandSide().appliesTo(artillery));
-
-        assertTrue(wagonTrainLimit.evaluate(colony));
-        assertTrue(colony.canBuild(wagonTrain));
-
-        Unit wagon = new ServerUnit(game, colony.getTile(), dutch, wagonTrain);
-        assertNotNull(wagon);
-        assertEquals(Colony.NoBuildReason.LIMIT_EXCEEDED,
-                     colony.getNoBuildReason(wagonTrain, null));
-        assertFalse(wagonTrainLimit.evaluate(colony));
-        assertFalse(colony.canBuild(wagonTrain));
-        assertTrue(colony.canBuild(artillery));
-    }
-
-    public void testIndependenceLimits() {
-        Game game = getStandardGame();
-        Player dutch = game.getPlayerByNationId("model.nation.dutch");
-        Map map = getTestMap();
-        game.setMap(map);
-
-        Colony colony = getStandardColony(3);
-
-        Event event = spec().getEvent("model.event.declareIndependence");
-        assertNotNull(event);
-        assertNotNull(event.getLimits());
-        assertNotNull(spec().getOption(GameOptions.LAST_COLONIAL_YEAR));
-
-        Limit rebelLimit = event.getLimit("model.limit.independence.rebels");
-        Limit colonyLimit = event.getLimit("model.limit.independence.coastalColonies");
-        Limit yearLimit = event.getLimit("model.limit.independence.year");
-
-        assertNotNull(rebelLimit);
-        assertEquals(Limit.Operator.GE, rebelLimit.getOperator());
-        assertEquals(Operand.OperandType.NONE, rebelLimit.getLeftHandSide().getOperandType());
-        assertEquals(Operand.ScopeLevel.PLAYER, rebelLimit.getLeftHandSide().getScopeLevel());
-        assertEquals(Integer.valueOf(0), rebelLimit.getLeftHandSide().getValue(dutch));
-        assertEquals(Integer.valueOf(50), rebelLimit.getRightHandSide().getValue(dutch));
-        assertFalse(rebelLimit.evaluate(dutch));
-
-        assertNotNull(colonyLimit);
-        assertEquals(Limit.Operator.GE, colonyLimit.getOperator());
-        assertEquals(Operand.OperandType.SETTLEMENTS, colonyLimit.getLeftHandSide().getOperandType());
-        assertEquals(Operand.ScopeLevel.PLAYER, colonyLimit.getLeftHandSide().getScopeLevel());
-        assertEquals("isConnectedPort", colonyLimit.getLeftHandSide().getMethodName());
-        assertFalse(colony.isConnectedPort());
-        assertEquals(Integer.valueOf(0), colonyLimit.getLeftHandSide().getValue(dutch));
-        assertEquals(Integer.valueOf(1), colonyLimit.getRightHandSide().getValue(dutch));
-        assertFalse(colonyLimit.evaluate(dutch));
-
-        assertNotNull(yearLimit);
-        assertEquals(Limit.Operator.LE, yearLimit.getOperator());
-        assertEquals(Operand.OperandType.YEAR, yearLimit.getLeftHandSide().getOperandType());
-        assertEquals(Operand.OperandType.OPTION, yearLimit.getRightHandSide().getOperandType());
-        assertEquals(GameOptions.LAST_COLONIAL_YEAR, yearLimit.getRightHandSide().getType());
-        assertEquals(Integer.valueOf(1492), yearLimit.getLeftHandSide().getValue(dutch));
-        assertEquals(Integer.valueOf(1800), yearLimit.getRightHandSide().getValue(dutch));
-        assertTrue(yearLimit.evaluate(dutch));
-
-        colony.modifyLiberty(10000);
-        colony.updateSoL();
-        assertTrue(rebelLimit.evaluate(dutch));
-
-        Tile tile = colony.getTile().getNeighbourOrNull(Direction.N);
-        tile.setType(spec().getTileType("model.tile.ocean"));
-        tile.setHighSeasCount(5);
-        tile.setExplored(dutch, true);
-        assertTrue(tile.isExploredBy(dutch));
-        assertTrue(tile.isHighSeasConnected());
-        assertTrue(!tile.isLand());
-        assertTrue(colony.isConnectedPort());
-        assertTrue(colonyLimit.getLeftHandSide().appliesTo(colony));
-        assertTrue(colonyLimit.evaluate(dutch));
-
-        IntegerOption option = spec()
-            .getIntegerOption(GameOptions.LAST_COLONIAL_YEAR);
-        option.setMinimumValue(1300);
-        option.setValue(1300);
-        assertFalse(yearLimit.evaluate(dutch));
-    }
-
-    public void testSuccessionLimits() {
-
-        Game game = getStandardGame();
-        Player dutch = game.getPlayerByNationId("model.nation.dutch");
-        Map map = getTestMap();
-        game.setMap(map);
-
-        Colony colony = getStandardColony(3);
-
-        Event event = spec().getEvent("model.event.spanishSuccession");
-        assertNotNull(event);
-        assertNotNull(event.getLimits());
-
-        Limit weakestPlayerLimit = event.getLimit("model.limit.spanishSuccession.weakestPlayer");
-        Limit strongestPlayerLimit = event.getLimit("model.limit.spanishSuccession.strongestPlayer");
-        Limit yearLimit = event.getLimit("model.limit.spanishSuccession.year");
-
-        assertNotNull(strongestPlayerLimit);
-        assertEquals(Limit.Operator.GT, strongestPlayerLimit.getOperator());
-        assertEquals(Operand.OperandType.NONE, strongestPlayerLimit.getLeftHandSide().getOperandType());
-        assertEquals(Operand.ScopeLevel.PLAYER, strongestPlayerLimit.getLeftHandSide().getScopeLevel());
-        assertEquals(Integer.valueOf(0), strongestPlayerLimit.getLeftHandSide().getValue(dutch));
-        assertEquals(Integer.valueOf(50), strongestPlayerLimit.getRightHandSide().getValue(dutch));
-        assertFalse(strongestPlayerLimit.evaluate(dutch));
-
-        assertNotNull(weakestPlayerLimit);
-        assertEquals(Limit.Operator.LT, weakestPlayerLimit.getOperator());
-        assertEquals(Operand.OperandType.NONE, weakestPlayerLimit.getLeftHandSide().getOperandType());
-        assertEquals(Operand.ScopeLevel.PLAYER, weakestPlayerLimit.getLeftHandSide().getScopeLevel());
-        assertEquals(Integer.valueOf(0), weakestPlayerLimit.getLeftHandSide().getValue(dutch));
-        assertEquals(Integer.valueOf(50), weakestPlayerLimit.getRightHandSide().getValue(dutch));
-        assertTrue(weakestPlayerLimit.evaluate(dutch));
-
-        assertNotNull(yearLimit);
-        assertEquals(Limit.Operator.GE, yearLimit.getOperator());
-        assertEquals(Operand.OperandType.YEAR, yearLimit.getLeftHandSide().getOperandType());
-        assertEquals(Operand.ScopeLevel.GAME, yearLimit.getLeftHandSide().getScopeLevel());
-        assertEquals(Integer.valueOf(1492), yearLimit.getLeftHandSide().getValue(game));
-        assertEquals(Integer.valueOf(1600), yearLimit.getRightHandSide().getValue());
-        assertFalse(yearLimit.evaluate(game));
-
-        colony.modifyLiberty(10000);
-        colony.updateSoL();
-        assertTrue(strongestPlayerLimit.evaluate(dutch));
-        assertFalse(weakestPlayerLimit.evaluate(dutch));
-    }
+	public void testOperand() {
+
+		UnitType carpenter = spec().getUnitType("model.unit.masterCarpenter");
+		UnitType frigate = spec().getUnitType("model.unit.frigate");
+
+		Operand operand = new Operand();
+		assertEquals(OperandType.NONE, operand.getOperandType());
+		assertEquals(ScopeLevel.NONE, operand.getScopeLevel());
+
+		operand.setType("model.unit.frigate");
+		assertTrue(operand.appliesTo(frigate));
+		assertFalse(operand.appliesTo(carpenter));
+
+	}
+
+	public void testWagonTrainLimit() {
+
+		Game game = getStandardGame();
+		Player dutch = game.getPlayerByNationId("model.nation.dutch");
+		Map map = getTestMap();
+		game.setMap(map);
+
+		Colony colony = getStandardColony(3);
+		Building armory = new ServerBuilding(getGame(), colony, spec()
+				.getBuildingType("model.building.armory"));
+		colony.addBuilding(armory);
+
+		UnitType wagonTrain = spec().getUnitType("model.unit.wagonTrain");
+		UnitType artillery = spec().getUnitType("model.unit.artillery");
+
+		Limit wagonTrainLimit = wagonTrain.getLimits().get(0);
+
+		assertTrue(colony.canBuild(artillery));
+		assertFalse(wagonTrainLimit.getLeftHandSide().appliesTo(artillery));
+
+		assertTrue(wagonTrainLimit.evaluate(colony));
+		assertTrue(colony.canBuild(wagonTrain));
+
+		Unit wagon = new ServerUnit(game, colony.getTile(), dutch, wagonTrain);
+		assertNotNull(wagon);
+		assertEquals(Colony.NoBuildReason.LIMIT_EXCEEDED,
+				colony.getNoBuildReason(wagonTrain, null));
+		assertFalse(wagonTrainLimit.evaluate(colony));
+		assertFalse(colony.canBuild(wagonTrain));
+		assertTrue(colony.canBuild(artillery));
+	}
+
+	public void testIndependenceLimits() {
+		Game game = getStandardGame();
+		Player dutch = game.getPlayerByNationId("model.nation.dutch");
+		Map map = getTestMap();
+		game.setMap(map);
+
+		Colony colony = getStandardColony(3);
+
+		Event event = spec().getEvent("model.event.declareIndependence");
+		assertNotNull(event);
+		assertNotNull(event.getLimits());
+		assertNotNull(spec().getOption(GameOptions.LAST_COLONIAL_YEAR));
+
+		Limit rebelLimit = event.getLimit("model.limit.independence.rebels");
+		Limit colonyLimit = event
+				.getLimit("model.limit.independence.coastalColonies");
+		Limit yearLimit = event.getLimit("model.limit.independence.year");
+
+		assertNotNull(rebelLimit);
+		assertEquals(Limit.Operator.GE, rebelLimit.getOperator());
+		assertEquals(Operand.OperandType.NONE, rebelLimit.getLeftHandSide()
+				.getOperandType());
+		assertEquals(Operand.ScopeLevel.PLAYER, rebelLimit.getLeftHandSide()
+				.getScopeLevel());
+		assertEquals(Integer.valueOf(0),
+				rebelLimit.getLeftHandSide().getValue(dutch));
+		assertEquals(Integer.valueOf(50), rebelLimit.getRightHandSide()
+				.getValue(dutch));
+		assertFalse(rebelLimit.evaluate(dutch));
+
+		assertNotNull(colonyLimit);
+		assertEquals(Limit.Operator.GE, colonyLimit.getOperator());
+		assertEquals(Operand.OperandType.SETTLEMENTS, colonyLimit
+				.getLeftHandSide().getOperandType());
+		assertEquals(Operand.ScopeLevel.PLAYER, colonyLimit.getLeftHandSide()
+				.getScopeLevel());
+		assertEquals("isConnectedPort", colonyLimit.getLeftHandSide()
+				.getMethodName());
+		assertFalse(colony.isConnectedPort());
+		assertEquals(Integer.valueOf(0), colonyLimit.getLeftHandSide()
+				.getValue(dutch));
+		assertEquals(Integer.valueOf(1), colonyLimit.getRightHandSide()
+				.getValue(dutch));
+		assertFalse(colonyLimit.evaluate(dutch));
+
+		assertNotNull(yearLimit);
+		assertEquals(Limit.Operator.LE, yearLimit.getOperator());
+		assertEquals(Operand.OperandType.YEAR, yearLimit.getLeftHandSide()
+				.getOperandType());
+		assertEquals(Operand.OperandType.OPTION, yearLimit.getRightHandSide()
+				.getOperandType());
+		assertEquals(GameOptions.LAST_COLONIAL_YEAR, yearLimit
+				.getRightHandSide().getType());
+		assertEquals(Integer.valueOf(1492), yearLimit.getLeftHandSide()
+				.getValue(dutch));
+		assertEquals(Integer.valueOf(1800), yearLimit.getRightHandSide()
+				.getValue(dutch));
+		assertTrue(yearLimit.evaluate(dutch));
+
+		colony.modifyLiberty(10000);
+		colony.updateSoL();
+		assertTrue(rebelLimit.evaluate(dutch));
+
+		Tile tile = colony.getTile().getNeighbourOrNull(Direction.N);
+		tile.setType(spec().getTileType("model.tile.ocean"));
+		tile.setHighSeasCount(5);
+		tile.setExplored(dutch, true);
+		assertTrue(tile.isExploredBy(dutch));
+		assertTrue(tile.isHighSeasConnected());
+		assertTrue(!tile.isLand());
+		assertTrue(colony.isConnectedPort());
+		assertTrue(colonyLimit.getLeftHandSide().appliesTo(colony));
+		assertTrue(colonyLimit.evaluate(dutch));
+
+		IntegerOption option = spec().getIntegerOption(
+				GameOptions.LAST_COLONIAL_YEAR);
+		option.setMinimumValue(1300);
+		option.setValue(1300);
+		assertFalse(yearLimit.evaluate(dutch));
+
+	}
+
+	@After
+	public void resetLastColonialYear() {
+		IntegerOption option = spec().getIntegerOption(
+				GameOptions.LAST_COLONIAL_YEAR);
+		option.setMinimumValue(1800);
+		option.setValue(1800);
+	}
+
+	public void testSuccessionLimits() {
+
+		Game game = getStandardGame();
+		Player dutch = game.getPlayerByNationId("model.nation.dutch");
+		Map map = getTestMap();
+		game.setMap(map);
+
+		Colony colony = getStandardColony(3);
+
+		Event event = spec().getEvent("model.event.spanishSuccession");
+		assertNotNull(event);
+		assertNotNull(event.getLimits());
+
+		Limit weakestPlayerLimit = event
+				.getLimit("model.limit.spanishSuccession.weakestPlayer");
+		Limit strongestPlayerLimit = event
+				.getLimit("model.limit.spanishSuccession.strongestPlayer");
+		Limit yearLimit = event.getLimit("model.limit.spanishSuccession.year");
+
+		assertNotNull(strongestPlayerLimit);
+		assertEquals(Limit.Operator.GT, strongestPlayerLimit.getOperator());
+		assertEquals(Operand.OperandType.NONE, strongestPlayerLimit
+				.getLeftHandSide().getOperandType());
+		assertEquals(Operand.ScopeLevel.PLAYER, strongestPlayerLimit
+				.getLeftHandSide().getScopeLevel());
+		assertEquals(Integer.valueOf(0), strongestPlayerLimit.getLeftHandSide()
+				.getValue(dutch));
+		assertEquals(Integer.valueOf(50), strongestPlayerLimit
+				.getRightHandSide().getValue(dutch));
+		assertFalse(strongestPlayerLimit.evaluate(dutch));
+
+		assertNotNull(weakestPlayerLimit);
+		assertEquals(Limit.Operator.LT, weakestPlayerLimit.getOperator());
+		assertEquals(Operand.OperandType.NONE, weakestPlayerLimit
+				.getLeftHandSide().getOperandType());
+		assertEquals(Operand.ScopeLevel.PLAYER, weakestPlayerLimit
+				.getLeftHandSide().getScopeLevel());
+		assertEquals(Integer.valueOf(0), weakestPlayerLimit.getLeftHandSide()
+				.getValue(dutch));
+		assertEquals(Integer.valueOf(50), weakestPlayerLimit.getRightHandSide()
+				.getValue(dutch));
+		assertTrue(weakestPlayerLimit.evaluate(dutch));
+
+		assertNotNull(yearLimit);
+		assertEquals(Limit.Operator.GE, yearLimit.getOperator());
+		assertEquals(Operand.OperandType.YEAR, yearLimit.getLeftHandSide()
+				.getOperandType());
+		assertEquals(Operand.ScopeLevel.GAME, yearLimit.getLeftHandSide()
+				.getScopeLevel());
+		assertEquals(Integer.valueOf(1492), yearLimit.getLeftHandSide()
+				.getValue(game));
+		assertEquals(Integer.valueOf(1600), yearLimit.getRightHandSide()
+				.getValue());
+		assertFalse(yearLimit.evaluate(game));
+
+		colony.modifyLiberty(10000);
+		colony.updateSoL();
+		assertTrue(strongestPlayerLimit.evaluate(dutch));
+		assertFalse(weakestPlayerLimit.evaluate(dutch));
+	}
 }
-- 
GitLab