truecalc-workbook 8.2.1

Workbook layer for the truecalc spreadsheet engine — engine-locked workbook, worksheet, and cell value types
Documentation
use super::*;
use crate::named_ref::parse_canonical_ref;

fn bounds(r: &str) -> ParsedRangeBounds {
    let parsed = parse_canonical_ref(r).unwrap();
    parsed_range_bounds(r, &parsed).unwrap()
}

#[test]
fn overlapping_ranges_on_same_sheet_detected() {
    assert!(ranges_overlap(&bounds("Sheet1!A1:D12"), &bounds("Sheet1!C5:E20")));
}

#[test]
fn adjacent_non_overlapping_ranges_are_fine() {
    assert!(!ranges_overlap(&bounds("Sheet1!A1:D12"), &bounds("Sheet1!E1:F12")));
}

#[test]
fn ranges_on_different_sheets_never_overlap() {
    assert!(!ranges_overlap(&bounds("Sheet1!A1:D12"), &bounds("Sheet2!A1:D12")));
}

#[test]
fn header_row_columns_rejects_duplicate_names() {
    let err = header_row_columns(["quantity_g", "quantity_g"].into_iter()).unwrap_err();
    assert!(err.contains("quantity_g"), "error should name the duplicate: {err}");
}

#[test]
fn header_row_columns_rejects_invalid_identifier() {
    let err = header_row_columns(["quantity g"].into_iter()).unwrap_err();
    assert!(err.contains("quantity g"));
}

#[test]
fn header_row_columns_accepts_valid_unique_names() {
    let cols = header_row_columns(["quantity_g", "reference_per_100g"].into_iter()).unwrap();
    assert_eq!(cols, vec!["quantity_g".to_string(), "reference_per_100g".to_string()]);
}