extern crate micromark; use micromark::{ mdast::{Node, Root, ThematicBreak}, micromark, micromark_to_mdast, micromark_with_options, unist::Position, Constructs, Options, }; use pretty_assertions::assert_eq; #[test] fn thematic_break() -> Result<(), String> { assert_eq!( micromark("***\n---\n___"), "
+++
", "should not support thematic breaks w/ plusses" ); assert_eq!( micromark("==="), "===
", "should not support thematic breaks w/ equals" ); assert_eq!( micromark("--"), "--
", "should not support thematic breaks w/ two dashes" ); assert_eq!( micromark("**"), "**
", "should not support thematic breaks w/ two asterisks" ); assert_eq!( micromark("__"), "__
", "should not support thematic breaks w/ two underscores" ); assert_eq!( micromark(" ***"), "***\n
",
"should not support thematic breaks w/ 4 spaces"
);
assert_eq!(
micromark("Foo\n ***"),
"Foo\n***
", "should not support thematic breaks w/ 4 spaces as paragraph continuation" ); assert_eq!( micromark("_____________________________________"), "_ _ _ _ a
", "should not support thematic breaks w/ other characters (1)" ); assert_eq!( micromark("a------"), "a------
", "should not support thematic breaks w/ other characters (2)" ); assert_eq!( micromark("---a---"), "---a---
", "should not support thematic breaks w/ other characters (3)" ); assert_eq!( micromark(" *-*"), "-
", "should not support thematic breaks w/ mixed markers" ); assert_eq!( micromark("- foo\n***\n- bar"), "Foo
\nbar
", "should support thematic breaks interrupting paragraphs" ); assert_eq!( micromark("Foo\n---\nbar"), "bar
", "should not support thematic breaks w/ dashes interrupting paragraphs (setext heading)" ); assert_eq!( micromark("- Foo\n- * * *"), "\n\n
\n
a
", "should not support lazyness (1)" ); assert_eq!( micromark("> a\n---"), "\n\na
\n
***
", "should support turning off thematic breaks" ); assert_eq!( micromark_to_mdast("***", &Options::default())?, Node::Root(Root { children: vec![Node::ThematicBreak(ThematicBreak { position: Some(Position::new(1, 1, 0, 1, 4, 3)) })], position: Some(Position::new(1, 1, 0, 1, 4, 3)) }), "should support thematic breaks as `ThematicBreak`s in mdast" ); Ok(()) }