public void Removed_innings_is_identified_by_batting_position() { var playerOne = new PlayerIdentity { PlayerIdentityName = "Player one" }; var playerTwo = new PlayerIdentity { PlayerIdentityName = "Player two" }; var firstInningsBefore = new PlayerInnings { BattingPosition = 1, Batter = playerOne, DismissalType = DismissalType.NotOut, RunsScored = 0, BallsFaced = 10 }; var firstInningsAfter = new PlayerInnings { BattingPosition = 1, Batter = playerOne, DismissalType = DismissalType.NotOut, RunsScored = 0, BallsFaced = 10 }; var secondInningsBefore = new PlayerInnings { BattingPosition = 2, Batter = playerTwo, DismissalType = DismissalType.NotOut, RunsScored = 0, BallsFaced = 10 }; var comparer = new BattingScorecardComparer(); var result = comparer.CompareScorecards(new List <PlayerInnings> { firstInningsBefore, secondInningsBefore }, new List <PlayerInnings> { firstInningsAfter }); Assert.Single(result.PlayerInningsRemoved); Assert.Contains(secondInningsBefore, result.PlayerInningsRemoved); }
public void Affected_bowler_PlayerIdentity_is_identified() { var playerOne = new PlayerIdentity { PlayerIdentityName = "Player one" }; var playerTwo = new PlayerIdentity { PlayerIdentityName = "Player two" }; var playerThree = new PlayerIdentity { PlayerIdentityName = "Player three" }; var firstInningsBefore = new PlayerInnings { BattingPosition = 1, Batter = playerOne, Bowler = playerThree, DismissalType = DismissalType.Bowled, RunsScored = 0, BallsFaced = 10 }; var firstInningsAfter = new PlayerInnings { BattingPosition = 1, Batter = playerOne, Bowler = playerThree, DismissalType = DismissalType.Bowled, RunsScored = 0, BallsFaced = 12 }; var secondInningsBefore = new PlayerInnings { BattingPosition = 2, Batter = playerTwo, Bowler = playerThree, DismissalType = DismissalType.Bowled, RunsScored = 0, BallsFaced = 10 }; var secondInningsAfter = new PlayerInnings { BattingPosition = 2, Batter = playerTwo, Bowler = playerThree, DismissalType = DismissalType.Bowled, RunsScored = 0, BallsFaced = 10 }; var comparer = new BattingScorecardComparer(); var result = comparer.CompareScorecards(new List <PlayerInnings> { firstInningsBefore, secondInningsBefore }, new List <PlayerInnings> { firstInningsAfter, secondInningsAfter }); Assert.Single(result.BowlingPlayerIdentitiesAffected); Assert.Contains(playerThree.PlayerIdentityName, result.BowlingPlayerIdentitiesAffected); }
public void Changed_innings_is_identified_from_changed_BowlerU002EPlayerIdentityName_for_batting_position() { var playerOne = new PlayerIdentity { PlayerIdentityName = "Player one" }; var playerTwo = new PlayerIdentity { PlayerIdentityName = "Player two" }; var firstInningsBefore = new PlayerInnings { BattingPosition = 1, Batter = playerOne, Bowler = playerTwo, DismissalType = DismissalType.Bowled, RunsScored = 0, BallsFaced = 10 }; var firstInningsAfter = new PlayerInnings { BattingPosition = 1, Batter = playerOne, Bowler = playerTwo, DismissalType = DismissalType.Bowled, RunsScored = 0, BallsFaced = 10 }; var secondInningsBefore = new PlayerInnings { BattingPosition = 2, Batter = playerTwo, Bowler = new PlayerIdentity { PlayerIdentityName = "Before" }, DismissalType = DismissalType.NotOut, RunsScored = 0, BallsFaced = 10 }; var secondInningsAfter = new PlayerInnings { BattingPosition = 2, Batter = playerTwo, Bowler = new PlayerIdentity { PlayerIdentityName = "Changed" }, DismissalType = DismissalType.NotOut, RunsScored = 0, BallsFaced = 10 }; var comparer = new BattingScorecardComparer(); var result = comparer.CompareScorecards(new List <PlayerInnings> { firstInningsBefore, secondInningsBefore }, new List <PlayerInnings> { firstInningsAfter, secondInningsAfter }); Assert.Single(result.PlayerInningsChanged); Assert.Contains((secondInningsBefore, secondInningsAfter), result.PlayerInningsChanged); }
private static void AddPlayerInningsDataToRecord(PlayerInnings playerInnings, PlayerInMatchStatisticsRecord record) { record.PlayerInningsId = playerInnings?.PlayerInningsId; record.BattingPosition = playerInnings?.BattingPosition == 2 ? 1 : playerInnings?.BattingPosition; record.RunsScored = playerInnings?.RunsScored; record.BallsFaced = playerInnings?.BallsFaced; if (playerInnings != null && StatisticsConstants.DISMISSALS_CREDITED_TO_BOWLER.Contains(playerInnings.DismissalType)) { record.BowledByPlayerIdentityId = playerInnings.Bowler?.PlayerIdentityId; record.BowledByPlayerIdentityName = playerInnings.Bowler?.PlayerIdentityName; record.BowledByPlayerRoute = playerInnings.Bowler?.Player?.PlayerRoute; } if (playerInnings != null && playerInnings.DismissalType == DismissalType.Caught) { record.CaughtByPlayerIdentityId = playerInnings.DismissedBy?.PlayerIdentityId; record.CaughtByPlayerIdentityName = playerInnings.DismissedBy?.PlayerIdentityName; record.CaughtByPlayerRoute = playerInnings.DismissedBy?.Player?.PlayerRoute; } if (playerInnings != null && playerInnings.DismissalType == DismissalType.CaughtAndBowled) { record.CaughtByPlayerIdentityId = playerInnings.Bowler?.PlayerIdentityId; record.CaughtByPlayerIdentityName = playerInnings.Bowler?.PlayerIdentityName; record.CaughtByPlayerRoute = playerInnings.Bowler?.Player?.PlayerRoute; } if (playerInnings != null && playerInnings.DismissalType == DismissalType.RunOut) { record.RunOutByPlayerIdentityId = playerInnings.DismissedBy?.PlayerIdentityId; record.RunOutByPlayerIdentityName = playerInnings.DismissedBy?.PlayerIdentityName; record.RunOutByPlayerRoute = playerInnings.DismissedBy?.Player?.PlayerRoute; } }
public void Batting_position_zero_in_after_innings_throws_ArgumentException() { var comparer = new BattingScorecardComparer(); var firstInnings = new PlayerInnings { BattingPosition = 0, Batter = new PlayerIdentity { PlayerIdentityName = "Player one" }, DismissalType = DismissalType.NotOut, RunsScored = 10, BallsFaced = 10 }; Assert.Throws <ArgumentException>(() => comparer.CompareScorecards(new List <PlayerInnings>(), new List <PlayerInnings> { firstInnings })); }
public void Unchanged_innings_is_identified_by_batting_position_and_all_fields() { var firstInningsBefore = new PlayerInnings { BattingPosition = 1, Batter = new PlayerIdentity { PlayerIdentityName = "Player one" }, DismissedBy = new PlayerIdentity { PlayerIdentityName = "Player three" }, Bowler = new PlayerIdentity { PlayerIdentityName = "Player four" }, DismissalType = DismissalType.Caught, RunsScored = 0, BallsFaced = 10 }; var firstInningsAfter = new PlayerInnings { BattingPosition = 1, Batter = new PlayerIdentity { PlayerIdentityName = "Player one" }, DismissedBy = new PlayerIdentity { PlayerIdentityName = "Player three" }, Bowler = new PlayerIdentity { PlayerIdentityName = "Player four" }, DismissalType = DismissalType.Caught, RunsScored = 0, BallsFaced = 10 }; var secondInningsBefore = new PlayerInnings { BattingPosition = 2, Batter = new PlayerIdentity { PlayerIdentityName = "Player two" }, DismissedBy = new PlayerIdentity { PlayerIdentityName = "Player three" }, Bowler = new PlayerIdentity { PlayerIdentityName = "Player four" }, DismissalType = DismissalType.Caught, RunsScored = 0, BallsFaced = 10 }; var secondInningsAfter = new PlayerInnings { BattingPosition = 2, Batter = new PlayerIdentity { PlayerIdentityName = "Player two" }, DismissedBy = new PlayerIdentity { PlayerIdentityName = "Player three" }, Bowler = new PlayerIdentity { PlayerIdentityName = "Player four" }, DismissalType = DismissalType.Caught, RunsScored = 0, BallsFaced = 10 }; var comparer = new BattingScorecardComparer(); var result = comparer.CompareScorecards(new List <PlayerInnings> { firstInningsBefore, secondInningsBefore }, new List <PlayerInnings> { firstInningsAfter, secondInningsAfter }); Assert.Equal(2, result.PlayerInningsUnchanged.Count); }
public void Duplicate_batting_position_in_before_innings_throws_ArgumentException() { var comparer = new BattingScorecardComparer(); var firstInnings = new PlayerInnings { BattingPosition = 1, Batter = new PlayerIdentity { PlayerIdentityName = "Player one" }, DismissalType = DismissalType.NotOut, RunsScored = 0, BallsFaced = 10 }; var firstInningsDuplicate = new PlayerInnings { BattingPosition = 1, Batter = new PlayerIdentity { PlayerIdentityName = "Player two" }, DismissalType = DismissalType.NotOut, RunsScored = 2, BallsFaced = 12 }; Assert.Throws <ArgumentException>(() => comparer.CompareScorecards(new List <PlayerInnings> { firstInnings, firstInningsDuplicate }, new List <PlayerInnings>())); }
public void Added_innings_is_identified_by_batting_position() { var firstInnings = new PlayerInnings { BattingPosition = 1, Batter = new PlayerIdentity { PlayerIdentityName = "Player one" }, DismissalType = DismissalType.NotOut, RunsScored = 0, BallsFaced = 10 }; var secondInnings = new PlayerInnings { BattingPosition = 2, Batter = new PlayerIdentity { PlayerIdentityName = "Player one" }, DismissalType = DismissalType.NotOut, RunsScored = 0, BallsFaced = 10 }; var comparer = new BattingScorecardComparer(); var result = comparer.CompareScorecards(new List <PlayerInnings> { firstInnings }, new List <PlayerInnings> { firstInnings, secondInnings }); Assert.Single(result.PlayerInningsAdded); Assert.Contains(secondInnings, result.PlayerInningsAdded); }