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); } }