use jiff::civil::Weekday;
use crate::time::today;
#[derive(Debug, Copy, Clone, PartialEq)]
pub enum Prayer {
Fajr,
Sherook,
Dohr,
Asr,
Maghreb,
Ishaa,
FajrTomorrow,
}
impl Prayer {
pub fn name(self) -> String {
let prayer_name = match self {
Self::Fajr | Prayer::FajrTomorrow => "Fajr",
Self::Sherook => "Sherook",
Self::Dohr => {
if today().weekday() == Weekday::Friday {
"Jumua"
} else {
"Dohr"
}
}
Self::Asr => "Asr",
Self::Maghreb => "Maghreb",
Self::Ishaa => "Ishaa",
};
prayer_name.to_string()
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn prayer_name() -> Result<(), crate::Error> {
assert_eq!(Prayer::Fajr.name(), "Fajr");
assert_eq!(Prayer::Sherook.name(), "Sherook");
if today().weekday() == Weekday::Friday {
assert_eq!(Prayer::Dohr.name(), "Jumua");
} else {
assert_eq!(Prayer::Dohr.name(), "Dohr");
}
assert_eq!(Prayer::Asr.name(), "Asr");
assert_eq!(Prayer::Maghreb.name(), "Maghreb");
assert_eq!(Prayer::Ishaa.name(), "Ishaa");
Ok(())
}
}