ironcalc_base 0.7.1

Open source spreadsheet engine
Documentation
use crate::test::util::new_empty_model;

#[test]
fn test_datedif_yd_leap_year_edge_cases() {
    let mut model = new_empty_model();

    // 29 Feb 2020 → 28 Feb 2021   (should be 0 days)
    model._set("A1", "=DATEDIF(\"29/2/2020\", \"28/2/2021\", \"YD\")");

    // 29 Feb 2020 → 1 Mar 2021    (should be 1 day)
    model._set("A2", "=DATEDIF(\"29/2/2020\", \"2021-03-01\", \"YD\")");

    model.evaluate();

    assert_eq!(model._get_text("A1"), *"0");
    assert_eq!(model._get_text("A2"), *"1");
}

#[test]
fn test_datedif_md_month_end_edge_cases() {
    let mut model = new_empty_model();

    // 31 Jan 2021 → 28 Feb 2021 (non-leap) => 28
    model._set("B1", "=DATEDIF(\"31/1/2021\", \"28/2/2021\", \"MD\")");

    // 31 Jan 2020 → 29 Feb 2020 (leap) => 29
    model._set("B2", "=DATEDIF(\"31/1/2020\", \"29/2/2020\", \"MD\")");

    model.evaluate();

    assert_eq!(model._get_text("B1"), *"28");
    assert_eq!(model._get_text("B2"), *"29");
}