use recurring_event::{DailyEvent, MonthlyEvent, Ordinal, Recurrent, Periodicity, MonthlyWeekdayOrdinal, WeeklyEvent, YearlyEvent, error::Error, time::{Month, Weekday, macros::datetime}};
#[test]
fn daily_current_date_get() {
let expected = datetime!(2022-08-12 00:00 UTC);
let event = DailyEvent::new(expected);
let actual = event.current_date();
assert_eq!(expected, *actual, "actual: {}", *actual);
}
#[test]
fn daily_frequency_get() {
let expected = 1;
let date = datetime!(2022-08-12 00:00 UTC);
let event = DailyEvent::new(date);
let actual = event.frequency();
assert_eq!(expected, actual, "actual: {}", actual);
}
#[test]
fn daily_frequency_update() {
let expected = 7;
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = DailyEvent::new(date);
event.update_frequency(7);
let actual = event.frequency();
assert_eq!(expected, actual, "actual: {}", actual);
}
#[test]
fn daily_periodicity_get() {
let expected = Periodicity::Daily;
let date = datetime!(2022-08-12 00:00 UTC);
let event = DailyEvent::new(date);
let actual = event.periodicity();
assert_eq!(expected, *actual, "actual: {:?}", *actual);
}
#[test]
fn weekly_current_date_get() {
let expected = datetime!(2022-08-12 00:00 UTC);
let event = WeeklyEvent::new(expected);
let actual = event.current_date();
assert_eq!(expected, *actual, "actual: {}", *actual);
}
#[test]
fn weekly_frequency_get() {
let expected = 1;
let date = datetime!(2022-08-12 00:00 UTC);
let event = WeeklyEvent::new(date);
let actual = event.frequency();
assert_eq!(expected, actual, "actual: {}", actual);
}
#[test]
fn weekly_frequency_update() {
let expected = 7;
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = WeeklyEvent::new(date);
event.update_frequency(7);
let actual = event.frequency();
assert_eq!(expected, actual, "actual: {}", actual);
}
#[test]
fn weekly_weekdays_get() {
let expected = 0;
let date = datetime!(2022-08-12 00:00 UTC);
let event = WeeklyEvent::new(date);
let actual = event.weekdays().count();
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn weekly_weekdays_insert() {
let expected = Some(&Weekday::Tuesday);
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = WeeklyEvent::new(date);
event.insert_weekday(Weekday::Tuesday);
let actual = event.weekdays().find(|&&weekday| weekday == Weekday::Tuesday);
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn weekly_weekdays_insert_twice() {
let expected = Some(&Weekday::Tuesday);
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = WeeklyEvent::new(date);
event.insert_weekday(Weekday::Tuesday);
event.insert_weekday(Weekday::Tuesday);
let actual = event.weekdays().find(|&&weekday| weekday == Weekday::Tuesday);
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn weekly_weekdays_remove() {
let expected = 0;
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = WeeklyEvent::new(date);
event.insert_weekday(Weekday::Tuesday);
event.remove_weekday(&Weekday::Tuesday);
let actual = event.weekdays().count();
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn weekly_remove_weekdays_remove_without_insert() {
let expected = 0;
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = WeeklyEvent::new(date);
event.remove_weekday(&Weekday::Tuesday);
let actual = event.weekdays().count();
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn monthly_current_date_get() {
let expected = datetime!(2022-08-12 00:00 UTC);
let event = MonthlyEvent::new(expected);
let actual = event.current_date();
assert_eq!(expected, *actual, "actual: {}", *actual);
}
#[test]
fn monthly_frequency_get() {
let expected = 1;
let date = datetime!(2022-08-12 00:00 UTC);
let event = MonthlyEvent::new(date);
let actual = event.frequency();
assert_eq!(expected, actual, "actual: {}", actual);
}
#[test]
fn monthly_frequency_update() {
let expected = 7;
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = MonthlyEvent::new(date);
event.update_frequency(7);
let actual = event.frequency();
assert_eq!(expected, actual, "actual: {}", actual);
}
#[test]
fn monthly_monthly_days_ordinals_get() {
let expected = 0;
let date = datetime!(2022-08-12 00:00 UTC);
let event = MonthlyEvent::new(date);
let actual = event.monthly_days_ordinals().count();
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn monthly_monthly_days_ordinals_insert() {
let expected = Some(&7);
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = MonthlyEvent::new(date);
event.insert_monthly_day_ordinal(7);
let actual = event.monthly_days_ordinals().find(|&&monthly_day_ordinal| monthly_day_ordinal == 7);
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn monthly_monthly_days_ordinals_insert_twice() {
let expected = Some(&7);
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = MonthlyEvent::new(date);
event.insert_monthly_day_ordinal(7);
event.insert_monthly_day_ordinal(7);
let actual = event.monthly_days_ordinals().find(|&&monthly_day_ordinal| monthly_day_ordinal == 7);
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn monthly_monthly_days_ordinals_remove() {
let expected = 0;
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = MonthlyEvent::new(date);
event.insert_monthly_day_ordinal(7);
event.remove_monthly_day_ordinal(&7);
let actual = event.monthly_days_ordinals().count();
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn monthly_remove_monthly_days_ordinals_without_insert() {
let expected = 0;
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = MonthlyEvent::new(date);
event.remove_monthly_day_ordinal(&7);
let actual = event.monthly_days_ordinals().count();
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn monthly_monthly_weekdays_ordinals_get() {
let expected = 0;
let date = datetime!(2022-08-12 00:00 UTC);
let event = MonthlyEvent::new(date);
let actual = event.monthly_weekdays_ordinals().count();
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn monthly_monthly_weekdays_ordinals_insert() {
let value = MonthlyWeekdayOrdinal::new(Ordinal::Fifth, Weekday::Sunday);
let expected = Some(&value);
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = MonthlyEvent::new(date);
event.insert_monthly_weekday_ordinal(MonthlyWeekdayOrdinal::new(Ordinal::Fifth, Weekday::Sunday));
let actual = event.monthly_weekdays_ordinals().find(|&&monthly_day_ordinal| monthly_day_ordinal == MonthlyWeekdayOrdinal::new(Ordinal::Fifth, Weekday::Sunday));
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn monthly_monthly_weekdays_ordinals_insert_twice() {
let value = MonthlyWeekdayOrdinal::new(Ordinal::Fifth, Weekday::Sunday);
let expected = Some(&value);
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = MonthlyEvent::new(date);
event.insert_monthly_weekday_ordinal(MonthlyWeekdayOrdinal::new(Ordinal::Fifth, Weekday::Sunday));
event.insert_monthly_weekday_ordinal(MonthlyWeekdayOrdinal::new(Ordinal::Fifth, Weekday::Sunday));
let actual = event.monthly_weekdays_ordinals().find(|&&monthly_weekday_ordinal| monthly_weekday_ordinal == MonthlyWeekdayOrdinal::new(Ordinal::Fifth, Weekday::Sunday));
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn monthly_monthly_weekdays_ordinals_remove() {
let expected = 0;
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = MonthlyEvent::new(date);
event.insert_monthly_weekday_ordinal(MonthlyWeekdayOrdinal::new(Ordinal::Fifth, Weekday::Sunday));
event.remove_monthly_weekday_ordinal(&MonthlyWeekdayOrdinal::new(Ordinal::Fifth, Weekday::Sunday));
let actual = event.monthly_weekdays_ordinals().count();
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn monthly_monthly_weekdays_ordinals_remove_without_insert() {
let expected = 0;
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = MonthlyEvent::new(date);
event.remove_monthly_weekday_ordinal(&MonthlyWeekdayOrdinal::new(Ordinal::Fifth, Weekday::Sunday));
let actual = event.monthly_weekdays_ordinals().count();
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn monthly_periodicity_get() {
let expected = Periodicity::Monthly;
let date = datetime!(2022-08-12 00:00 UTC);
let event = MonthlyEvent::new(date);
let actual = event.periodicity();
assert_eq!(expected, *actual, "actual: {:?}", *actual);
}
#[test]
fn monthly_weekdays_get() {
let expected = 0;
let date = datetime!(2022-08-12 00:00 UTC);
let event = MonthlyEvent::new(date);
let actual = event.weekdays().count();
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn monthly_weekdays_insert() {
let expected = Some(&Weekday::Tuesday);
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = MonthlyEvent::new(date);
event.insert_weekday(Weekday::Tuesday);
let actual = event.weekdays().find(|&&weekday| weekday == Weekday::Tuesday);
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn monthly_weekdays_insert_twice() {
let expected = Some(&Weekday::Tuesday);
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = MonthlyEvent::new(date);
event.insert_weekday(Weekday::Tuesday);
event.insert_weekday(Weekday::Tuesday);
let actual = event.weekdays().find(|&&weekday| weekday == Weekday::Tuesday);
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn monthly_weekdays_remove() {
let expected = 0;
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = MonthlyEvent::new(date);
event.insert_weekday(Weekday::Tuesday);
event.remove_weekday(&Weekday::Tuesday);
let actual = event.weekdays().count();
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn monthly_weekdays_remove_without_insert() {
let expected = 0;
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = MonthlyEvent::new(date);
event.remove_weekday(&Weekday::Tuesday);
let actual = event.weekdays().count();
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn yearly_current_date_get() {
let expected = datetime!(2022-08-12 00:00 UTC);
let event = YearlyEvent::new(expected);
let actual = event.current_date();
assert_eq!(expected, *actual, "actual: {}", *actual);
}
#[test]
fn yearly_frequency_get() {
let expected = 1;
let date = datetime!(2022-08-12 00:00 UTC);
let event = YearlyEvent::new(date);
let actual = event.frequency();
assert_eq!(expected, actual, "actual: {}", actual);
}
#[test]
fn yearly_frequency_update() {
let expected = 7;
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = YearlyEvent::new(date);
event.update_frequency(7);
let actual = event.frequency();
assert_eq!(expected, actual, "actual: {}", actual);
}
#[test]
fn yearly_monthly_days_ordinals_get_unexistent_month() {
let expected = Error::NotFound;
let date = datetime!(2022-08-12 00:00 UTC);
let event = YearlyEvent::new(date);
let actual = event.monthly_days_ordinals(Month::July).unwrap_err();
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn yearly_monthly_days_ordinals_insert() {
let expected = Some(&7);
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = YearlyEvent::new(date);
event.insert_monthly_day_ordinal(7, Month::July);
event.insert_monthly_day_ordinal(8, Month::December);
let actual = event.monthly_days_ordinals(Month::July).unwrap().find(|&&monthly_day_ordinal| monthly_day_ordinal == 7);
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn yearly_monthly_days_ordinals_insert_twice() {
let expected = Some(&7);
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = YearlyEvent::new(date);
event.insert_monthly_day_ordinal(7, Month::July);
event.insert_monthly_day_ordinal(7, Month::July);
let actual = event.monthly_days_ordinals(Month::July).unwrap().find(|&&monthly_day_ordinal| monthly_day_ordinal == 7);
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn yearly_monthly_days_ordinals_remove() {
let expected = 0;
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = YearlyEvent::new(date);
event.insert_monthly_day_ordinal(7, Month::July);
event.remove_monthly_day_ordinal(&7, Month::July);
let actual = event.monthly_days_ordinals(Month::July).unwrap().count();
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn yearly_monthly_days_ordinals_remove_without_insert() {
let expected = false;
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = YearlyEvent::new(date);
let actual = event.remove_monthly_day_ordinal(&7, Month::July);
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn yearly_monthly_weekdays_ordinals_get_unexistent_month() {
let expected = Error::NotFound;
let date = datetime!(2022-08-12 00:00 UTC);
let event = YearlyEvent::new(date);
let actual = event.monthly_weekdays_ordinals(Month::July).unwrap_err();
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn yearly_monthly_weekdays_ordinals_insert() {
let value = MonthlyWeekdayOrdinal::new(Ordinal::Fifth, Weekday::Sunday);
let expected = Some(&value);
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = YearlyEvent::new(date);
event.insert_monthly_weekday_ordinal(MonthlyWeekdayOrdinal::new(Ordinal::Fifth, Weekday::Sunday), Month::July);
event.insert_monthly_weekday_ordinal(MonthlyWeekdayOrdinal::new(Ordinal::First, Weekday::Monday), Month::December);
let actual = event.monthly_weekdays_ordinals(Month::July).unwrap().find(|&&monthly_weekday_ordinal| monthly_weekday_ordinal == MonthlyWeekdayOrdinal::new(Ordinal::Fifth, Weekday::Sunday));
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn yearly_monthly_weekdays_ordinals_insert_twice() {
let value = MonthlyWeekdayOrdinal::new(Ordinal::Fifth, Weekday::Sunday);
let expected = Some(&value);
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = YearlyEvent::new(date);
event.insert_monthly_weekday_ordinal(MonthlyWeekdayOrdinal::new(Ordinal::Fifth, Weekday::Sunday), Month::July);
event.insert_monthly_weekday_ordinal(MonthlyWeekdayOrdinal::new(Ordinal::Fifth, Weekday::Sunday), Month::July);
let actual = event.monthly_weekdays_ordinals(Month::July).unwrap().find(|&&monthly_weekday_ordinal| monthly_weekday_ordinal == MonthlyWeekdayOrdinal::new(Ordinal::Fifth, Weekday::Sunday));
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn yearly_monthly_weekdays_ordinals_remove() {
let expected = 0;
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = YearlyEvent::new(date);
event.insert_monthly_weekday_ordinal(MonthlyWeekdayOrdinal::new(Ordinal::Fifth, Weekday::Sunday), Month::July);
event.remove_monthly_weekday_ordinal(&MonthlyWeekdayOrdinal::new(Ordinal::Fifth, Weekday::Sunday), Month::July);
let actual = event.monthly_weekdays_ordinals(Month::July).unwrap().count();
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn yearly_monthly_weekdays_ordinals_remove_without_insert() {
let expected = false;
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = YearlyEvent::new(date);
let actual = event.remove_monthly_weekday_ordinal(&MonthlyWeekdayOrdinal::new(Ordinal::Fourth, Weekday::Thursday), Month::February);
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn yearly_periodicity_get() {
let expected = Periodicity::Yearly;
let date = datetime!(2022-08-12 00:00 UTC);
let event = YearlyEvent::new(date);
let actual = event.periodicity();
assert_eq!(expected, *actual, "actual: {:?}", *actual);
}
#[test]
fn yearly_weekdays_get_unexistent_month() {
let expected = Error::NotFound;
let date = datetime!(2022-08-12 00:00 UTC);
let event = YearlyEvent::new(date);
let actual = event.weekdays(Month::July).unwrap_err();
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn yearly_weekdays_insert() {
let expected = Some(&Weekday::Tuesday);
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = YearlyEvent::new(date);
event.insert_weekday(Weekday::Tuesday, Month::July);
event.insert_weekday(Weekday::Sunday, Month::December);
let actual = event.weekdays(Month::July).unwrap().find(|&&weekday| weekday == Weekday::Tuesday);
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn yearly_weekdays_insert_twice() {
let expected = Some(&Weekday::Tuesday);
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = YearlyEvent::new(date);
event.insert_weekday(Weekday::Tuesday, Month::July);
event.insert_weekday(Weekday::Tuesday, Month::July);
let actual = event.weekdays(Month::July).unwrap().find(|&&weekday| weekday == Weekday::Tuesday);
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn yearly_weekdays_remove() {
let expected = 0;
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = YearlyEvent::new(date);
event.insert_weekday(Weekday::Tuesday, Month::July);
event.remove_weekday(&Weekday::Tuesday, Month::July);
let actual = event.weekdays(Month::July).unwrap().count();
assert_eq!(expected, actual, "actual: {:?}", actual);
}
#[test]
fn yearly_weekdays_remove_without_insert() {
let expected = false;
let date = datetime!(2022-08-12 00:00 UTC);
let mut event = YearlyEvent::new(date);
let actual = event.remove_weekday(&Weekday::Thursday, Month::July);
assert_eq!(expected, actual, "actual: {:?}", actual);
}