mod test_helper;
use jiff::civil;
use rust_zmanim::astronomical_calculator;
use std::iter::zip;
#[test]
fn test_sunrise() {
let locations = test_helper::more_locations();
let expected_datetime_strs = [
"2017-10-17 07:09:11.774 EDT",
"2017-10-17 06:39:32.181 IDT",
"2017-10-17 07:00:25.493 PDT",
"2017-10-17 05:48:20.524 JST",
"None",
"2017-10-17 06:54:18.384 +14",
"2017-10-17 05:33:07.500 +12",
"2017-10-17 07:28:06.993 HDT",
"2017-10-17 05:46:39.827 -11",
];
for (loc, edt) in zip(locations, expected_datetime_strs) {
let date = civil::date(2017, 10, 17);
let result = match astronomical_calculator::sunrise(&date, &loc) {
Some(dt) => dt.strftime("%Y-%m-%d %H:%M:%S.%3f %Z").to_string(),
None => String::from("None"),
};
assert_eq!(result, edt)
}
}
#[test]
fn test_sea_level_sunrise() {
let locations = test_helper::more_locations();
let expected_datetime_strs = [
"2017-10-17 07:09:51.650 EDT",
"2017-10-17 06:43:43.041 IDT",
"2017-10-17 07:01:45.354 PDT",
"2017-10-17 05:49:21.664 JST",
"None",
"2017-10-17 07:00:05.702 +14",
"2017-10-17 05:38:06.416 +12",
"2017-10-17 07:28:33.601 HDT",
"2017-10-17 05:47:51.637 -11",
];
for (loc, edt) in zip(locations, expected_datetime_strs) {
let date = civil::date(2017, 10, 17);
let result = match astronomical_calculator::sea_level_sunrise(&date, &loc) {
Some(dt) => dt.strftime("%Y-%m-%d %H:%M:%S.%3f %Z").to_string(),
None => String::from("None"),
};
assert_eq!(result, edt)
}
}
#[test]
fn test_sunset() {
let locations = test_helper::more_locations();
let expected_datetime_strs = [
"2017-10-17 18:14:38.792 EDT",
"2017-10-17 18:08:46.872 IDT",
"2017-10-17 18:19:05.519 PDT",
"2017-10-17 17:04:46.663 JST",
"None",
"2017-10-17 19:31:07.447 +14",
"2017-10-17 18:13:47.545 +12",
"2017-10-17 19:05:44.828 HDT",
"2017-10-17 18:22:53.118 -11",
];
for (loc, edt) in zip(locations, expected_datetime_strs) {
let date = civil::date(2017, 10, 17);
let result = match astronomical_calculator::sunset(&date, &loc) {
Some(dt) => dt.strftime("%Y-%m-%d %H:%M:%S.%3f %Z").to_string(),
None => String::from("None"),
};
assert_eq!(result, edt)
}
}
#[test]
fn test_sea_level_sunset() {
let locations = test_helper::more_locations();
let expected_datetime_strs = [
"2017-10-17 18:13:58.954 EDT",
"2017-10-17 18:04:36.171 IDT",
"2017-10-17 18:17:45.714 PDT",
"2017-10-17 17:03:45.571 JST",
"None",
"2017-10-17 19:25:19.737 +14",
"2017-10-17 18:08:48.238 +12",
"2017-10-17 19:05:18.226 HDT",
"2017-10-17 18:21:41.208 -11",
];
for (loc, edt) in zip(locations, expected_datetime_strs) {
let date = civil::date(2017, 10, 17);
let result = match astronomical_calculator::sea_level_sunset(&date, &loc) {
Some(dt) => dt.strftime("%Y-%m-%d %H:%M:%S.%3f %Z").to_string(),
None => String::from("None"),
};
assert_eq!(result, edt)
}
}
#[test]
fn test_solar_noon() {
let locations = test_helper::more_locations();
let expected_datetime_strs = [
"2017-10-17 12:42:18.881 EDT",
"2017-10-17 12:24:28.945 IDT",
"2017-10-17 12:40:05.813 PDT",
"2017-10-17 11:26:55.034 JST",
"2017-10-17 12:04:32.300 EDT",
"2017-10-17 13:12:43.198 +14",
"2017-10-17 11:53:26.075 +12",
"2017-10-17 13:17:10.419 HDT",
"2017-10-17 12:04:44.224 -11",
];
for (loc, edt) in zip(locations, expected_datetime_strs) {
let date = civil::date(2017, 10, 17);
let result = match astronomical_calculator::solar_noon(&date, &loc) {
Some(dt) => dt.strftime("%Y-%m-%d %H:%M:%S.%3f %Z").to_string(),
None => String::from("None"),
};
assert_eq!(result, edt)
}
}
#[test]
fn test_solar_midnight() {
let locations = test_helper::more_locations();
let expected_datetime_strs = [
"2017-10-18 00:42:12.782 EDT",
"2017-10-18 00:24:22.754 IDT",
"2017-10-18 00:39:59.751 PDT",
"2017-10-17 23:26:48.756 JST",
"2017-10-18 00:04:26.193 EDT",
"2017-10-18 01:12:36.881 +14",
"2017-10-17 23:53:19.766 +12",
"2017-10-18 01:17:04.390 HDT",
"2017-10-18 00:04:38.205 -11",
];
for (loc, edt) in zip(locations, expected_datetime_strs) {
let date = civil::date(2017, 10, 17);
let result = match astronomical_calculator::solar_midnight(&date, &loc) {
Some(dt) => dt.strftime("%Y-%m-%d %H:%M:%S.%3f %Z").to_string(),
None => String::from("None"),
};
assert_eq!(result, edt)
}
}