diff options
author | dfhoughton <dfhoughton@gmail.com> | 2020-05-17 12:34:59 -0400 |
---|---|---|
committer | dfhoughton <dfhoughton@gmail.com> | 2020-05-17 12:34:59 -0400 |
commit | 70ed11d3367f50184b9064c818c6793b1a3c07b8 (patch) | |
tree | 23f6b5f780c096f70aee1204a3580086575d3339 /tests | |
parent | a766329bc1e10660e1779013950e3bf58312ee7c (diff) | |
download | two-timer-70ed11d3367f50184b9064c818c6793b1a3c07b8.zip |
added 'since' expressions and also 'the' as a synonym for 'this'
Diffstat (limited to 'tests')
-rw-r--r-- | tests/tests.rs | 108 |
1 files changed, 107 insertions, 1 deletions
diff --git a/tests/tests.rs b/tests/tests.rs index ae1126e..c2eb23a 100644 --- a/tests/tests.rs +++ b/tests/tests.rs @@ -1,6 +1,6 @@ #![feature(test)] extern crate two_timer; -use two_timer::{parsable, parse, Config}; +use two_timer::{parsable, parse, Config, TimeError}; extern crate chrono; use chrono::naive::NaiveDate; use chrono::{Duration, Local}; @@ -422,6 +422,16 @@ fn this_week() { } #[test] +fn the_week() { + let now = NaiveDate::from_ymd(1969, 5, 6).and_hms(0, 0, 0); + let d1 = NaiveDate::from_ymd(1969, 5, 5).and_hms(0, 0, 0); + let d2 = NaiveDate::from_ymd(1969, 5, 12).and_hms(0, 0, 0); + let (start, end, _) = parse("the week", Some(Config::new().now(now))).unwrap(); + assert_eq!(d1, start); + assert_eq!(d2, end); +} + +#[test] fn next_week() { let now = NaiveDate::from_ymd(1969, 5, 6).and_hms(0, 0, 0); let d1 = NaiveDate::from_ymd(1969, 5, 12).and_hms(0, 0, 0); @@ -1428,6 +1438,17 @@ fn noon() { assert!(false, "didn't match"); } } + let now = NaiveDate::from_ymd(1969, 5, 6).and_hms(0, 0, 0); + match parse("noon on May 6, 1969", Some(Config::new().now(now))) { + Ok((start, end, _)) => { + assert_eq!(d1, start, "'noon' is the same as 'noon today'"); + assert_eq!(d2, end); + } + Err(e) => { + println!("{:?}", e); + assert!(false, "didn't match"); + } + } } #[test] @@ -1596,3 +1617,88 @@ fn relative_time_regression() { parse("24", None).unwrap(); assert!(true, "'24' didn't cause a panic"); } + +#[test] +fn since_yesterday() { + let then = NaiveDate::from_ymd(1969, 5, 10).and_hms(0, 0, 0); + let now = then + Duration::hours(5); + match parse("since yesterday", Some(Config::new().now(now))) { + Ok((start, end, two_times)) => { + assert!(!two_times, "isn't a two-time expression"); + assert!(then == start); + assert!(now == end); + } + Err(e) => { + println!("{:?}", e); + assert!(false, "didn't match"); + } + } +} + +#[test] +fn since_noon() { + let then = NaiveDate::from_ymd(1969, 5, 10).and_hms(12, 0, 0); + let now = then + Duration::hours(5); + for expr in &[ + "since noon", + "since noon today", + "since 12", + "since 12am", + "since 12am today", + "since 12:00", + "since 12:00:00", + ] { + match parse(expr, Some(Config::new().now(now))) { + Ok((start, end, two_times)) => { + assert!(!two_times, "isn't a two-time expression"); + assert!(then == start); + assert!(now == end); + } + Err(e) => { + println!("{:?}", e); + assert!(false, "didn't match"); + } + } + } +} + +#[test] +fn since_may() { + let then = NaiveDate::from_ymd(1969, 5, 1).and_hms(0, 0, 0); + let now = then + Duration::hours(5); + for expr in &[ + "since may", + "since the start of may", + "since the beginning of may", + "after may", + "after the start of may", + "after the beginning of may", + ] { + match parse(expr, Some(Config::new().now(now))) { + Ok((start, end, two_times)) => { + assert!(!two_times, "isn't a two-time expression"); + assert!(then == start); + assert!(now == end); + } + Err(e) => { + println!("{:?}", e); + assert!(false, "didn't match"); + } + } + } +} + +#[test] +fn since_the_end_of_may_misordered() { + let then = NaiveDate::from_ymd(1969, 5, 1).and_hms(0, 0, 0); + let now = then + Duration::hours(5); + for expr in &["since the end of may", "after the end of may"] { + match parse(expr, Some(Config::new().now(now))) { + Ok((..)) => assert!(false, "this should not succeed"), + Err(e) => match e { + TimeError::Misordered(_) => assert!(true, "correct error"), + _ => assert!(false, format!("unexpected error: {:?}", e)), + }, + } + } +} |