extern crate datetime;
pub use datetime::{YearMonth, Year};
mod months {
use super::*;
use datetime::Month::*;
#[test]
fn range_full() {
let year = Year(2013);
let months: Vec<_> = year.months(..).collect();
assert_eq!(months, vec![
year.month(January),
year.month(February),
year.month(March),
year.month(April),
year.month(May),
year.month(June),
year.month(July),
year.month(August),
year.month(September),
year.month(October),
year.month(November),
year.month(December),
]);
}
#[test]
fn range_from() {
let year = Year(2013);
let months: Vec<_> = year.months(July..).collect();
assert_eq!(months, vec![
year.month(July),
year.month(August),
year.month(September),
year.month(October),
year.month(November),
year.month(December),
]);
}
#[test]
fn range_to() {
let year = Year(2013);
let months: Vec<_> = year.months(..July).collect();
assert_eq!(months, vec![
year.month(January),
year.month(February),
year.month(March),
year.month(April),
year.month(May),
year.month(June),
]);
}
#[test]
fn range() {
let year = Year(2013);
let months: Vec<_> = year.months(April..July).collect();
assert_eq!(months, vec![
year.month(April),
year.month(May),
year.month(June),
]);
}
#[test]
fn range_empty() {
let year = Year(2013);
let months: Vec<_> = year.months(August..August).collect();
assert!(months.is_empty());
}
#[test]
fn range_singular() {
let year = Year(2013);
let months = year.month(April);
assert_eq!(months, year.month(April));
}
}
mod days {
use super::*;
use datetime::LocalDate;
use datetime::Month::*;
#[test]
fn range_full() {
let year = Year(2013).month(February);
let days: Vec<_> = year.days(..).collect();
let results: Vec<_> = (1..29).map(|d| LocalDate::ymd(2013, February, d).unwrap()).collect();
assert_eq!(days, results);
}
#[test]
fn range_full_leap_year() {
let year = Year(2000).month(February);
let days: Vec<_> = year.days(..).collect();
let results: Vec<_> = (1..30).map(|d| LocalDate::ymd(2000, February, d).unwrap()).collect();
assert_eq!(days, results);
}
#[test]
fn range() {
let year = Year(2008).month(March);
let days: Vec<_> = year.days(10..20).collect();
let results: Vec<_> = (10..20).map(|d| LocalDate::ymd(2008, March, d).unwrap()).collect();
assert_eq!(days, results);
}
#[test]
fn just_for_one_day() {
let day = Year(1066).month(October).day(14);
assert_eq!(day, LocalDate::ymd(1066, October, 14));
}
}
#[test]
fn entire_year() {
let count = Year(1999).months(..)
.flat_map(|m| m.days(..))
.count();
assert_eq!(count, 365);
}
#[test]
fn entire_leap_year() {
let count = Year(2000).months(..)
.flat_map(|m| m.days(..))
.count();
assert_eq!(count, 366);
}