fastdate 0.3.36

Rust fast date carte
Documentation
use fastdate::{Date, DateTime};
use std::str::FromStr;

#[test]
fn test_date_empty() {
    let d = Date::from_str("");
    assert!(d.is_err());
}

#[test]
fn test_from_str() {
    let d = Date::from_str("2022-12-13").unwrap();
    assert_eq!(d.to_string(), "2022-12-13");
}

#[test]
fn test_from_str_46911_mon() {
    let d = Date::from_str("2022-04-13").unwrap();
    assert_eq!(d.to_string(), "2022-04-13");
    let d = Date::from_str("2022-06-13").unwrap();
    assert_eq!(d.to_string(), "2022-06-13");
    let d = Date::from_str("2022-09-13").unwrap();
    assert_eq!(d.to_string(), "2022-09-13");
    let d = Date::from_str("2022-11-13").unwrap();
    assert_eq!(d.to_string(), "2022-11-13");

    let d = Date::from_str("2022-02-13").unwrap();
    assert_eq!(d.to_string(), "2022-02-13");
}

#[test]
fn test_from_str_run() {
    let d = Date::from_str("2024-02-13").unwrap();
    assert_eq!(d.to_string(), "2024-02-13");
}

#[test]
fn test_from_str_mon_out() {
    let d = Date::from_str("2024-14-13");
    assert!(d.is_err());
}

#[test]
fn test_from_str_day_zero() {
    let d = Date::from_str("2024-14-0");
    assert!(d.is_err());
}

#[test]
fn test_from_str_day_out() {
    let d = Date::from_str("2024-02-40");
    assert!(d.is_err());
}

#[test]
fn test_set_day() {
    let d = Date::from_str("2024-02-01").unwrap().set_day(1);
    assert_eq!(d.to_string(), "2024-02-01");
    assert_eq!(d.get_day(), 1);

    let d = Date::from_str("2024-02-01").unwrap().set_day(0);
    assert_eq!(d.to_string(), "2024-02-01");

    let d = Date::from_str("2024-02-01").unwrap().set_day(50);
    assert_eq!(d.to_string(), "2024-02-01");
}

#[test]
fn test_set_mon() {
    let d = Date::from_str("2024-02-01").unwrap().set_mon(2);
    assert_eq!(d.to_string(), "2024-02-01");
    assert_eq!(d.get_mon(), 2);

    let d = Date::from_str("2024-02-01").unwrap().set_mon(0);
    assert_eq!(d.to_string(), "2024-02-01");

    let d = Date::from_str("2024-02-01").unwrap().set_mon(50);
    assert_eq!(d.to_string(), "2024-02-01");
}

#[test]
fn test_set_year() {
    let d = Date::from_str("2024-02-01").unwrap().set_year(2024);
    assert_eq!(d.to_string(), "2024-02-01");
    assert_eq!(d.get_year(), 2024);

    let d = Date::from_str("2024-02-01").unwrap().set_year(-1);
    assert_eq!(d.to_string(), "2024-02-01");

    let d = Date::from_str("2024-02-01").unwrap().set_year(10000);
    assert_eq!(d.to_string(), "2024-02-01");
}

#[test]
fn test_ser_de() {
    let d = Date::from_str("2024-02-01").unwrap();
    let data = serde_json::to_value(&d).unwrap();
    let new_d = serde_json::from_value(data).unwrap();
    assert_eq!(d, new_d);
}

#[test]
fn test_de_map_error() {
    let data = serde_json::Value::String("202-02-01".to_string());
    let new_d: Result<Date, serde_json::Error> = serde_json::from_value(data);
    assert!(new_d.is_err());
}

#[test]
fn test_from_str_2() {
    let d = Date::from_str("2022/12/13").unwrap();
    assert_eq!(d.to_string(), "2022-12-13");
}

#[test]
fn test_date() {
    let d = Date::from_str("2022-12-13 11:12:13.123456").unwrap();
    println!("{}", d);
    assert_eq!("2022-12-13".to_string(), d.to_string());
}

#[test]
fn test_ser() {
    let d = DateTime::from_str("2022-12-13T11:12:13Z").unwrap();
    println!("{}", d);
    let v = serde_json::to_string(&d).unwrap();
    assert_eq!(v, "\"2022-12-13T11:12:13Z\"");
}