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

                stack.Pop();
            });
        }
        internal StackVisualizerController(ApplicationStateStack <T> stack, string stackName, IStackVisualizerView view)
        {
            m_Stack = stack;
            m_View  = view;

            m_View.SetStackName(stackName);
            m_View.ShowView(false);

            m_Stack.AddDelegate(this);
        }
        public void TestPush()
        {
            var stack = new ApplicationStateStack <TestEnum>();
            var state = new TestApplicationStateV1();

            stack.RegisterState(TestEnum.V1, state);
            stack.Push(TestEnum.V1);

            Assert.IsFalse(stack.IsBusy);
            Assert.AreEqual(stack.States.Count(), 1);
            Assert.IsTrue(stack.IsCurrent(TestEnum.V1));
        }
Example #4
0
        public static void Register <T>(ApplicationStateStack <T> stack, string stackName) where T : Enum
        {
            int stackId = GetUniqueIdForStack(stack);

            if (s_VisualizersMap.ContainsKey(stackId))
            {
                throw new ArgumentException($"An attempt to register an already registered stack: {stackName}");
            }

            var view = new StackVisualizerView();

            s_VisualizersMap.Add(stackId, new StackVisualizerController <T>(stack, stackName, view));
            OnVisualizersCollectionUpdated.Invoke();
        }
        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));
            });
        }
        public void TestPushWithMuchStates()
        {
            var stack  = new ApplicationStateStack <TestEnum>();
            var state1 = new TestApplicationStateV1();
            var state2 = new TestApplicationStateV2();

            stack.RegisterState(TestEnum.V1, state1);
            stack.RegisterState(TestEnum.V2, state2);
            stack.Set(TestEnum.V1);
            stack.Push(TestEnum.V2);

            Assert.IsFalse(stack.IsBusy);
            Assert.AreEqual(stack.States.Count(), 2);
            Assert.IsTrue(stack.IsCurrent(TestEnum.V2));
        }
Example #7
0
 static int GetUniqueIdForStack <T>(ApplicationStateStack <T> stack) where T : Enum
 {
     return(stack.GetHashCode());
 }