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()); + |