Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
    }
Ejemplo n.º 8
0
    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);
    }
Ejemplo n.º 9
0
 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);
 }