tpt-cron-parse 0.1.0

Cron expression parser with precise error reporting and human-readable output
Documentation
use tpt_cron_parse::{CronExpr, CronField};

#[test]
fn integration_step_on_range() {
    let e = CronExpr::parse("0 1-5/2 * * *").unwrap();
    assert_eq!(
        e.hours,
        CronField::Step(Box::new(CronField::Range(1, 5)), 2)
    );
}

#[test]
fn integration_6field_step_seconds() {
    let e = CronExpr::parse("*/10 * * * * *").unwrap();
    assert!(e.is_6_field());
    assert_eq!(
        e.seconds,
        Some(CronField::Step(Box::new(CronField::Any), 10))
    );
}

#[test]
fn integration_all_any_fields() {
    let e = CronExpr::parse("* * * * *").unwrap();
    assert_eq!(e.minutes, CronField::Any);
    assert_eq!(e.hours, CronField::Any);
    assert_eq!(e.dom, CronField::Any);
    assert_eq!(e.month, CronField::Any);
    assert_eq!(e.dow, CronField::Any);
}

#[test]
fn integration_dec_31_11pm() {
    let e = CronExpr::parse("0 23 31 12 *").unwrap();
    assert_eq!(e.to_human_readable(), "At 11:00 PM on December 31st");
}

#[test]
fn integration_wednesday_noon() {
    let e = CronExpr::parse("0 12 * * 3").unwrap();
    assert_eq!(e.to_human_readable(), "Every Wednesday at 12:00 PM");
}