extern crate micromark; use micromark::{micromark_with_options, Constructs, Options}; use pretty_assertions::assert_eq; #[test] fn mdx_jsx_flow_agnostic() -> Result<(), String> { let mdx = Options { constructs: Constructs::mdx(), ..Options::default() }; assert_eq!( micromark_with_options("", &mdx)?, "", "should support a self-closing element" ); assert_eq!( micromark_with_options("", &mdx)?, "", "should support a closed element" ); assert_eq!( micromark_with_options("\nb\n", &mdx)?, "

b

\n", "should support an element w/ content" ); assert_eq!( micromark_with_options("\n- b\n", &mdx)?, "\n", "should support an element w/ containers as content" ); // To do: expressions. // assert_eq!( // micromark_with_options("", &mdx)?, // "", // "should support attributes" // ); Ok(()) } // Flow is mostly the same as `text`, so we only test the relevant // differences. #[test] fn mdx_jsx_flow_essence() -> Result<(), String> { let mdx = Options { constructs: Constructs::mdx(), ..Options::default() }; assert_eq!( micromark_with_options("", &mdx)?, "", "should support an element" ); assert_eq!( micromark_with_options("\n- b\n", &mdx)?, "\n", "should support an element around a container" ); assert_eq!( micromark_with_options(" \nb\n ", &mdx)?, "

b

\n", "should support a dangling `>` in a tag (not a block quote)" ); assert_eq!( micromark_with_options(" \nb\n ", &mdx)?, "

b

\n", "should support trailing initial and final whitespace around tags" ); assert_eq!( micromark_with_options(" \t\nc\n ", &mdx)?, "

c

\n", "should support tags after tags" ); assert_eq!( micromark_with_options("> ", &mdx).err().unwrap(), "2:1: Unexpected lazy line in container, expected line to be prefixed with `>` when in a block quote, whitespace when in a list, etc", "should not support lazy flow (1)" ); assert_eq!( micromark_with_options("> a\n> ", &mdx) .err() .unwrap(), "3:1: Unexpected lazy line in container, expected line to be prefixed with `>` when in a block quote, whitespace when in a list, etc", "should not support lazy flow (2)" ); assert_eq!( micromark_with_options("> d", &mdx) .err() .unwrap(), "2:1: Unexpected lazy line in container, expected line to be prefixed with `>` when in a block quote, whitespace when in a list, etc", "should not support lazy flow (3)" ); assert_eq!( micromark_with_options("> d", &mdx) .err() .unwrap(), "2:1: Unexpected lazy line in container, expected line to be prefixed with `>` when in a block quote, whitespace when in a list, etc", "should not support lazy flow (4)" ); assert_eq!( micromark_with_options("> e", &mdx) .err() .unwrap(), "2:1: Unexpected lazy line in container, expected line to be prefixed with `>` when in a block quote, whitespace when in a list, etc", "should not support lazy flow (4)" ); assert_eq!( micromark_with_options("> a\n", &mdx)?, "
\n

a

\n
\n", "should not support lazy flow (5)" ); Ok(()) }