|
From: Stefan F. <ste...@us...> - 2012-07-06 03:53:08
|
junit/rails/game/state/ActionChangeSetTest.java | 105 +----
junit/rails/game/state/AutoChangeSetTest.java | 68 +++
junit/rails/game/state/ChangeStackTest.java | 186 ++++-----
junit/rails/game/state/ManagerTest.java | 86 ++++
junit/rails/game/state/RootTest.java | 18
src/rails/game/Company.java | 2
src/rails/game/GameManager.java | 76 ++-
src/rails/game/MapHex.java | 6
src/rails/game/Player.java | 6
src/rails/game/PublicCompany.java | 18
src/rails/game/ReportBuffer.java | 16
src/rails/game/Round.java | 2
src/rails/game/StockRound.java | 6
src/rails/game/Train.java | 2
src/rails/game/TrainCertificateType.java | 4
src/rails/game/TrainManager.java | 2
src/rails/game/TreasuryShareRound.java | 8
src/rails/game/correct/CorrectionManager.java | 4
src/rails/game/model/CashMoneyModel.java | 6
src/rails/game/model/MoneyModel.java | 4
src/rails/game/special/SpecialProperty.java | 2
src/rails/game/specific/_1835/OperatingRound_1835.java | 6
src/rails/game/specific/_1856/CGRFormationRound.java | 2
src/rails/game/specific/_1856/OperatingRound_1856.java | 2
src/rails/game/specific/_1856/PublicCompany_CGR.java | 4
src/rails/game/specific/_1889/OperatingRound_1889.java | 8
src/rails/game/specific/_18EU/FinalMinorExchangeRound.java | 4
src/rails/game/specific/_18EU/OperatingRound_18EU.java | 4
src/rails/game/specific/_18EU/StockRound_18EU.java | 10
src/rails/game/specific/_18TN/PublicCompany_18TN.java | 2
src/rails/game/state/AbstractItem.java | 10
src/rails/game/state/ActionChangeSet.java | 10
src/rails/game/state/AutoChangeSet.java | 19
src/rails/game/state/BooleanChange.java | 2
src/rails/game/state/BooleanState.java | 2
src/rails/game/state/Change.java | 2
src/rails/game/state/ChangeSet.java | 12
src/rails/game/state/ChangeStack.java | 265 ++++---------
src/rails/game/state/Context.java | 4
src/rails/game/state/Manager.java | 21 -
src/rails/game/state/Root.java | 13
src/rails/game/state/StateManager.java | 9
src/rails/game/state/StringChange.java | 2
src/rails/game/state/StringState.java | 2
src/rails/ui/swing/GridPanel.java | 2
src/rails/ui/swing/ReportWindowDynamic.java | 7
46 files changed, 574 insertions(+), 477 deletions(-)
New commits:
commit 9556b67b9fd599445253dcef4ff9a4fc8041b811
Author: Stefan Frey <ste...@we...>
Date: Thu Jul 5 17:28:06 2012 +0200
updated ChangeStack and ChangeSet and added tests
diff --git a/junit/rails/game/state/AutoChangeSetTest.java b/junit/rails/game/state/AutoChangeSetTest.java
index 384d702..83aee84 100644
--- a/junit/rails/game/state/AutoChangeSetTest.java
+++ b/junit/rails/game/state/AutoChangeSetTest.java
@@ -29,7 +29,7 @@ public class AutoChangeSetTest {
state = BooleanState.create(root, STATE_ID);
state.addModel(model);
changeStack = root.getStateManager().getChangeStack();
- changeSet = changeStack.startAutoChangeSet();
+ changeSet = changeStack.closeCurrentChangeSet();
}
@Test
diff --git a/junit/rails/game/state/ChangeStackTest.java b/junit/rails/game/state/ChangeStackTest.java
new file mode 100644
index 0000000..d1d04ef
--- /dev/null
+++ b/junit/rails/game/state/ChangeStackTest.java
@@ -0,0 +1,122 @@
+package rails.game.state;
+
+import static org.junit.Assert.*;
+import static org.fest.assertions.api.Assertions.assertThat;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.runners.MockitoJUnitRunner;
+
+import rails.game.Player;
+import rails.game.action.PossibleAction;
+
+@RunWith(MockitoJUnitRunner.class)
+public class ChangeStackTest {
+
+ private final static String STATE_ID = "State";
+
+ private Root root;
+ private BooleanState state;
+ private ChangeStack changeStack;
+
+ private AutoChangeSet auto_1, auto_2, auto_3;
+ private ActionChangeSet action_1, action_2, action_3;
+ @Mock Player player;
+ @Mock PossibleAction action;
+
+ @Before
+ public void setUp() {
+ root = Root.create();
+ state = BooleanState.create(root, STATE_ID);
+ changeStack = root.getStateManager().getChangeStack();
+ auto_1 = (AutoChangeSet)changeStack.getCurrentChangeSet();
+ action_1 = changeStack.startActionChangeSet(player, action);
+ auto_2 = changeStack.closeCurrentChangeSet();
+ state.set(true);
+ auto_3 = changeStack.closeCurrentChangeSet();
+ action_2 = changeStack.startActionChangeSet(player, action);
+ state.set(false);
+ action_3 = changeStack.startActionChangeSet(player, action);
+ }
+
+ @Test
+ public void testGetCurrentChangeSet() {
+ assertSame(changeStack.getCurrentChangeSet(), action_3);
+ // on the stack there are auto_1, action_1, auto_2, action_2
+ assertEquals(changeStack.sizeUndoStack(), 4);
+ }
+
+ @Test
+ public void testCloseCurrentChangeSet() {
+ changeStack.closeCurrentChangeSet();
+ assertTrue(action_3.isClosed());
+ assertSame(changeStack.getLastClosedChangeSet(), action_3);
+ // and now action_3 is added
+ assertEquals(changeStack.sizeUndoStack(), 5);
+ }
+
+ @Test
+ public void testUndo() {
+ assertFalse(state.value());
+ // undo action 3
+ assertTrue(changeStack.undo());
+ assertEquals(changeStack.sizeUndoStack(), 4);
+ assertSame(changeStack.getLastClosedChangeSet(), action_2);
+ assertThat(changeStack.getCurrentChangeSet()).isInstanceOf(AutoChangeSet.class);
+ assertFalse(state.value());
+ // undo action 2
+ assertTrue(changeStack.undo());
+ assertEquals(changeStack.sizeUndoStack(), 3);
+ assertSame(changeStack.getLastClosedChangeSet(), auto_2);
+ assertThat(changeStack.getCurrentChangeSet()).isInstanceOf(AutoChangeSet.class);
+ assertTrue(state.value());
+ // undo auto_2 and action 1
+ assertTrue(changeStack.undo());
+ assertEquals(changeStack.sizeUndoStack(), 1);
+ assertSame(changeStack.getLastClosedChangeSet(), auto_1);
+ assertThat(changeStack.getCurrentChangeSet()).isInstanceOf(AutoChangeSet.class);
+ assertFalse(state.value());
+ // undo should not do anything now
+ assertFalse(changeStack.undo());
+ |