From 118cc91fd56a9b4c93bec5b1cb4c5f25924d353e Mon Sep 17 00:00:00 2001 From: Titus Wormer Date: Fri, 9 Sep 2022 13:17:59 +0200 Subject: Add mdx expression (flow, text) --- tests/mdx_expression_text.rs | 273 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 273 insertions(+) create mode 100644 tests/mdx_expression_text.rs (limited to 'tests/mdx_expression_text.rs') diff --git a/tests/mdx_expression_text.rs b/tests/mdx_expression_text.rs new file mode 100644 index 0000000..b42faf2 --- /dev/null +++ b/tests/mdx_expression_text.rs @@ -0,0 +1,273 @@ +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

a c

\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

", + "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(()) +// } -- cgit