#![allow(dead_code)]
mod lib_test;
use crate::lib_test::{Timing, Unit};
use icu_locale_core::locale;
use spreadsheet_ods::{
read_ods, write_ods_buf, write_ods_buf_uncompressed, CellStyleRef, OdsError, Sheet, WorkBook,
};
const ROWS: u32 = 100;
const COLS: u32 = 400;
fn create_wb(rows: u32, cols: u32) -> Result<WorkBook, OdsError> {
let mut wb = WorkBook::new_empty();
wb.locale_settings(locale!("en-US"));
let mut sh = Sheet::new("1");
for r in 0..rows {
if r % 2 == 0 {
for c in 0..cols {
sh.set_value(r, c, "1234");
}
} else {
for c in 0..cols {
sh.set_value(r, c, 1u32);
}
}
if r % 2 == 0 {
for c in 0..cols {
sh.set_cellstyle(r, c, &CellStyleRef::from("s0"));
}
}
if r % 10 == 0 {
for c in 0..cols {
sh.set_formula(r, c, "of:=1+1");
}
}
if r % 50 == 0 {
for c in 0..cols {
sh.set_validation(r, c, &"v0".into());
}
}
}
wb.push_sheet(sh);
Ok(wb)
}
fn write_wb<'a>(wb: &'a mut WorkBook) -> impl FnMut() -> Result<(), OdsError> + 'a {
move || {
let _buf = write_ods_buf_uncompressed(wb, Vec::new())?;
Ok(())
}
}
fn test_read_orders() -> Result<(), OdsError> {
let mut t = Timing::<()>::default()
.name("read_orders")
.skip(2)
.runs(30)
.unit(Unit::Millisecond);
let _ = t.run(|| read_ods("tests/bench_fast.ods"))?;
println!("{}", t);
Ok(())
}
fn test_create_wb() -> Result<(), OdsError> {
let mut t = Timing::<()>::default()
.name("create_wb")
.skip(2)
.runs(30)
.divider(ROWS as u64 * COLS as u64);
let _ = t.run(|| create_wb(ROWS, COLS))?;
println!("{}", t);
Ok(())
}
fn test_write_wb() -> Result<(), OdsError> {
let mut t = Timing::<()>::default()
.name("write_wb")
.skip(2)
.runs(30)
.divider(ROWS as u64 * COLS as u64);
let mut wb = create_wb(ROWS, COLS)?;
let _ = t.run(|| write_ods_buf(&mut wb, Vec::new()));
println!("{}", t);
Ok(())
}