mod common;
use xls_rs::{AvroHandler, ExcelHandler, ParquetHandler, WriteOptions};
use std::fs;
fn read_csv(name: &str) -> Vec<Vec<String>> {
let path = common::example_path(&format!("{name}.csv"));
let content = fs::read_to_string(&path).unwrap_or_else(|_| panic!("Failed to read {path}"));
content
.lines()
.filter(|l| !l.is_empty())
.map(|l| l.split(',').map(|s| s.to_string()).collect())
.collect()
}
#[test]
#[ignore = "generates example artifacts; not part of normal test runs"]
fn generate_parquet_examples() {
let handler = ParquetHandler::new();
let sales = read_csv("sales");
let header = sales[0].clone();
let data: Vec<Vec<String>> = sales[1..].to_vec();
handler
.write(&common::example_path("sales.parquet"), &data, Some(&header))
.unwrap();
println!("Created examples/sales.parquet");
let employees = read_csv("employees");
let header = employees[0].clone();
let data: Vec<Vec<String>> = employees[1..].to_vec();
handler
.write(&common::example_path("employees.parquet"), &data, Some(&header))
.unwrap();
println!("Created examples/employees.parquet");
let numbers = read_csv("numbers");
let header = numbers[0].clone();
let data: Vec<Vec<String>> = numbers[1..].to_vec();
handler
.write(&common::example_path("numbers.parquet"), &data, Some(&header))
.unwrap();
println!("Created examples/numbers.parquet");
}
#[test]
#[ignore = "generates example artifacts; not part of normal test runs"]
fn generate_avro_examples() {
let handler = AvroHandler::new();
let sales = read_csv("sales");
let header = sales[0].clone();
let data: Vec<Vec<String>> = sales[1..].to_vec();
handler
.write(&common::example_path("sales.avro"), &data, Some(&header))
.unwrap();
println!("Created examples/sales.avro");
let employees = read_csv("employees");
let header = employees[0].clone();
let data: Vec<Vec<String>> = employees[1..].to_vec();
handler
.write(&common::example_path("employees.avro"), &data, Some(&header))
.unwrap();
println!("Created examples/employees.avro");
let lookup = read_csv("lookup");
let header = lookup[0].clone();
let data: Vec<Vec<String>> = lookup[1..].to_vec();
handler
.write(&common::example_path("lookup.avro"), &data, Some(&header))
.unwrap();
println!("Created examples/lookup.avro");
}
#[test]
#[ignore = "generates example artifacts; not part of normal test runs"]
fn generate_excel_examples() {
let handler = ExcelHandler::new();
let sales = read_csv("sales");
let options = WriteOptions::default();
handler
.write_styled(&common::example_path("sales.xlsx"), &sales, &options)
.unwrap();
println!("Created examples/sales.xlsx");
let employees = read_csv("employees");
handler
.write_styled(&common::example_path("employees.xlsx"), &employees, &options)
.unwrap();
println!("Created examples/employees.xlsx");
}