public void TestInitialize() { _gameController = Substitute.For <IGameController>(); _logicHandler = Substitute.For <ILogicHandler>(); _gameEngineInterface = Substitute.For <IGameEngineInterface>(); _dataLayer = Substitute.For <IDataLayer>(); _audioSourceShip = Substitute.For <IAudioSource>(); _playerShip = Substitute.For <IGameObject>(); _playerShip.Transform = Substitute.For <ITransform>(); _camera = Substitute.For <IGameObject>(); _gameEngineInterface.FindGameObject("MainCamera").Returns(_camera); _camera.Transform.Position.Returns(new Vector3(0, 0, 0)); _sourceAsteroid = Substitute.For <IGameObject>(); _gameEngineInterface.FindGameObject("sourceAsteroid").Returns(_sourceAsteroid); _sourceAsteroid.Transform.Position.Returns(new Vector3(0, 0, 0)); _playerShipScript = Substitute.For <IPlayerShipScript>(); _playerShipScript.Health.Returns(100); _playerShip.GetSize().Returns(new Vector3(10, 10, 10)); _gameEngineInterface.Screen.Width.Returns(SCREEN_WIDTH); _logicHandler.GameController = _gameController; _asteroidPlacementLogicImplementer = Substitute.For <IAsteroidPlacementLogicImplementer>(); _gameLogicProvider = new GameLogicProvider(_logicHandler, _gameEngineInterface, _dataLayer, _asteroidPlacementLogicImplementer); //todo 2nd game: couldn't get Substitute.ForPartsOf to work, so I had to mock all the stuff needed for the call to InitStage() _gameEngineInterface.Time = Substitute.For <ITime>(); _gameEngineInterface.Time.DeltaTime.Returns(1); }
public void TestInitialize() { _logicHandler = Substitute.For <ILogicHandler>(); _gameEngineInterface = Substitute.For <IGameEngineInterface>(); _dataLayer = Substitute.For <IDataLayer>(); _gameEngineInterface.AppVersion.Returns("1.0.0.0"); _btnPrivacyPolicy = Substitute.For <IGameObject>(); _gameEngineInterface.FindGameObject("btnPrivacyPolicy").Returns(_btnPrivacyPolicy); _btnHowToPlay = Substitute.For <IGameObject>(); _gameEngineInterface.FindGameObject("btnHowToPlay").Returns(_btnHowToPlay); _btnShare = Substitute.For <IGameObject>(); _gameEngineInterface.FindGameObject("_btnShare").Returns(_btnShare); //todo: howcome the UT works with a misnamed button? var txtVersionNumberGameObject = Substitute.For <IGameObject>(); _txtVersionNumber = Substitute.For <IText>(); txtVersionNumberGameObject.GetComponent <IText>().Returns(_txtVersionNumber); _gameEngineInterface.FindGameObject("txtVersionNumber").Returns(txtVersionNumberGameObject); _pnlMainMenu = Substitute.For <IGameObject>(); _gameEngineInterface.FindGameObject("pnlMainMenu").Returns(_pnlMainMenu); _inMenuLogicProvider = new InMenuLogicProvider(_logicHandler, _gameEngineInterface, _dataLayer); }
public void TestInitialize() { _logicHandler = Substitute.For <ILogicHandler>(); _gameEngineInterface = Substitute.For <IGameEngineInterface>(); _pnlHowToPlay = Substitute.For <IGameObject>(); _gameEngineInterface.FindGameObject("pnlHowToPlay").Returns(_pnlHowToPlay); _btnHowToPlayOk = Substitute.For <IGameObject>(); _gameEngineInterface.FindGameObject("btnHowToPlayOk").Returns(_btnHowToPlayOk); _howToPlayLogicProvider = new HowToPlayLogicProvider(_logicHandler, _gameEngineInterface, _dataLayer); }
public void TestInitialize() { _sourceAsteroid = Substitute.For <IGameObject>(); _playerShip = Substitute.For <IGameObject>(); _mainCamera = Substitute.For <IGameObject>(); _gameEngineInterface = Substitute.For <IGameEngineInterface>(); _gameEngineInterface.FindGameObject("PlayerShip").Returns(_playerShip); _gameEngineInterface.FindGameObject("Asteroid").Returns(_sourceAsteroid); _gameEngineInterface.FindGameObject("MainCamera").Returns(_mainCamera); _sourceAsteroid.GetSize().X.Returns(2); _playerShip.GetSize().X.Returns(10); _asteroidPlacementLogicImplementer = new AsteroidPlacementLogicImplementer(_gameEngineInterface, _asteroidDensity); _asteroidPlacementLogicImplementer.SourceAsteroid = _sourceAsteroid; _asteroidPlacementLogicImplementer.LogToDebugOutput = LogToDebugOutput; SetPrivateMember("X_MAX", _asteroidPlacementLogicImplementer, 40); SetPrivateMember("_asteroidDensity", _asteroidPlacementLogicImplementer, 1); //asserts for constructor test: _playerShip.Received().GetSize(); _sourceAsteroid.Received().GetSize(); _gameEngineInterface.Received(1).FindGameObject("PlayerShip"); //these mocks used to be part of CalculateXMinAndXMax const float CAMERA_HEIGHT = 5; const int SCREEN_WIDTH = 100; //the screen is 100 pixels wide var leftEdgeOfScreen = new Vector3(0, 0, 0); var rightEdgeOfScreen = new Vector3(SCREEN_WIDTH, 0, 0); _sourceAsteroid.Transform.Position.Y.Returns(0); _mainCamera.Transform.Position.Y.Returns(CAMERA_HEIGHT); _gameEngineInterface.Screen.Width.Returns(SCREEN_WIDTH); _gameEngineInterface.ScreenUtils = Substitute.For <IScreenUtils>(); _gameEngineInterface.ScreenUtils .GetWorldPointFromScreenPoint(Arg.Is <IVector3>(v => v.X == 0 && v.Y == 0 && v.Z == CAMERA_HEIGHT)) .Returns(new Vector3(0, 0, 0)); _gameEngineInterface.ScreenUtils .GetWorldPointFromScreenPoint(Arg.Is <IVector3>(v => v.X == SCREEN_WIDTH && v.Y == 0 && v.Z == CAMERA_HEIGHT)) .Returns(new Vector3(WORLD_WIDTH, 0, 0)); }
public void TestInitialize() { _gameEngineInterface = Substitute.For <IGameEngineInterface>(); _logicHandler = Substitute.For <ILogicHandler>(); _btnOutOfLivesOk = Substitute.For <IGameObject>(); _pnlOutOfLives = Substitute.For <IGameObject>(); _txtDebugOutput = Substitute.For <IGameObject>(); _outOfLivesLogicProvider = new OutOfLivesLogicProvider(_logicHandler, _gameEngineInterface, _dataLayer); _gameEngineInterface.FindGameObject("btnOutOfLivesOk").Returns(_btnOutOfLivesOk); _gameEngineInterface.FindGameObject("pnlOutOfLives").Returns(_pnlOutOfLives); _gameEngineInterface.FindGameObject("txtDebugOutput").Returns(_txtDebugOutput); }
public void OnStart() { #region arrange //var gameLogicHandler = Substitute.For<ILogicHandler>(); //var gameEngineInterface = Substitute.For<IGameEngineInterface>(); var btnWinOk = Substitute.For <IGameObject>(); var pnlGameWin = Substitute.For <IGameObject>(); _gameEngineInterface.FindGameObject(Arg.Any <string>()).Returns(btnWinOk, pnlGameWin); //var dataLayer = Substitute.For<IDataLayer>(); //var winLogicProvider = new WinLogicProvider(gameLogicHandler, gameEngineInterface, dataLayer); #endregion #region act _winLogicProvider.OnStart(); #endregion #region assert Assert.IsNotNull(btnWinOk.LogicHandler); pnlGameWin.Received().SetActive(false); _gameEngineInterface.Received(1).FindGameObject("btnGameWinOk"); _gameEngineInterface.Received(1).FindGameObject("btnGameWinNextLevel"); _gameEngineInterface.Received(1).FindGameObject("txtWinMessage"); _gameEngineInterface.Received(1).FindGameObject("pnlGameWin"); #endregion }
public AsteroidPlacementLogicImplementer(IGameEngineInterface gameEngineInterface, int asteroidDensity) { _gameEngineInterface = gameEngineInterface; _asteroidDensity = asteroidDensity; var playerShip = gameEngineInterface.FindGameObject("PlayerShip"); SHIP_WIDTH = playerShip.GetSize().X; AllAsteroids = new List <IGameObject>(); }
/// <summary> /// calculates the world-space x-coordinates for the left edge (X_MIN) and right edge (X_MAX) of the screen /// </summary> /// <returns>a float array, where index 0 is X_MIN and index 1 is X_MAX</returns> private float[] CalculateXMinAndXMax() { var retVal = new float[2]; var camera = _gameEngineInterface.FindGameObject("MainCamera"); //todo next game: this should probably be passed in as a property var distanceFromCamera = camera.Transform.Position.Y - _sourceAsteroid.Transform.Position.Y; var screenPointXMin = new Utils.Vector3(0, 0, distanceFromCamera); var worldPointXMin = _gameEngineInterface.ScreenUtils.GetWorldPointFromScreenPoint(screenPointXMin); retVal[0] = worldPointXMin.X; var screenPointXMax = new Utils.Vector3(_gameEngineInterface.Screen.Width, 0, distanceFromCamera); var worldPointXMax = _gameEngineInterface.ScreenUtils.GetWorldPointFromScreenPoint(screenPointXMax); retVal[1] = worldPointXMax.X; return(retVal); }
public void OnStart_FirstLevel() { #region arrange _logicHandler.GameController.CurLevel = new LevelInfo(1, 1); _dataLayer.GetCurLevel().Returns(new LevelInfo(1, 1)); var btnStart = Substitute.For <IGameObject>(); _gameEngineInterface.FindGameObject("btnChooseLevelStart").Returns(btnStart); var btnCancel = Substitute.For <IGameObject>(); _gameEngineInterface.FindGameObject("btnChooseLevelCancel").Returns(btnCancel); var btnNextLevel = Substitute.For <IGameObject>(); _gameEngineInterface.FindGameObject("btnNextLevel").Returns(btnNextLevel); var btnPrevLevel = Substitute.For <IGameObject>(); _gameEngineInterface.FindGameObject("btnPrevLevel").Returns(btnPrevLevel); #endregion #region act _chooseLevelLogicProvider.OnStart(); #endregion #region _dataLayer.Received(1).GetCurLevel(); _gameEngineInterface.Received(1).FindGameObject("txtSelectedLevel"); _gameEngineInterface.Received(1).FindGameObject("btnChooseLevelStart"); _gameEngineInterface.Received(1).FindGameObject("btnChooseLevelCancel"); _gameEngineInterface.Received(1).FindGameObject("btnNextLevel"); _gameEngineInterface.Received(1).FindGameObject("btnPrevLevel"); _gameEngineInterface.Received(1).FindGameObject("pnlChooseLevel"); Assert.IsNotNull(btnStart.LogicHandler); Assert.IsNotNull(btnCancel.LogicHandler); Assert.IsNotNull(btnNextLevel.LogicHandler); Assert.IsNotNull(btnPrevLevel.LogicHandler); btnPrevLevel.Received(1).SetActive(false); btnNextLevel.Received(1).SetActive(false); var selectedLevelIndex = GetPrivateMember <int>("_selectedLevelIndex", _chooseLevelLogicProvider); Assert.AreEqual(0, selectedLevelIndex); var maxLevelIndex = GetPrivateMember <int>("_maxLevelIndex", _chooseLevelLogicProvider); Assert.AreEqual(selectedLevelIndex, maxLevelIndex); var txtSelectedLevel = GetPrivateMember <IText>("_txtSelectedLevel", _chooseLevelLogicProvider); Assert.AreEqual("1-1", txtSelectedLevel.Text); #endregion }
public void OnStart() { #region arrange _gameEngineInterface.AppStoreService = Substitute.For <IAppStoreService>(); _gameEngineInterface.AppStoreService.OnPurchaseFailedEventHandler = null; var btnStartGame = Substitute.For <IGameObject>(); btnStartGame.LogicHandler = null; _gameEngineInterface.FindGameObject("btnStartGame").Returns(btnStartGame); var btnGetMoreLives = Substitute.For <IGameObject>(); btnGetMoreLives.LogicHandler = null; _gameEngineInterface.FindGameObject("btnGetMoreLives").Returns(btnGetMoreLives); var btnExitGame = Substitute.For <IGameObject>(); btnExitGame.LogicHandler = null; _gameEngineInterface.FindGameObject("btnExitGame").Returns(btnExitGame); var btnPurchaseSucceededOk = Substitute.For <IGameObject>(); btnPurchaseSucceededOk.LogicHandler = null; _gameEngineInterface.FindGameObject("btnStorePurchaseSucceededOk").Returns(btnPurchaseSucceededOk); var btnPurchaseFailedOk = Substitute.For <IGameObject>(); btnPurchaseFailedOk.LogicHandler = null; _gameEngineInterface.FindGameObject("btnStorePurchaseFailedOk").Returns(btnPurchaseFailedOk); var pnlPurchaseSucceeded = Substitute.For <IGameObject>(); _gameEngineInterface.FindGameObject("pnlStorePurchaseSucceeded").Returns(pnlPurchaseSucceeded); var pnlPurchaseFailed = Substitute.For <IGameObject>(); _gameEngineInterface.FindGameObject("pnlStorePurchaseFailed").Returns(pnlPurchaseFailed); var pnlChooseLevel = Substitute.For <IGameObject>(); _gameEngineInterface.FindGameObject("pnlChooseLevel").Returns(pnlChooseLevel); #endregion #region act _inMenuLogicProvider.OnStart(); #endregion #region assert _gameEngineInterface.Received(1).FindGameObject("btnStartGame"); Assert.IsNotNull(btnStartGame.LogicHandler); _gameEngineInterface.Received(1).FindGameObject("btnHowToPlay"); Assert.IsNotNull(_btnHowToPlay.LogicHandler); _gameEngineInterface.Received(1).FindGameObject("btnShare"); Assert.IsNotNull(_btnShare.LogicHandler); _gameEngineInterface.Received(1).FindGameObject("btnGetMoreLives"); Assert.IsNotNull(btnGetMoreLives.LogicHandler); _gameEngineInterface.Received(1).FindGameObject("btnExitGame"); Assert.IsNotNull(btnExitGame.LogicHandler); _gameEngineInterface.Received(1).FindGameObject("btnPrivacyPolicy"); Assert.IsNotNull(_btnPrivacyPolicy.LogicHandler); _gameEngineInterface.Received(1).FindGameObject("txtVersionNumber"); var expectedVersionNumber = "v" + _gameEngineInterface.AppVersion; Assert.AreEqual(expectedVersionNumber, _txtVersionNumber.Text); _gameEngineInterface.Received(1).FindGameObject("btnStorePurchaseSucceededOk"); Assert.IsNotNull(btnPurchaseSucceededOk.LogicHandler); _gameEngineInterface.Received(1).FindGameObject("btnStorePurchaseFailedOk"); Assert.IsNotNull(btnPurchaseFailedOk.LogicHandler); _gameEngineInterface.Received(1).FindGameObject("pnlMainMenu"); _pnlMainMenu.Received(1).SetActive(false); _gameEngineInterface.Received(1).FindGameObject("pnlStorePurchaseSucceeded"); pnlPurchaseSucceeded.Received(1).SetActive(false); _gameEngineInterface.Received(1).FindGameObject("pnlStorePurchaseFailed"); pnlPurchaseFailed.Received(1).SetActive(false); _gameEngineInterface.Received(1).FindGameObject("pnlChooseLevel"); pnlChooseLevel.Received(1).SetActive(false); Assert.AreEqual(1, _gameEngineInterface.TimeScale); Assert.IsNotNull(_gameEngineInterface.AppStoreService.OnPurchaseFailedEventHandler); #endregion }
public void TestInitialize() { _logicHandler = Substitute.For <ILogicHandler>(); _gameEngineInterface = Substitute.For <IGameEngineInterface>(); _dataLayer = Substitute.For <IDataLayer>(); _gameController = Substitute.For <IGameController>(); _logicHandler.GameController.Returns(_gameController); _productInfoViewModels = new List <ProductInfoViewModel>() { new ProductInfoViewModel { ProductId = Constants.ProductNames.BuyLivesSmall, PriceString = "$0.99", SavePctString = string.Empty }, new ProductInfoViewModel { ProductId = Constants.ProductNames.BuyLivesMedium, PriceString = "$1.99", SavePctString = "SAVE 30%" }, new ProductInfoViewModel { ProductId = Constants.ProductNames.BuyLivesLarge, PriceString = "$2.99", SavePctString = "SAVE 40%" }, }; _gameController.ProductsForUI.Returns(_productInfoViewModels); _dataLayer.GetNumLivesRemaining().Returns(10); _getMoreLivesLogicProvider = new GetMoreLivesLogicProvider(_logicHandler, _gameEngineInterface, _dataLayer); _pnlGetMoreLives = Substitute.For <IGameObject>(); _gameEngineInterface.FindGameObject("pnlGetMoreLives").Returns(_pnlGetMoreLives); _btnCancel = Substitute.For <IGameObject>(); _gameEngineInterface.FindGameObject("btnGetMoreLivesCancel").Returns(_btnCancel); _btnBuyLivesSmall = Substitute.For <IGameObject>(); _gameEngineInterface.FindGameObject("btnBuyLivesSmall").Returns(_btnBuyLivesSmall); _btnBuyLivesMedium = Substitute.For <IGameObject>(); _gameEngineInterface.FindGameObject("btnBuyLivesMedium").Returns(_btnBuyLivesMedium); _btnBuyLivesLarge = Substitute.For <IGameObject>(); _gameEngineInterface.FindGameObject("btnBuyLivesLarge").Returns(_btnBuyLivesLarge); _txtCurrentLivesGameObject = Substitute.For <IGameObject>(); _txtCurrentLives = Substitute.For <IText>(); _txtCurrentLivesGameObject.GetComponent <IText>().Returns(_txtCurrentLives); _gameEngineInterface.FindGameObject("txtCurrentLives").Returns(_txtCurrentLivesGameObject); var txtDebugOutputGameObject = Substitute.For <IGameObject>(); _txtDebugOutput = Substitute.For <IText>(); txtDebugOutputGameObject.GetComponent <IText>().Returns(_txtDebugOutput); _gameEngineInterface.FindGameObject("txtDebugOutput").Returns(txtDebugOutputGameObject); _buttonAndSaveLabels[Constants.ProductNames.BuyLivesSmall] = new Tuple <IText, IText>(Substitute.For <IText>(), Substitute.For <IText>()); _btnBuyLivesSmall.GetComponent <IText>().Returns(_buttonAndSaveLabels[Constants.ProductNames.BuyLivesSmall].Item1); _buttonAndSaveLabels[Constants.ProductNames.BuyLivesMedium] = new Tuple <IText, IText>(Substitute.For <IText>(), Substitute.For <IText>()); _btnBuyLivesMedium.GetComponent <IText>().Returns(_buttonAndSaveLabels[Constants.ProductNames.BuyLivesMedium].Item1); var savePctMediumGameObj = Substitute.For <IGameObject>(); savePctMediumGameObj.GetComponent <IText>().Returns(_buttonAndSaveLabels[Constants.ProductNames.BuyLivesMedium].Item2); _gameEngineInterface.FindGameObject("txtBuyLivesMediumSavePct").Returns(savePctMediumGameObj); _buttonAndSaveLabels[Constants.ProductNames.BuyLivesLarge] = new Tuple <IText, IText>(Substitute.For <IText>(), Substitute.For <IText>()); _btnBuyLivesLarge.GetComponent <IText>().Returns(_buttonAndSaveLabels[Constants.ProductNames.BuyLivesLarge].Item1); var savePctLargeGameObj = Substitute.For <IGameObject>(); savePctLargeGameObj.GetComponent <IText>().Returns(_buttonAndSaveLabels[Constants.ProductNames.BuyLivesLarge].Item2); _gameEngineInterface.FindGameObject("txtBuyLivesLargeSavePct").Returns(savePctLargeGameObj); }
public virtual void OnStart() { var debugOutputGameObject = _gameEngineInterface.FindGameObject("txtDebugOutput"); _txtDebugOutput = debugOutputGameObject.GetComponent <IText>(); }
public void OnStart() { #region arrange var playerShip = Substitute.For <IGameObject>(); var playerShipScript = Substitute.For <IPlayerShipScript>(); playerShipScript.GameEngineInterface = null; playerShip.GetComponent <IPlayerShipScript>().Returns(playerShipScript); _gameEngineInterface.FindGameObject("PlayerShip").Returns(playerShip); var quad = Substitute.For <IGameObject>(); _gameEngineInterface.FindGameObject("Quad").Returns(quad); var txtLives = Substitute.For <IGameObject>(); var iTextLives = Substitute.For <IText>(); txtLives.GetComponent <IText>().Returns(iTextLives); _gameEngineInterface.FindGameObject("txtLives").Returns(txtLives); var txtCurLevel = Substitute.For <IGameObject>(); var iTextCurLevel = Substitute.For <IText>(); txtCurLevel.GetComponent <IText>().Returns(iTextCurLevel); _gameEngineInterface.FindGameObject("txtCurLevel").Returns(txtCurLevel); _dataLayer.GetNumLivesRemaining().Returns(1); _logicHandler.GameController = Substitute.For <IGameController>(); _logicHandler.GameController.CurLevel.Returns(new LevelInfo(1, 1)); _asteroidPlacementLogicImplementer.InitAsteroids(Arg.Any <int>(), Arg.Any <int>()).Returns((IGameObject)null); #endregion #region act _gameLogicProvider.OnStart(); #endregion #region assert _gameEngineInterface.Received(1).FindGameObject("GlobalObject"); _gameEngineInterface.Received(1).FindGameObject("PlayerShip"); //_gameEngineInterface.Received(1).FindGameObject("PlayerShield"); _gameEngineInterface.Received(1).FindGameObject("MainCamera"); playerShip.Received().GetComponent <IPlayerShipScript>(); Assert.IsNotNull(playerShipScript.GameEngineInterface); _gameEngineInterface.Received(1).FindGameObject("Asteroid"); _gameEngineInterface.Received(1).FindGameObject("Explosion"); _gameEngineInterface.Received(1).FindGameObject("Quad"); quad.Received(1).EnableTextureWrapping(); _gameEngineInterface.Received(1).FindGameObject("txtLives"); Assert.AreEqual("LIVES: 1", iTextLives.Text); _gameEngineInterface.Received(1).FindGameObject("txtCurLevel"); Assert.AreEqual("LEVEL: 1-1", iTextCurLevel.Text); _gameEngineInterface.Received(1).SetupLighting(); _asteroidPlacementLogicImplementer.Received(1).InitAsteroids(Arg.Any <int>(), Arg.Any <int>()); Assert.AreEqual(1, playerShipScript.Health); #endregion }