Update team_events and unit test.

This commit is contained in:
Cutieguwu
2025-04-29 17:05:01 -04:00
parent 0a82be4c0b
commit 21f9c530cc

View File

@@ -45,6 +45,7 @@ impl Game {
pub fn deltas(&self, team: Team) -> Vec<i8> { pub fn deltas(&self, team: Team) -> Vec<i8> {
let events: Vec<Event> = self let events: Vec<Event> = self
.team_events(team) .team_events(team)
.unwrap_or(TeamEvents(vec![]))
.0 .0
.iter() .iter()
.filter_map(|event| { .filter_map(|event| {
@@ -74,6 +75,7 @@ impl Game {
pub fn team_plays(&self, team: Team) -> TeamPlays { pub fn team_plays(&self, team: Team) -> TeamPlays {
TeamPlays( TeamPlays(
self.team_events(team) self.team_events(team)
.unwrap_or(TeamEvents(vec![]))
.0 .0
.iter() .iter()
.filter_map(|event| { .filter_map(|event| {
@@ -154,6 +156,7 @@ impl Game {
/// Returns the number of penalties that a team experienced. /// Returns the number of penalties that a team experienced.
pub fn penalties(&self, team: Team) -> usize { pub fn penalties(&self, team: Team) -> usize {
self.team_events(team) self.team_events(team)
.unwrap_or(TeamEvents(vec![]))
.0 .0
.iter() .iter()
.filter_map(|event| { .filter_map(|event| {
@@ -200,7 +203,11 @@ impl Game {
} }
/// Returns all events relevent to a team's deltas and score. /// Returns all events relevent to a team's deltas and score.
pub fn team_events(&self, team: Team) -> TeamEvents { pub fn team_events(&self, team: Team) -> Option<TeamEvents> {
if !self.teams().is_ok_and(|ok| ok.contains(&team)) {
return None;
}
let mut events: Vec<Event> = vec![]; let mut events: Vec<Event> = vec![];
let mut first = true; let mut first = true;
let mut record: bool = true; let mut record: bool = true;
@@ -231,7 +238,7 @@ impl Game {
}); });
// If already handled or assumption override applicable // If already handled or assumption override applicable
TeamEvents(events) Some(TeamEvents(events))
} }
} }
@@ -458,73 +465,37 @@ mod tests {
assert!(game.deltas(Team::ArizonaState) == vec![10_i8, 0_i8]); assert!(game.deltas(Team::ArizonaState) == vec![10_i8, 0_i8]);
} }
/*
#[test] #[test]
#[allow(deprecated)]
fn team_events() { fn team_events() {
let a = Period { let a = Game {
start: Quarter::First, version: crate::MIN_VER,
end: None, flags: vec![],
events: vec![ events: vec![
Event::Kickoff(Team::Nebraska), Event::Kickoff(Team::Nebraska),
Event::Play(Play::default()),
Event::Turnover(Team::ArizonaState),
Event::Play(Play::default()),
Event::Play(Play::default()),
Event::Kickoff(Team::Nebraska),
Event::Score(ScorePoints::Touchdown),
Event::Kickoff(Team::SouthCarolina),
],
};
let b = Period {
start: Quarter::Second,
end: None,
events: vec![
Event::Play(Play::default()), Event::Play(Play::default()),
Event::Turnover(Team::SouthCarolina), Event::Turnover(Team::SouthCarolina),
],
};
let c = Period {
start: Quarter::Second,
end: None,
events: vec![
Event::Play(Play::default()), Event::Play(Play::default()),
Event::Turnover(Team::Nebraska), Event::Play(Play::default()),
Event::Kickoff(Team::Nebraska),
Event::Score(ScorePoints::Touchdown),
Event::Kickoff(Team::SouthCarolina),
], ],
}; };
let d = Period {
start: Quarter::Second,
end: None,
events: vec![Event::Play(Play::default())],
};
assert!( assert!(
a.team_events(Team::Nebraska, None).unwrap() a.team_events(Team::Nebraska).unwrap().0
== vec![ == vec![
Event::Kickoff(Team::Nebraska), Event::Kickoff(Team::Nebraska),
Event::Play(Play::default()), Event::Play(Play::default()),
Event::Turnover(Team::ArizonaState), Event::Turnover(Team::SouthCarolina),
Event::Kickoff(Team::Nebraska), Event::Kickoff(Team::Nebraska),
Event::Score(ScorePoints::Touchdown), Event::Score(ScorePoints::Touchdown),
Event::Kickoff(Team::SouthCarolina), Event::Kickoff(Team::SouthCarolina),
] ]
); );
assert!( assert!(a.team_events(Team::BoiseState).is_none());
b.team_events(Team::Nebraska, None).unwrap()
== vec![
Event::Play(Play::default()),
Event::Turnover(Team::SouthCarolina)
]
);
assert!(
c.team_events(Team::Nebraska, None).unwrap() == vec![Event::Turnover(Team::Nebraska)]
);
assert!(true == d.team_events(Team::Nebraska, None).is_err());
assert!(false == d.team_events(Team::Nebraska, Some(true)).is_err())
} }
*/
#[test] #[test]
fn team_plays() { fn team_plays() {