use super::UiState;
const CEILING: &str = "ceiling";
impl UiState {
pub fn ceiling(&self) -> crate::spend::Ceiling {
crate::spend::Ceiling::from_json(self.world.root.get(CEILING))
}
}
#[cfg(test)]
mod tests {
use crate::spend::Ceiling;
use crate::ui_state::UiState;
use tempfile::tempdir;
fn opened(doc: &str) -> UiState {
let dir = tempdir().unwrap();
let path = dir.path().join("ui.json");
std::fs::write(&path, doc).unwrap();
UiState::open(path)
}
#[test]
fn absent_key_is_no_ceiling() {
assert_eq!(opened(r#"{"v":1}"#).ceiling(), Ceiling::default());
}
#[test]
fn wrong_shape_is_no_ceiling() {
assert_eq!(
opened(r#"{"v":1,"ceiling":"ten"}"#).ceiling(),
Ceiling::default()
);
}
#[test]
fn a_number_is_the_ceiling() {
assert_ne!(
opened(r#"{"v":1,"ceiling":12.5}"#).ceiling(),
Ceiling::default()
);
}
}