impl Default for Game

This commit is contained in:
Cutieguwu
2025-05-03 12:04:21 -04:00
parent 5d17a2b5b6
commit fa183cbe91
3 changed files with 24 additions and 23 deletions

View File

@@ -183,8 +183,6 @@ mod tests {
#[test] #[test]
fn most_frequent_action() { fn most_frequent_action() {
let a = LogFile(vec![Game { let a = LogFile(vec![Game {
version: crate::MIN_VER,
flags: vec![],
events: vec![ events: vec![
Event::Kickoff(Team::Nebraska), Event::Kickoff(Team::Nebraska),
Event::Play(Play { Event::Play(Play {
@@ -213,6 +211,7 @@ mod tests {
}), }),
Event::Kickoff(Team::ArizonaState), Event::Kickoff(Team::ArizonaState),
], ],
..Default::default()
}]); }]);
assert!(a.most_frequent_action(Team::Nebraska) == Action::Mesh) assert!(a.most_frequent_action(Team::Nebraska) == Action::Mesh)
@@ -221,8 +220,6 @@ mod tests {
#[test] #[test]
fn least_frequent_action() { fn least_frequent_action() {
let a = LogFile(vec![Game { let a = LogFile(vec![Game {
version: crate::MIN_VER,
flags: vec![],
events: vec![ events: vec![
Event::Kickoff(Team::Nebraska), Event::Kickoff(Team::Nebraska),
Event::Play(Play { Event::Play(Play {
@@ -251,6 +248,7 @@ mod tests {
}), }),
Event::Kickoff(Team::ArizonaState), Event::Kickoff(Team::ArizonaState),
], ],
..Default::default()
}]); }]);
assert!(a.least_frequent_action(Team::Nebraska) == Action::SlotOut) assert!(a.least_frequent_action(Team::Nebraska) == Action::SlotOut)

View File

@@ -1,4 +1,4 @@
use crate::{Event, Play, Quarter, Team, error}; use crate::{Event, MIN_VER, Play, Quarter, Team, error};
use serde::Deserialize; use serde::Deserialize;
use strum::IntoEnumIterator; use strum::IntoEnumIterator;
@@ -242,6 +242,16 @@ impl Game {
} }
} }
impl Default for Game {
fn default() -> Self {
Game {
version: MIN_VER,
flags: vec![],
events: vec![Event::Quarter(Quarter::default())],
}
}
}
#[derive(Debug)] #[derive(Debug)]
pub struct TeamEvents(pub Vec<Event>); pub struct TeamEvents(pub Vec<Event>);
@@ -333,8 +343,6 @@ mod tests {
#[test] #[test]
fn avg_plays_per_quarter() { fn avg_plays_per_quarter() {
let a = Game { let a = Game {
version: crate::MIN_VER,
flags: vec![],
events: vec![ events: vec![
Event::Quarter(Quarter::First), Event::Quarter(Quarter::First),
Event::Kickoff(Team::Nebraska), Event::Kickoff(Team::Nebraska),
@@ -350,17 +358,17 @@ mod tests {
Event::Play(Play::default()), Event::Play(Play::default()),
Event::Turnover(Team::ArizonaState), Event::Turnover(Team::ArizonaState),
], ],
..Default::default()
}; };
let b = Game { let b = Game {
version: crate::MIN_VER,
flags: vec![],
events: vec![ events: vec![
Event::Quarter(Quarter::First), Event::Quarter(Quarter::First),
Event::Turnover(Team::Nebraska), Event::Turnover(Team::Nebraska),
Event::Play(Play::default()), Event::Play(Play::default()),
Event::Turnover(Team::ArizonaState), Event::Turnover(Team::ArizonaState),
], ],
..Default::default()
}; };
dbg!(a.avg_plays_per_quarter(Team::Nebraska)); dbg!(a.avg_plays_per_quarter(Team::Nebraska));
@@ -374,39 +382,36 @@ mod tests {
#[allow(deprecated)] #[allow(deprecated)]
fn teams() { fn teams() {
let a = Game { let a = Game {
version: crate::MIN_VER,
flags: vec![],
events: vec![ events: vec![
Event::Kickoff(Team::Nebraska), Event::Kickoff(Team::Nebraska),
Event::Turnover(Team::ArizonaState), Event::Turnover(Team::ArizonaState),
Event::Kickoff(Team::Nebraska), Event::Kickoff(Team::Nebraska),
], ],
..Default::default()
}; };
let b = Game { let b = Game {
version: crate::MIN_VER,
flags: vec![],
events: vec![ events: vec![
Event::Kickoff(Team::Nebraska), Event::Kickoff(Team::Nebraska),
Event::Turnover(Team::ArizonaState), Event::Turnover(Team::ArizonaState),
Event::Kickoff(Team::BoiseState), Event::Kickoff(Team::BoiseState),
], ],
..Default::default()
}; };
let c = Game { let c = Game {
version: crate::MIN_VER,
flags: vec![Flags::IgnoreTeam(Team::Nebraska)],
events: vec![ events: vec![
Event::Kickoff(Team::Nebraska), Event::Kickoff(Team::Nebraska),
Event::Turnover(Team::ArizonaState), Event::Turnover(Team::ArizonaState),
Event::Kickoff(Team::Nebraska), Event::Kickoff(Team::Nebraska),
], ],
..Default::default()
}; };
let d = Game { let d = Game {
version: crate::MIN_VER,
flags: vec![Flags::IgnoreTeam(Team::Nebraska)], flags: vec![Flags::IgnoreTeam(Team::Nebraska)],
events: vec![Event::Kickoff(Team::Nebraska)], events: vec![Event::Kickoff(Team::Nebraska)],
..Default::default()
}; };
assert!(a.teams().unwrap() == vec![Team::Nebraska, Team::ArizonaState]); assert!(a.teams().unwrap() == vec![Team::Nebraska, Team::ArizonaState]);
@@ -418,8 +423,6 @@ mod tests {
#[test] #[test]
fn deltas() { fn deltas() {
let game = Game { let game = Game {
version: crate::MIN_VER,
flags: vec![],
events: vec![ events: vec![
Event::Kickoff(Team::Nebraska), Event::Kickoff(Team::Nebraska),
Event::Play(Play { Event::Play(Play {
@@ -461,6 +464,7 @@ mod tests {
}), }),
Event::Turnover(Team::ArizonaState), Event::Turnover(Team::ArizonaState),
], ],
..Default::default()
}; };
assert!(game.deltas(Team::Nebraska) == vec![10_i8, -3_i8, 5_i8, -2_i8, 12_i8]); assert!(game.deltas(Team::Nebraska) == vec![10_i8, -3_i8, 5_i8, -2_i8, 12_i8]);
@@ -471,8 +475,6 @@ mod tests {
#[allow(deprecated)] #[allow(deprecated)]
fn team_events() { fn team_events() {
let a = Game { let a = Game {
version: crate::MIN_VER,
flags: vec![],
events: vec![ events: vec![
Event::Kickoff(Team::Nebraska), Event::Kickoff(Team::Nebraska),
Event::Play(Play::default()), Event::Play(Play::default()),
@@ -483,6 +485,7 @@ mod tests {
Event::Score(ScorePoints::Touchdown), Event::Score(ScorePoints::Touchdown),
Event::Kickoff(Team::SouthCarolina), Event::Kickoff(Team::SouthCarolina),
], ],
..Default::default()
}; };
assert!( assert!(
@@ -502,8 +505,6 @@ mod tests {
#[test] #[test]
fn team_plays() { fn team_plays() {
let game = Game { let game = Game {
version: crate::MIN_VER,
flags: vec![],
events: vec![ events: vec![
Event::Kickoff(Team::Nebraska), Event::Kickoff(Team::Nebraska),
Event::Play(Play::default()), Event::Play(Play::default()),
@@ -518,6 +519,7 @@ mod tests {
Event::Turnover(Team::Nebraska), Event::Turnover(Team::Nebraska),
Event::Play(Play::default()), Event::Play(Play::default()),
], ],
..Default::default()
}; };
assert!( assert!(

View File

@@ -1,8 +1,9 @@
use serde::Deserialize; use serde::Deserialize;
use strum::EnumIter; use strum::EnumIter;
#[derive(Debug, Deserialize, Clone, PartialEq, EnumIter)] #[derive(Debug, Deserialize, Clone, PartialEq, EnumIter, Default)]
pub enum Quarter { pub enum Quarter {
#[default]
First, First,
Second, Second,
Third, Third,