use std::path::Path; use super::{Pictures, body, document, plain}; fn page(text: &str, beside: Option<&Path>, pictures: &Pictures) -> super::Page { body(text, beside, pictures).expect("a page") } #[test] fn formulas_and_diagrams_draw_as_svg() { let text = "Inline $x^2$ here.\n\n$$\n\\sqrt{y}\n$$\n\n```mermaid\nflowchart LR\n A --> B\n```\n"; let page = page(text, None, &Pictures::Inline); assert!(!page.html.contains("language-math"), "{}", page.html); assert!(!page.html.contains("language-mermaid"), "{}", page.html); assert_eq!(page.html.matches(" = page.formulas.iter().map(|(line, _)| *line).collect(); assert_eq!(lines, [3, 7]); assert!(page.formulas.iter().all(|(_, why)| !why.is_empty())); assert_eq!(page.diagrams, [9]); assert!( page.html.contains("language-math math-display\">\\frac{"), "{}", page.html ); assert!( page.html .contains("language-math math-inline\">\\sqrt{"), "{}", page.html ); assert!( page.html.contains("language-mermaid\">flowchart LR"), "{}", page.html ); } #[test] fn an_undrawn_formula_after_a_drawn_one_keeps_its_code() { let page = page("$$\nx\n$$\n$$\n\\frac{\n$$\n", None, &Pictures::Inline); assert_eq!(page.formulas.len(), 1); assert!(page.html.contains("\\frac{"), "{}", page.html); } #[test] fn front_matter_and_raw_html_do_not_go_live() { let page = page( "---\ntitle: Secret\n---\n\n\n\nText.\n", None, &Pictures::Inline, ); assert!(!page.html.contains("Secret"), "{}", page.html); assert!(!page.html.contains("