public void TestPauseAndResume() { var obscured = new TestGameState(); var active = new TestGameState(); using (var manager = new GameStateManager()) { manager.Push(obscured); Assert.AreEqual(0, obscured.OnPauseCallCount); manager.Push(active); Assert.AreEqual(1, obscured.OnPauseCallCount); Assert.AreEqual(0, active.OnPauseCallCount); manager.Pause(); Assert.AreEqual(1, active.OnPauseCallCount); Assert.AreEqual(0, active.OnResumeCallCount); manager.Resume(); Assert.AreEqual(1, active.OnResumeCallCount); Assert.AreEqual(0, obscured.OnResumeCallCount); manager.Pop(); Assert.AreEqual(1, obscured.OnResumeCallCount); } }
public void TestUpdateAndDrawListRollbackInPop() { var obscured = new TestGameState(); var blocker1 = new TestGameState(); var popup = new TestGameState(); var blocker2 = new TestGameState(); using (var manager = new GameStateManager()) { manager.Push(obscured); manager.Push(blocker1); manager.Push(popup, GameStateModality.Popup); manager.Update(new GameTime()); Assert.AreEqual(0, obscured.UpdateCallCount); Assert.AreEqual(1, blocker1.UpdateCallCount); Assert.AreEqual(1, popup.UpdateCallCount); Assert.AreEqual(0, blocker2.UpdateCallCount); manager.Push(blocker2); manager.Update(new GameTime()); Assert.AreEqual(0, obscured.UpdateCallCount); Assert.AreEqual(1, blocker1.UpdateCallCount); Assert.AreEqual(1, popup.UpdateCallCount); Assert.AreEqual(1, blocker2.UpdateCallCount); manager.Pop(); manager.Update(new GameTime()); Assert.AreEqual(0, obscured.UpdateCallCount); Assert.AreEqual(2, blocker1.UpdateCallCount); Assert.AreEqual(2, popup.UpdateCallCount); Assert.AreEqual(1, blocker2.UpdateCallCount); } }
public void TestEnterLeave() { GameStateManager manager = new GameStateManager(new GameServiceContainer()); TestGameState gameState = new TestGameState(manager); Assert.AreEqual(0, gameState.OnEnteredCallCount); manager.Push(gameState); Assert.AreEqual(1, gameState.OnEnteredCallCount); Assert.AreEqual(0, gameState.OnLeavingCallCount); manager.Pop(); Assert.AreEqual(1, gameState.OnLeavingCallCount); }
public void TestPauseResume() { GameStateManager manager = new GameStateManager(new GameServiceContainer()); TestGameState gameState = new TestGameState(manager); manager.Push(gameState); Assert.AreEqual(0, gameState.OnPauseCallCount); manager.Push(new TestGameState(manager)); Assert.AreEqual(1, gameState.OnPauseCallCount); Assert.AreEqual(0, gameState.OnResumeCallCount); manager.Pop(); Assert.AreEqual(1, gameState.OnResumeCallCount); }
public void TestPopToUnresumableState() { GameStateManager manager = new GameStateManager(new GameServiceContainer()); TestGameState test = new TestGameState(manager); manager.Push(new UnresumableGameState(manager)); manager.Push(test); Assert.Throws <InvalidOperationException>( delegate() { manager.Pop(); } ); Assert.AreEqual(test.OnPauseCallCount, test.OnResumeCallCount); Assert.AreEqual(test.OnLeavingCallCount + 1, test.OnEnteredCallCount); }
public void TestDisposalInPop(bool disposalEnabled) { var test = new TestGameState(); using (var manager = new GameStateManager()) { manager.DisposeDroppedStates = disposalEnabled; manager.Push(test); Assert.AreEqual(0, test.DisposeCallCount); Assert.AreSame(test, manager.Pop()); if (disposalEnabled) { Assert.AreEqual(1, test.DisposeCallCount); } else { Assert.AreEqual(0, test.DisposeCallCount); } } }
public void TestPopToUnresumableState() { GameStateManager manager = new GameStateManager(new GameServiceContainer()); TestGameState test = new TestGameState(manager); manager.Push(new UnresumableGameState(manager)); manager.Push(test); Assert.Throws<InvalidOperationException>( delegate() { manager.Pop(); } ); Assert.AreEqual(test.OnPauseCallCount, test.OnResumeCallCount); Assert.AreEqual(test.OnLeavingCallCount + 1, test.OnEnteredCallCount); }