public void HandleInput_GameLoseTryAgain()
        {
            #region arrange
            var gameController      = Substitute.For <IGameController>();
            var gameLogicHandler    = Substitute.For <ILogicHandler>();
            var gameEngineInterface = Substitute.For <IGameEngineInterface>();
            var dataLayer           = Substitute.For <IDataLayer>();

            var loseLogicProvider = new LoseLogicProvider(gameController, gameLogicHandler, gameEngineInterface, dataLayer);

            var uiInputStates = GetPrivateMember <Dictionary <UIInputAxis, bool> >("_uiInputStates", loseLogicProvider);
            uiInputStates[UIInputAxis.btnGameOverMainMenu]     = false;
            uiInputStates[UIInputAxis.btnGameOverGetMoreLives] = false;
            uiInputStates[UIInputAxis.btnGameLoseMainMenu]     = false;
            uiInputStates[UIInputAxis.btnGameLoseTryAgain]     = true;
            #endregion

            #region act
            loseLogicProvider.HandleInput();
            #endregion

            #region assert
            Assert.IsFalse(uiInputStates[UIInputAxis.btnGameLoseTryAgain]);
            gameController.Received(1).LoadSceneAsync(Constants.SceneNames.GameScene);
            #endregion
        }
        public void HandleInput_GameOverGetMoreLives()
        {
            #region arrange
            var gameController      = Substitute.For <IGameController>();
            var gameLogicHandler    = Substitute.For <ILogicHandler>();
            var gameEngineInterface = Substitute.For <IGameEngineInterface>();
            var dataLayer           = Substitute.For <IDataLayer>();

            gameEngineInterface.AppStoreService = Substitute.For <IAppStoreService>();

            var loseLogicProvider = new LoseLogicProvider(gameController, gameLogicHandler, gameEngineInterface, dataLayer);

            var uiInputStates = GetPrivateMember <Dictionary <UIInputAxis, bool> >("_uiInputStates", loseLogicProvider);
            uiInputStates[UIInputAxis.btnGameOverMainMenu]     = false;
            uiInputStates[UIInputAxis.btnGameOverGetMoreLives] = true;
            uiInputStates[UIInputAxis.btnGameLoseMainMenu]     = false;
            uiInputStates[UIInputAxis.btnGameLoseTryAgain]     = false;
            #endregion

            #region act
            loseLogicProvider.HandleInput();
            #endregion

            #region assert
            Assert.IsFalse(uiInputStates[UIInputAxis.btnGameOverGetMoreLives]);
            gameEngineInterface.AppStoreService.Received(1).BuyProductByID(Constants.ProductNames.BuyLivesSmall); //todo: update test. this now displays the Get More Lives dialog instead of just making a purchase
            #endregion
        }