Exemplo n.º 1
0
        public PlayerModel[] Execute(GeneratePlayersRequest request)
        {
            var playNamesQuery       = new GetRandomPlayerNamesQuery(_repository);
            var playerStatusQuery    = new GetRandomPlayerStatusQuery();
            var generalPositionQuery = new GetRandomGeneralPositionQuery();
            var ageQuery             = new GetRandomAgeQuery();

            var playerNames = playNamesQuery.Execute(request.NumberOfPlayersToCreate);
            var players     = new List <PlayerModel>();

            foreach (var name in playerNames)
            {
                var playerStatus    = playerStatusQuery.Execute(request.Situation);
                var generalPosition = generalPositionQuery.Execute();
                var age             = ageQuery.Execute(playerStatus);
                players.Add(new PlayerModel()
                {
                    Guid            = Guid.NewGuid(),
                    Status          = playerStatus,
                    FirstName       = name.FirstName,
                    LastName        = name.LastName,
                    GeneralPosition = generalPosition,
                    Age             = age
                });
            }

            return(players.ToArray());
        }
Exemplo n.º 2
0
        public void GeneratePositionsWithinMarginOfError()
        {
            const double marginOfError       = 0.05;
            const double totalRuns           = 10000;
            const double pitcherProbability  = 0.52;
            const double catcherProbability  = 0.08;
            const double positionProbability = 0.4;

            var positionList = new List <GeneralPosition>();

            for (var i = 0; i < totalRuns; ++i)
            {
                positionList.Add(_query.Execute());
            }

            var pitcherPct  = positionList.Count(x => x == GeneralPosition.Pitcher) / totalRuns;
            var catcherPct  = positionList.Count(x => x == GeneralPosition.Catcher) / totalRuns;
            var positionPct = positionList.Count(x => x == GeneralPosition.Position) / totalRuns;

            Assert.IsTrue(pitcherPct >= pitcherProbability - marginOfError && pitcherPct <= pitcherProbability + marginOfError, $"Pitcher percentage: {pitcherPct}");
            Assert.IsTrue(catcherPct >= catcherProbability - marginOfError && catcherPct <= catcherProbability + marginOfError, $"Catcher: percentage: {catcherPct}");
            Assert.IsTrue(positionPct >= positionProbability - marginOfError && positionPct <= positionProbability + marginOfError, $"Position percentage: {positionPct}");
        }