#![cfg(feature = "md")]
use docparser_sdk::{emit, parse, parse_json, parse_markdown, BlockKind};
fn write_tmp(name: &str, content: &str) -> std::path::PathBuf {
let dir = std::env::temp_dir().join("docparser_sdk_facade_test");
std::fs::create_dir_all(&dir).unwrap();
let p = dir.join(name);
std::fs::write(&p, content).unwrap();
p
}
#[test]
fn parses_markdown_through_default_engine() {
let p = write_tmp(
"a.md",
"# 标题\n\n- 甲\n- 乙\n\n| a | b |\n| --- | --- |\n| 1 | 2 |\n",
);
let doc = parse(p.to_str().unwrap()).unwrap();
std::fs::remove_file(&p).ok();
assert_eq!(doc.meta.file_type, "md");
let kinds: Vec<BlockKind> = doc.pages[0].blocks.iter().map(|b| b.kind).collect();
assert_eq!(
kinds,
vec![BlockKind::Heading, BlockKind::List, BlockKind::Table]
);
let md = emit::to_markdown(&doc);
assert!(md.starts_with("# 标题"));
assert!(md.contains("- 甲"));
assert!(md.contains("| --- | --- |"));
}
#[test]
fn markdown_and_json_shortcuts_agree() {
let p = write_tmp("b.md", "## 小节\n\n正文\n");
let md = parse_markdown(p.to_str().unwrap()).unwrap();
let json = parse_json(p.to_str().unwrap()).unwrap();
std::fs::remove_file(&p).ok();
assert!(md.contains("## 小节"));
assert!(json.contains("\"heading\""));
assert!(json.contains("\"level\":2"));
}
#[test]
fn missing_file_reports_corrupt_not_panic() {
let err = parse("/definitely/not/here.md").unwrap_err();
assert_eq!(err.code.as_str(), "corrupt");
}