use jiff::{civil, tz::TimeZone};
use rust_zmanim::prelude::*;
fn main() {
let date = civil::date(2025, 7, 29);
let beit_meir = GeoLocation {
latitude: 31.7975,
longitude: 35.0345,
elevation: 526.0,
timezone: TimeZone::get("Asia/Jerusalem").unwrap(),
};
if let Some(sunrise) = zmanim_calculator::hanetz(&date, &beit_meir, false) {
assert_eq!(
sunrise.strftime("%Y-%m-%d %H:%M:%S.%f %Z").to_string(),
"2025-07-29 05:53:39.574572512 IDT"
);
}
if let Some(tzeis_degrees) =
zmanim_calculator::tzeis(&date, &beit_meir, false, &ZmanOffset::Degrees(6.13))
{
assert_eq!(
tzeis_degrees
.strftime("%Y-%m-%d %H:%M:%S.%f %Z")
.to_string(),
"2025-07-29 20:06:02.501735285 IDT"
);
}
let czc = ComplexZmanimCalendar {
geo_location: beit_meir,
date,
use_elevation: UseElevation::No,
};
if let Some(alos120) = czc.alos_120_minutes() {
assert_eq!(
alos120.strftime("%Y-%m-%d %H:%M:%S.%f %Z").to_string(),
"2025-07-29 03:53:39.574572512 IDT"
);
}
if let Some(sz18) = czc.shaah_zmanis_mga_18_degrees() {
assert_eq!(sz18.as_nanos(), 5_054_106_060_472);
}
let north_pole = GeoLocation {
latitude: 90.0,
longitude: 0.0,
elevation: 0.0,
timezone: TimeZone::UTC,
};
let polar_sunset = zmanim_calculator::shkia(&date, &north_pole, false);
assert!(polar_sunset.is_none());
}