extern crate micromark; use micromark::{micromark_with_options, Constructs, Options}; use pretty_assertions::assert_eq; // To do: swc. // #[test] // fn mdx_expression_text_gnostic_core() -> Result<(), String> { // assert_eq!( // micromark_with_options("a {} b", &swc)?, // "
a b
", // "should support an empty expression (1)" // ); // assert_eq!( // micromark_with_options("a { \t\r\n} b", &swc)?, // "a b
", // "should support an empty expression (2)" // ); // assert_eq!( // micromark_with_options("a {/**/} b", &swc)?, // "a b
", // "should support a multiline comment (1)" // ); // assert_eq!( // micromark_with_options("a { /*\n*/\t} b", &swc)?, // "a b
", // "should support a multiline comment (2)" // ); // assert_eq!( // micromark_with_options("a {/*b*//*c*/} d", &swc)?, // "a d
", // "should support a multiline comment (3)" // ); // assert_eq!( // micromark_with_options("a {b/*c*/} d", &swc)?, // "a d
", // "should support a multiline comment (4)" // ); // assert_eq!( // micromark_with_options("a {/*b*/c} d", &swc)?, // "a d
", // "should support a multiline comment (4)" // ); // // To do: errors. // // t.throws( // // () => { // // micromark_with_options("a {//} b", &swc); // // }, // // /Could not parse expression with swc: Unexpected token/, // // "should crash on an incorrect line comment (1)" // // ); // // To do: errors. // // t.throws( // // () => { // // micromark_with_options("a { // b } c", &swc); // // }, // // /Could not parse expression with swc: Unexpected token/, // // "should crash on an incorrect line comment (2)" // // ); // assert_eq!( // micromark_with_options("a {//\n} b", &swc)?, // "a b
", // "should support a line comment followed by a line ending" // ); // assert_eq!( // micromark_with_options("a {// b\nd} d", &swc)?, // "a d
", // "should support a line comment followed by a line ending and an expression" // ); // assert_eq!( // micromark_with_options("a {b// c\n} d", &swc)?, // "a d
", // "should support an expression followed by a line comment and a line ending" // ); // assert_eq!( // micromark_with_options("a {/*b*/ // c\n} d", &swc)?, // "a d
", // "should support comments (1)" // ); // assert_eq!( // micromark_with_options("a {b.c} d", &swc)?, // "a d
", // "should support expression statements (1)" // ); // assert_eq!( // micromark_with_options("a {1 + 1} b", &swc)?, // "a b
", // "should support expression statements (2)" // ); // assert_eq!( // micromark_with_options("a {function () {}} b", &swc)?, // "a b
", // "should support expression statements (3)" // ); // // To do: errors. // // t.throws( // // () => { // // micromark_with_options("a {var b = \"c\"} d", &swc); // // }, // // /Could not parse expression with swc: Unexpected token/, // // "should crash on non-expressions" // // ); // assert_eq!( // micromark_with_options("> a {\n> b} c", &swc)?, // "\n", // "should support expressions in containers" // ); // // To do: errors. // // t.throws( // // () => { // // micromark_with_options("> a {\n> b<} c", &swc); // // }, // // /Could not parse expression with swc: Unexpected token/, // // "should crash on incorrect expressions in containers (1)" // // ); // // To do: errors. // // t.throws( // // () => { // // micromark_with_options("> a {\n> b\n> c} d", &swc); // // }, // // /Could not parse expression with swc: Unexpected content after expression/, // // "should crash on incorrect expressions in containers (2)" // // ); // Ok(()) // } #[test] fn mdx_expression_text_agnostic() -> Result<(), String> { let mdx = Options { constructs: Constructs::mdx(), ..Options::default() }; assert_eq!( micromark_with_options("a {b} c", &mdx)?, "a c
\n
a c
", "should support an expression" ); assert_eq!( micromark_with_options("a {} b", &mdx)?, "a b
", "should support an empty expression" ); assert_eq!( micromark_with_options("a {b c", &mdx).err().unwrap(), "1:7: Unexpected end of file in expression, expected a corresponding closing brace for `{`", "should crash if no closing brace is found (1)" ); assert_eq!( micromark_with_options("a {b { c } d", &mdx) .err() .unwrap(), "1:13: Unexpected end of file in expression, expected a corresponding closing brace for `{`", "should crash if no closing brace is found (2)" ); assert_eq!( micromark_with_options("a {\n} b", &mdx)?, "a b
", "should support a line ending in an expression" ); assert_eq!( micromark_with_options("a } b", &mdx)?, "a } b
", "should support just a closing brace" ); assert_eq!( micromark_with_options("{ a } b", &mdx)?, "b
", "should support expressions as the first thing when following by other things" ); Ok(()) } // // To do: swc. // #[test] // fn mdx_expression_text_gnostic() -> Result<(), String> { // assert_eq!( // micromark_with_options("a {b} c", &swc)?, // "a c
", // "should support an expression" // ); // // To do: errors. // // t.throws( // // () => { // // micromark_with_options("a {??} b", &swc); // // }, // // /Could not parse expression with swc: Unexpected token/, // // "should crash on an incorrect expression" // // ); // assert_eq!( // micromark_with_options("a {} b", &swc)?, // "a b
", // "should support an empty expression" // ); // // To do: errors. // // t.throws( // // () => { // // micromark_with_options("a {b c", &swc); // // }, // // /Unexpected end of file in expression, expected a corresponding closing brace for `{`/, // // "should crash if no closing brace is found (1)" // // ); // // To do: errors. // // t.throws( // // () => { // // micromark_with_options("a {b { c } d", &swc); // // }, // // /Could not parse expression with swc: Unexpected content after expression/, // // "should crash if no closing brace is found (2)" // // ); // assert_eq!( // micromark_with_options("a {\n} b", &swc)?, // "a b
", // "should support a line ending in an expression" // ); // assert_eq!( // micromark_with_options("a } b", &swc)?, // "a } b
", // "should support just a closing brace" // ); // assert_eq!( // micromark_with_options("{ a } b", &swc)?, // "b
", // "should support expressions as the first thing when following by other things" // ); // assert_eq!( // micromark_with_options("a { /* { */ } b", &swc)?, // "a b
", // "should support an unbalanced opening brace (if JS permits)" // ); // assert_eq!( // micromark_with_options("a { /* } */ } b", &swc)?, // "a b
", // "should support an unbalanced closing brace (if JS permits)" // ); // Ok(()) // }