From f41688c067be261279804b8ab3e04cd5d67f492f Mon Sep 17 00:00:00 2001 From: Titus Wormer Date: Fri, 26 Aug 2022 10:57:20 +0200 Subject: Add support for math (text) --- tests/math_text.rs | 190 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 190 insertions(+) create mode 100644 tests/math_text.rs (limited to 'tests') diff --git a/tests/math_text.rs b/tests/math_text.rs new file mode 100644 index 0000000..d0e7589 --- /dev/null +++ b/tests/math_text.rs @@ -0,0 +1,190 @@ +extern crate micromark; +use micromark::{micromark, micromark_with_options, Constructs, Options}; +use pretty_assertions::assert_eq; + +#[test] +fn math_text() { + let math = Options { + constructs: Constructs { + math_text: true, + // To do: enable `math_flow`. + ..Constructs::default() + }, + ..Options::default() + }; + + assert_eq!( + micromark("$a$"), + "

$a$

", + "should not support math (text) by default" + ); + + assert_eq!( + micromark_with_options("$foo$ $$bar$$", &math), + "

foo bar

", + "should support math (text) if enabled" + ); + + assert_eq!( + micromark_with_options( + "$foo$ $$bar$$", + &Options { + math_text_single_dollar: false, + ..math.clone() + } + ), + "

$foo$ bar

", + "should not support math (text) w/ a single dollar, w/ `math_text_single_dollar: false`" + ); + + // assert_eq!( + // micromark_with_options("$foo$", &math), + // "

foo

", + // "should support math (text)" + // ); + + assert_eq!( + micromark_with_options("$$ foo $ bar $$", &math), + "

foo $ bar

", + "should support math (text) w/ more dollars" + ); + + assert_eq!( + micromark_with_options("$ $$ $", &math), + "

$$

", + "should support math (text) w/ fences inside, and padding" + ); + + assert_eq!( + micromark_with_options("$ $$ $", &math), + "

$$

", + "should support math (text) w/ extra padding" + ); + + assert_eq!( + micromark_with_options("$ a$", &math), + "

a

", + "should support math (text) w/ unbalanced padding" + ); + + assert_eq!( + micromark_with_options("$\u{a0}b\u{a0}$", &math), + "

\u{a0}b\u{a0}

", + "should support math (text) w/ non-padding whitespace" + ); + + assert_eq!( + micromark_with_options("$ $\n$ $", &math), + "

\n

", + "should support math (text) w/o data" + ); + + assert_eq!( + micromark_with_options("$$\nfoo\nbar \nbaz\n$$", &math), + "

foo bar baz

", + "should support math (text) w/o line endings (1)" + ); + + assert_eq!( + micromark_with_options("$$\nfoo \n$$", &math), + "

foo

", + "should support math (text) w/o line endings (2)" + ); + + assert_eq!( + micromark_with_options("$foo bar \nbaz$", &math), + "

foo bar baz

", + "should not support whitespace collapsing" + ); + + assert_eq!( + micromark_with_options("$foo\\$bar$", &math), + "

foo\\bar$

", + "should not support character escapes" + ); + + assert_eq!( + micromark_with_options("$$foo$bar$$", &math), + "

foo$bar

", + "should support more dollars" + ); + + assert_eq!( + micromark_with_options("$ foo $$ bar $", &math), + "

foo $$ bar

", + "should support less dollars" + ); + + assert_eq!( + micromark_with_options("*foo$*$", &math), + "

*foo*

", + "should precede over emphasis" + ); + + assert_eq!( + micromark_with_options("[not a $link](/foo$)", &math), + "

[not a link](/foo)

", + "should precede over links" + ); + + assert_eq!( + micromark_with_options("$$", &math), + "

<a href="">$

", + "should have same precedence as HTML (1)" + ); + + assert_eq!( + micromark_with_options( + "
$", + &Options { + allow_dangerous_html: true, + allow_dangerous_protocol: true, + ..math.clone() + } + ), + "

$

", + "should have same precedence as HTML (2)" + ); + + assert_eq!( + micromark_with_options("$$", &math), + "

<http://foo.bar.baz>$

", + "should have same precedence as autolinks (1)" + ); + + assert_eq!( + micromark_with_options("$", &math), + "

http://foo.bar.$baz$

", + "should have same precedence as autolinks (2)" + ); + + assert_eq!( + micromark_with_options("$$$foo$$", &math), + "

$$$foo$$

", + "should not support more dollars before a fence" + ); + + assert_eq!( + micromark_with_options("$foo", &math), + "

$foo

", + "should not support no closing fence (1)" + ); + + assert_eq!( + micromark_with_options("$foo$$bar$$", &math), + "

$foobar

", + "should not support no closing fence (2)" + ); + + assert_eq!( + micromark_with_options("$foo\t\tbar$", &math), + "

foo\t\tbar

", + "should support tabs in code" + ); + + assert_eq!( + micromark_with_options("\\$$x$", &math), + "

$x

", + "should support an escaped initial dollar" + ); +} -- cgit