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()); }
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}"); }