Exemplo n.º 1
0
        public void StartReaction_GivenOneBallWithMaterial_TriggersReactionForThatBall()
        {
            // Arrange
            var moqGameController = new Mock <IGameController>();
            var moqBallList       = BallHelper.CreateMoqBallList(10);

            moqBallList = moqBallList.SetPositionsInRow(distance: 1f);
            moqBallList = moqBallList.SetAllMaterialNames("red");
            moqBallList[0].SetupGet(x => x.MaterialName).Returns("blue");
            var moqFade = new Mock <IFadeReactor>();

            moqFade.Setup(x => x.ActivateDestructionIn(It.IsAny <float>()));
            moqBallList.SetReactorCommands(fade: moqFade);
            var ballList = moqBallList.CreateBallList();

            moqGameController.SetupGet(x => x.BallCollection).Returns(ballList);
            Di.Bind <IGameController>().AsSingleton(moqGameController.Object);

            var moqGameConfig = new Mock <IGameConfig>();

            moqGameConfig.SetupGet(x => x.BallTouchRange).Returns(1.5f);
            moqGameConfig.SetupGet(x => x.CountMultiplier).Returns(1.01f);
            moqGameConfig.SetupGet(x => x.ScorePerBall).Returns(1);
            moqGameConfig.SetupGet(x => x.TimeBetweenReactions).Returns(0.02f);
            moqGameConfig.Setup(x => x.GetReactor()).Returns(ReactorTypes.Fade);
            Di.Bind <IGameConfig>().AsSingleton(moqGameConfig.Object);

            var moqScore = new Mock <IScore>();

            moqScore.SetupAllProperties();
            Di.Bind <IScore>().AsSingleton(moqScore.Object);

            var ballController = Di.Get <IBallController>();

            // Act
            ballController.StartReaction(ballList[0]);

            // Assert
            moqFade.Verify(x => x.ActivateDestructionIn(It.IsAny <float>()), Times.Once);
        }