public IEnumerator LocksAndUnlocksUIEventManager()
        {
            var stackSystem     = new FakePanelStackSystem();
            var eventManager    = new FakeUIEventManager();
            var stackController = CreateStackController(stackSystem, eventManager: eventManager);

            var panelController = new FakePanelViewController
            {
                PanelType = ScriptableObject.CreateInstance <PanelType>()
            };

            stackSystem.Push(panelController);
            Assert.IsTrue(stackSystem.Count == 1);

            yield return(stackController.TransitionAsync().AsCoroutine());

            Assert.IsTrue(eventManager.LockCount == 1);
            Assert.IsTrue(eventManager.UnlockCount == 1);
        }
        private static PanelStackController CreateStackController(IPanelStackSystem stackSystem = null, IPanelViewContainer viewContainer = null, IUIEventManager eventManager = null)
        {
            if (stackSystem == null)
            {
                stackSystem = new FakePanelStackSystem();
            }

            if (viewContainer == null)
            {
                viewContainer = new FakeViewContainer();
            }

            if (eventManager == null)
            {
                eventManager = new FakeUIEventManager();
            }

            return(new PanelStackController(stackSystem, viewContainer, eventManager));
        }