public void TestPopWithError()
        {
            Assert.Throws <Exception>(() =>
            {
                var stack = new ApplicationStateStack <TestEnum>();

                stack.Pop();
            });
        }
        public void TestPopWithoutError()
        {
            Assert.DoesNotThrow(() =>
            {
                var stack = new ApplicationStateStack <TestEnum>();
                stack.RegisterState(TestEnum.V1, new TestApplicationStateV1());
                stack.Set(TestEnum.V1);

                stack.Pop();

                Assert.IsFalse(stack.IsBusy);
                Assert.AreEqual(stack.States.Count(), 0);
                Assert.IsFalse(stack.IsCurrent(TestEnum.V1));
            });
        }