mod lib_test;

use chrono::{Duration, NaiveDateTime};
use lib_test::*;
use spreadsheet_ods::metadata::{MetaUserDefined, MetaValue};
use spreadsheet_ods::{read_ods, OdsError, Sheet, WorkBook};

#[test]
fn test_write_read() -> Result<(), OdsError> {
    let mut wb = WorkBook::new_empty();

    wb.metadata_mut().user_defined.push(MetaUserDefined {
        name: "one".to_string(),
        value: MetaValue::String("val".to_string()),
    });
    wb.metadata_mut().user_defined.push(MetaUserDefined {
        name: "two".to_string(),
        value: MetaValue::TimeDuration(Duration::try_hours(0).expect("hours")),
    });
    wb.metadata_mut().user_defined.push(MetaUserDefined {
        name: "three".to_string(),
        value: MetaValue::Datetime(NaiveDateTime::default()),
    });
    wb.metadata_mut().user_defined.push(MetaUserDefined {
        name: "four".to_string(),
        value: MetaValue::Boolean(true),
    });
    wb.metadata_mut().user_defined.push(MetaUserDefined {
        name: "five".to_string(),
        value: MetaValue::Float(1.234),
    });

    let mut sh = Sheet::new("1");
    sh.set_value(0, 0, "A");
    wb.push_sheet(sh);

    test_write_ods(&mut wb, "test_out/test_metadata.ods")?;

    let _wi = read_ods("test_out/test_metadata.ods")?;

    // dbg!(wi.metadata());

    Ok(())
}
