Fix avg_plays_per_quarter calculations.
This commit is contained in:
@@ -90,7 +90,8 @@ impl Game {
|
|||||||
/// The average number of plays in a quarter.
|
/// The average number of plays in a quarter.
|
||||||
pub fn avg_plays_per_quarter(&self, team: Team) -> f32 {
|
pub fn avg_plays_per_quarter(&self, team: Team) -> f32 {
|
||||||
let periods: Vec<Period> = Quarter::iter()
|
let periods: Vec<Period> = Quarter::iter()
|
||||||
.filter_map(|quarter| Some(self.get_period(quarter.to_owned())).to_owned())
|
.filter_map(|quarter| self.get_period(quarter.to_owned()))
|
||||||
|
.to_owned()
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let quarterly_avgs: Vec<f32> = periods
|
let quarterly_avgs: Vec<f32> = periods
|
||||||
@@ -167,10 +168,12 @@ impl Game {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Returns the requested quarter.
|
/// Returns the requested quarter.
|
||||||
pub fn get_period(&self, quarter: Quarter) -> Period {
|
/// If there is no history logged for the requested quarter, returns `None`.
|
||||||
|
/// For example, if requesting an OT that doesn't exist.
|
||||||
|
pub fn get_period(&self, quarter: Quarter) -> Option<Period> {
|
||||||
let mut record = false;
|
let mut record = false;
|
||||||
|
|
||||||
Period {
|
let period = Period {
|
||||||
period: quarter.to_owned(),
|
period: quarter.to_owned(),
|
||||||
events: self
|
events: self
|
||||||
.events
|
.events
|
||||||
@@ -187,6 +190,12 @@ impl Game {
|
|||||||
None
|
None
|
||||||
})
|
})
|
||||||
.collect::<Vec<Event>>(),
|
.collect::<Vec<Event>>(),
|
||||||
|
};
|
||||||
|
|
||||||
|
if period.events.len() != 0 {
|
||||||
|
Some(period)
|
||||||
|
} else {
|
||||||
|
None
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -308,7 +317,6 @@ pub enum Flags {
|
|||||||
SheerDumbFuckingLuck,
|
SheerDumbFuckingLuck,
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use crate::*;
|
use crate::*;
|
||||||
@@ -338,21 +346,22 @@ mod tests {
|
|||||||
let b = Game {
|
let b = Game {
|
||||||
version: crate::MIN_VER,
|
version: crate::MIN_VER,
|
||||||
flags: vec![],
|
flags: vec![],
|
||||||
periods: vec![Period {
|
events: vec![
|
||||||
start: Quarter::Second,
|
Event::Quarter(Quarter::First),
|
||||||
end: Some(Quarter::Fourth),
|
Event::Turnover(Team::Nebraska),
|
||||||
events: vec![
|
Event::Play(Play::default()),
|
||||||
Event::Turnover(Team::Nebraska),
|
Event::Turnover(Team::ArizonaState),
|
||||||
Event::Play(Play::default()),
|
],
|
||||||
Event::Turnover(Team::ArizonaState),
|
|
||||||
],
|
|
||||||
}],
|
|
||||||
};
|
};
|
||||||
|
|
||||||
assert!(a.avg_plays_per_quarter(Team::Nebraska) == ((1_f32 + 2_f32) / 2_f32));
|
dbg!(a.avg_plays_per_quarter(Team::Nebraska));
|
||||||
assert!(b.avg_plays_per_quarter(Team::Nebraska) == (1_f32 / 3_f32))
|
dbg!(b.avg_plays_per_quarter(Team::Nebraska));
|
||||||
|
|
||||||
|
assert!(a.avg_plays_per_quarter(Team::Nebraska) == ((1_f32 + 6_f32) / 2_f32));
|
||||||
|
assert!(b.avg_plays_per_quarter(Team::Nebraska) == 1_f32)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
#[test]
|
#[test]
|
||||||
fn team_plays() {
|
fn team_plays() {
|
||||||
let a = Game {
|
let a = Game {
|
||||||
@@ -674,5 +683,5 @@ mod tests {
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|||||||
Reference in New Issue
Block a user