public void CheckIntercept()
        {
            var     ball    = Parameters.Container.Get <IBall>();
            var     players = Parameters.GetPlayers(ball);
            var     first   = players.Item1;
            var     second  = players.Item2;
            var     game    = Parameters.Container.Get <Game>().AddPlayer(first).AddPlayer(second);
            IAction action  = Parameters.Container.Get <InterceptionAction>();

            action.SetUp(game);

            var ballPlace = ZoneType.MID;

            Assert.True(first.Team.HasBall);
            Assert.AreEqual(first.Team.Ball.Place, ballPlace);

            var parameters = new EnemyParameters(first.Team);

            if (action.Execute(parameters))
            {
                Assert.True(second.Team.HasBall);
                Assert.AreEqual(second.Team.Ball.Place, ballPlace);
            }
            else
            {
                Assert.True(first.Team.HasBall);
                Assert.AreEqual(first.Team.Ball.Place, ballPlace);
            }
        }
            public void MakeShotAndVerifyResults()
            {
                Ball ball     = new Ball(whereToStart: ZoneType.ATT);
                var  players  = Parameters.GetPlayers(ball);
                var  player   = players.Item1;
                var  opponent = players.Item2;

                ShootAction action = Parameters.Container.Get <ShootAction>();

                action.SetUp(Parameters.Container.Get <Game>().AddPlayer(player).AddPlayer(opponent));
                var shootParams = new EnemyParameters(opponent.Team);

                Assert.True(ball.Place == ZoneType.ATT);
                var executionStatus = action.Execute(shootParams);

                if (executionStatus)
                {
                    Assert.True(ball.Place == ZoneType.MID);
                    Assert.True(player.Team.HasBall == false);
                }
                else
                {
                    Assert.True(ball.IsOwner(opponent.Team));
                    Assert.True(ball.Place == ZoneType.DEF);
                }
            }
        public void CheckPassTransition()
        {
            var     ball    = Parameters.Container.Get <Ball>();
            var     players = Parameters.GetPlayers(ball);
            var     first   = players.Item1;
            var     second  = players.Item2;
            IAction action  = Parameters.Container.Get <PassAction>();

            action.SetUp(Parameters.Container.Get <Game>().AddPlayer(first).AddPlayer(second));

            Assert.True(first.Team.HasBall);
            Assert.AreEqual(first.Team.Ball.Place, ZoneType.MID);

            var parameters = new EnemyParameters(second.Team);

            if (action.Execute(parameters))
            {
                Assert.AreEqual(first.Team.Ball.Place, ZoneType.ATT);
            }
            else
            {
                Assert.True(second.Team.HasBall);
                Assert.AreEqual(second.Team.Ball.Place, ZoneType.MID);
            }
        }