use crate::{error::Result, fantasy::price::Season, id::SeasonID};
#[cfg(doc)]
use crate::error::Error;
pub fn get_season_prices(season: SeasonID) -> Result<Season> {
serde_yaml::from_str(&std::fs::read_to_string(format!("./src/fantasy/data/prices/{season}.yaml"))?).map_err(into)
}
fn into<T: Into<U>, U>(t: T) -> U {
t.into()
}
#[cfg(test)]
mod tests {
use crate::tests::asserts::*;
use shadow_asserts::assert_eq;
#[test]
fn get_season_prices() {
let season_prices_2023 = super::get_season_prices(2023).unwrap();
assert_ge!(season_prices_2023.rounds.len(), 13);
for (idx, round) in season_prices_2023.rounds.iter().enumerate() {
assert_eq!(round.round, idx as u32 + 1);
assert_eq!(round.drivers.len(), 20);
assert_eq!(round.constructors.len(), 10);
for driver in &round.drivers {
assert_gt!(driver.price, 0.0);
}
for constructor in &round.constructors {
assert_gt!(constructor.price, 0.0);
}
}
}
#[test]
fn get_season_prices_err() {
assert_true!(super::get_season_prices(1949).is_err());
}
}