public void GetRosterDepth_Flex() { var rosterPositions = _testObjectFactory.CreateDefaultRosterPositions(); var players = _testObjectFactory.CreatePlayers( Position.Quarterback, Position.RunningBack, Position.RunningBack, Position.WideReceiver, Position.WideReceiver, Position.WideReceiver, Position.Quarterback, Position.Quarterback, Position.Quarterback, Position.TightEnd, Position.TightEnd, Position.TightEnd, Position.TightEnd, Position.Kicker, Position.Defense); var analyzer = new RosterDepthAnalyzer(rosterPositions, players); var results = analyzer.GetRosterDepth(); // W/R spot should be adequate, filled by 3rd WR. Assert.AreEqual(PositionDepth.Adequate, results[Position.WideReceiverRunningBack]); }
public ActionResult ShowRosterDepth(string teamKey, int? week) { var roster = this.Fantasizer.GetRosterPlayers(teamKey, week); var leagueSettings = this.Fantasizer.GetLeagueSettings(roster.Team.LeagueKey); var depthAnalyzer = new RosterDepthAnalyzer(leagueSettings.RosterPositions, roster.Players); var rosterDepthModel = new RosterDepthModel( roster, depthAnalyzer.GetRosterDepth(roster.Week), leagueSettings.League.EndWeek); return View(rosterDepthModel); }
public ActionResult ShowWeeklyRosterDepth(string teamKey) { var matchups = this.Fantasizer.GetMatchups(teamKey); LeagueSettings leagueSettings = null; var weeklyRosterDepthModels = new List<WeeklyRosterDepthModel>(); foreach (var matchup in matchups) { var weeklyModel = new WeeklyRosterDepthModel(); weeklyModel.Week = matchup.Week; var rosterSelf = this.Fantasizer.GetRosterPlayers(matchup.TeamKeySelf, matchup.Week); if (leagueSettings == null) { leagueSettings = this.Fantasizer.GetLeagueSettings(rosterSelf.Team.LeagueKey); } var depthAnalyzerSelf = new RosterDepthAnalyzer(leagueSettings.RosterPositions, rosterSelf.Players); weeklyModel.TeamSelf = new WeeklyTeamRosterDepthModel(); weeklyModel.TeamSelf.TeamName = rosterSelf.Team.Name; weeklyModel.TeamSelf.TeamKey = rosterSelf.Team.Key; var positionDepths = new List<PositionDepthModel>(); foreach (var positionDepth in depthAnalyzerSelf.GetRosterDepth(matchup.Week)) { if ((int)positionDepth.Value < 3) { var pdModel = new PositionDepthModel(); pdModel.PositionName = positionDepth.Key.DisplayName; pdModel.DepthName = positionDepth.Value.ToString(); pdModel.DepthValue = positionDepth.Value; positionDepths.Add(pdModel); } } weeklyModel.TeamSelf.PositionDepths = positionDepths; var rosterOpponent = this.Fantasizer.GetRosterPlayers(matchup.TeamKeyOpponent, matchup.Week); var depthAnalyzerOpponent = new RosterDepthAnalyzer(leagueSettings.RosterPositions, rosterOpponent.Players); weeklyModel.TeamOpponent = new WeeklyTeamRosterDepthModel(); weeklyModel.TeamOpponent.TeamName = rosterOpponent.Team.Name; weeklyModel.TeamOpponent.TeamKey = rosterOpponent.Team.Key; var positionDepthsOpponent = new List<PositionDepthModel>(); foreach (var positionDepth in depthAnalyzerOpponent.GetRosterDepth(matchup.Week)) { if ((int)positionDepth.Value < 3) { var pdModel = new PositionDepthModel(); pdModel.PositionName = positionDepth.Key.DisplayName; pdModel.DepthName = positionDepth.Value.ToString(); pdModel.DepthValue = positionDepth.Value; positionDepthsOpponent.Add(pdModel); } } weeklyModel.TeamOpponent.PositionDepths = positionDepthsOpponent; weeklyRosterDepthModels.Add(weeklyModel); } return View(weeklyRosterDepthModels); }
public void GetRosterDepth_MultiFlex() { var rosterPositions = new Dictionary<PositionAbbreviation, RosterPosition>(); rosterPositions.Add(PositionAbbreviation.QB, new RosterPosition(Position.Quarterback, 1)); rosterPositions.Add(PositionAbbreviation.RB, new RosterPosition(Position.RunningBack, 2)); rosterPositions.Add(PositionAbbreviation.WR, new RosterPosition(Position.WideReceiver, 2)); rosterPositions.Add(PositionAbbreviation.W_R, new RosterPosition(Position.WideReceiverRunningBack, 1)); rosterPositions.Add(PositionAbbreviation.W_T, new RosterPosition(Position.WideReceiverTightEnd, 1)); rosterPositions.Add(PositionAbbreviation.DEF, new RosterPosition(Position.Defense, 1)); rosterPositions.Add(PositionAbbreviation.K, new RosterPosition(Position.Kicker, 1)); rosterPositions.Add(PositionAbbreviation.BN, new RosterPosition(Position.Bench, 4)); var players = _testObjectFactory.CreatePlayers( Position.Quarterback, Position.Quarterback, Position.RunningBack, Position.RunningBack, Position.RunningBack, Position.WideReceiver, Position.WideReceiver, Position.WideReceiver, Position.Kicker, Position.Kicker, Position.Defense, Position.Defense, Position.Defense); var analyzer = new RosterDepthAnalyzer(rosterPositions, players); var results = analyzer.GetRosterDepth(); // In this case, the right thing to do is to fill the W/R spot with a RB so the WR can be used for W/T. Assert.AreEqual(PositionDepth.Deep, results[Position.Quarterback]); Assert.AreEqual(PositionDepth.Adequate, results[Position.RunningBack]); Assert.AreEqual(PositionDepth.Adequate, results[Position.WideReceiver]); Assert.AreEqual(PositionDepth.Adequate, results[Position.WideReceiverRunningBack]); Assert.AreEqual(PositionDepth.Adequate, results[Position.WideReceiverTightEnd]); Assert.AreEqual(PositionDepth.VeryDeep, results[Position.Defense]); Assert.AreEqual(PositionDepth.Deep, results[Position.Kicker]); }
public void GetRosterDepth_WithByeWeek() { var rosterPositions = _testObjectFactory.CreateDefaultRosterPositions(); var players = _testObjectFactory.CreatePlayers( Position.RunningBack, Position.RunningBack, Position.RunningBack, Position.RunningBack, Position.WideReceiver, Position.WideReceiver, Position.WideReceiver, Position.WideReceiver, Position.WideReceiver, Position.TightEnd, Position.TightEnd, Position.TightEnd, Position.Kicker, Position.Defense); players.Add(_testObjectFactory.CreatePlayer(Position.Quarterback, byeWeek: 6)); var analyzer = new RosterDepthAnalyzer(rosterPositions, players); var results = analyzer.GetRosterDepth(week: 6); // 1 QB spot required, 1 QB player on a bye week. QB position should be shallow. Assert.AreEqual(PositionDepth.Shallow, results[Position.Quarterback]); }
public void GetRosterDepth_NoBench() { var rosterPositions = _testObjectFactory.CreateDefaultRosterPositions(); var players = _testObjectFactory.CreatePlayers( Position.Quarterback, Position.RunningBack, Position.RunningBack, Position.WideReceiver, Position.WideReceiver, Position.WideReceiver, Position.Quarterback, Position.Quarterback, Position.Quarterback, Position.TightEnd, Position.TightEnd, Position.TightEnd, Position.TightEnd, Position.Kicker, Position.Defense); var analyzer = new RosterDepthAnalyzer(rosterPositions, players); var results = analyzer.GetRosterDepth(); // It doesn't make sense to analyze depth for BN spots Assert.IsFalse(results.ContainsKey(Position.Bench)); }
public void GetRosterDepth_MultiFlex_VaryingConstraint() { // Verify more constrained flex positions are considered first var rosterPositions = new Dictionary<PositionAbbreviation, RosterPosition>(); rosterPositions.Add(PositionAbbreviation.QB, new RosterPosition(Position.Quarterback, 1)); rosterPositions.Add(PositionAbbreviation.RB, new RosterPosition(Position.RunningBack, 2)); rosterPositions.Add(PositionAbbreviation.WR, new RosterPosition(Position.WideReceiver, 2)); rosterPositions.Add(PositionAbbreviation.W_R_T, new RosterPosition(Position.WideReceiverRunningBackTightEnd, 1)); rosterPositions.Add(PositionAbbreviation.W_R, new RosterPosition(Position.WideReceiverRunningBack, 1)); rosterPositions.Add(PositionAbbreviation.DEF, new RosterPosition(Position.Defense, 1)); rosterPositions.Add(PositionAbbreviation.K, new RosterPosition(Position.Kicker, 1)); rosterPositions.Add(PositionAbbreviation.BN, new RosterPosition(Position.Bench, 4)); var players = _testObjectFactory.CreatePlayers( Position.Quarterback, Position.Quarterback, Position.RunningBack, Position.RunningBack, Position.WideReceiver, Position.WideReceiver, Position.WideReceiver, Position.TightEnd, Position.TightEnd, Position.TightEnd, Position.Kicker, Position.Defense, Position.Defense); var analyzer = new RosterDepthAnalyzer(rosterPositions, players); var results = analyzer.GetRosterDepth(); Assert.AreEqual(PositionDepth.Deep, results[Position.Quarterback]); Assert.AreEqual(PositionDepth.Adequate, results[Position.RunningBack]); Assert.AreEqual(PositionDepth.Adequate, results[Position.WideReceiver]); Assert.AreEqual(PositionDepth.Adequate, results[Position.WideReceiverRunningBack]); Assert.AreEqual(PositionDepth.VeryDeep, results[Position.WideReceiverRunningBackTightEnd]); Assert.AreEqual(PositionDepth.Deep, results[Position.Defense]); Assert.AreEqual(PositionDepth.Adequate, results[Position.Kicker]); }