pub mod api;
pub mod datetime64;
pub mod timedelta64;
pub mod timezone;
pub mod units;
pub use units::{parse_unit_string, DateTimeUnit, DateUnit};
pub use datetime64::{
date_from_days_since_epoch, days_in_month, days_since_epoch, days_to_date, is_leap_year,
DateTime64,
};
pub use timedelta64::TimeDelta64;
pub use timezone::{business_days, Timezone, TimezoneDateTime};
pub use api::{
array_ops, datetime64, datetime_array, datetime_as_string, datetime_data, timedelta64,
};
#[cfg(test)]
mod integration_tests {
use super::*;
#[test]
fn test_module_reexports() {
let _dt = DateTime64::new(0, DateTimeUnit::Second);
let _td = TimeDelta64::new(1, DateTimeUnit::Day);
let _tz = Timezone::utc();
}
#[test]
fn test_api_functions() {
let dt = datetime64("2023-01-01", Some("D")).expect("should parse");
let td = timedelta64(5, "D").expect("should create");
let _s = datetime_as_string(&dt, None, None).expect("should convert");
let (_unit, _count) = datetime_data(&dt);
let dt2 = dt + td;
assert!(dt2.value() > dt.value());
}
#[test]
fn test_timezone_accessible() {
let utc_dt = DateTime64::from_iso_string("2023-01-01T12:00:00", DateTimeUnit::Second)
.expect("should parse");
let tz_dt = TimezoneDateTime::new(utc_dt, Timezone::jst());
assert_eq!(tz_dt.timezone.name, "JST");
}
#[test]
fn test_business_days_accessible() {
let dt =
DateTime64::from_iso_string("2023-01-02", DateTimeUnit::Day).expect("should parse");
let is_busday = business_days::is_busday(&dt).expect("should check");
assert!(is_busday);
}
}