use super::ReDateTime;
use chrono::{Duration, Local, Datelike, TimeZone};
use chrono::naive::MAX_DATE;
#[test]
fn init() {
let now = Local::now();
let dt = ReDateTime::at(&now);
assert_eq!(dt.at, now);
assert_eq!(dt.repeat, Duration::zero());
assert_eq!(dt.until, max_datetime!());
}
#[test]
fn simple_repeat() {
let now = Local::now();
let wkday = now.weekday();
let dt = ReDateTime::repeat_until(now, Duration::weeks(1), now + Duration::days(98));
let mut c = 0;
for n in dt.iter() {
assert_eq!(n.weekday(), wkday, "wanted {:?}, got {:?}", wkday, n.weekday());
c += 1;
}
assert_eq!(c, 14);
}
#[test]
fn negative_repeat() {
let now = Local::now();
let wkday = now.weekday();
let dt = ReDateTime::repeat_until(now, Duration::weeks(-1), now + Duration::days(-98));
let mut c = 0;
for n in dt.iter() {
assert_eq!(n.weekday(), wkday, "wanted {:?}, got {:?}", wkday, n.weekday());
c += 1;
}
assert_eq!(c, 14);
}