use oaxaca_blinder::OaxacaBuilder;
use polars::prelude::*;
use serde_json::Value;
#[test]
fn test_export_methods() -> Result<(), Box<dyn std::error::Error>> {
let df = df!(
"wage" => &[10.0, 12.0, 11.0, 13.0, 15.0, 20.0, 22.0, 21.0, 23.0, 25.0],
"education" => &[12.0, 16.0, 14.0, 16.0, 18.0, 12.0, 16.0, 14.0, 16.0, 18.0],
"gender" => &["F", "F", "F", "F", "F", "M", "M", "M", "M", "M"]
)?;
let results = OaxacaBuilder::new(df, "wage", "gender", "F")
.predictors(&["education"])
.bootstrap_reps(10) .run()?;
let latex = results.to_latex();
assert!(latex.contains("\\begin{table}"));
assert!(latex.contains("explained"));
assert!(latex.contains("unexplained"));
let markdown = results.to_markdown();
assert!(markdown.contains("| Component | Estimate |"));
assert!(markdown.contains("| explained |"));
let json_str = results.to_json()?;
let json: Value = serde_json::from_str(&json_str)?;
assert!(json.get("total_gap").is_some());
assert!(json.get("two_fold").is_some());
assert!(json["two_fold"].get("aggregate").is_some());
Ok(())
}