From acc35758778bfda5cb01951533868eb8baa2e2d2 Mon Sep 17 00:00:00 2001 From: Titus Wormer Date: Wed, 15 Jun 2022 18:17:01 +0200 Subject: Add code (text) --- tests/code_text.rs | 162 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 tests/code_text.rs (limited to 'tests/code_text.rs') diff --git a/tests/code_text.rs b/tests/code_text.rs new file mode 100644 index 0000000..bab6dd6 --- /dev/null +++ b/tests/code_text.rs @@ -0,0 +1,162 @@ +extern crate micromark; +use micromark::{micromark, micromark_with_options, CompileOptions}; + +const DANGER: &CompileOptions = &CompileOptions { + allow_dangerous_html: true, + allow_dangerous_protocol: false, +}; + +#[test] +fn code_text() { + assert_eq!( + micromark("`foo`"), + "

foo

", + "should support code" + ); + + assert_eq!( + micromark("`` foo ` bar ``"), + "

foo ` bar

", + "should support code w/ more accents" + ); + + assert_eq!( + micromark("` `` `"), + "

``

", + "should support code w/ fences inside, and padding" + ); + + assert_eq!( + micromark("` `` `"), + "

``

", + "should support code w/ extra padding" + ); + + assert_eq!( + micromark("` a`"), + "

a

", + "should support code w/ unbalanced padding" + ); + + assert_eq!( + micromark("`\u{a0}b\u{a0}`"), + "

\u{a0}b\u{a0}

", + "should support code w/ non-padding whitespace" + ); + + assert_eq!( + micromark("` `\n` `"), + "

\n

", + "should support code w/o data" + ); + + assert_eq!( + micromark("``\nfoo\nbar \nbaz\n``"), + "

foo bar baz

", + "should support code w/o line endings (1)" + ); + + assert_eq!( + micromark("``\nfoo \n``"), + "

foo

", + "should support code w/o line endings (2)" + ); + + assert_eq!( + micromark("`foo bar \nbaz`"), + "

foo bar baz

", + "should not support whitespace collapsing" + ); + + assert_eq!( + micromark("`foo\\`bar`"), + "

foo\\bar`

", + "should not support character escapes" + ); + + assert_eq!( + micromark("``foo`bar``"), + "

foo`bar

", + "should support more accents" + ); + + assert_eq!( + micromark("` foo `` bar `"), + "

foo `` bar

", + "should support less accents" + ); + + assert_eq!( + micromark("*foo`*`"), + "

*foo*

", + "should precede over emphasis" + ); + + assert_eq!( + micromark("[not a `link](/foo`)"), + "

[not a link](/foo)

", + "should precede over links" + ); + + assert_eq!( + micromark("``"), + "

<a href="">`

", + "should have same precedence as HTML (1)" + ); + + assert_eq!( + micromark_with_options("
`", DANGER), + "

`

", + "should have same precedence as HTML (2)" + ); + + assert_eq!( + micromark("``"), + "

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

", + "should have same precedence as autolinks (1)" + ); + + assert_eq!( + micromark("`"), + "

http://foo.bar.`baz`

", + "should have same precedence as autolinks (2)" + ); + + assert_eq!( + micromark("```foo``"), + "

```foo``

", + "should not support more accents before a fence" + ); + + assert_eq!( + micromark("`foo"), + "

`foo

", + "should not support no closing fence (1)" + ); + + assert_eq!( + micromark("`foo``bar``"), + "

`foobar

", + "should not support no closing fence (2)" + ); + + // Extra: + assert_eq!( + micromark("`foo\t\tbar`"), + "

foo\t\tbar

", + "should support tabs in code" + ); + + assert_eq!( + micromark("\\``x`"), + "

`x

", + "should support an escaped initial grave accent" + ); + + // To do: turning things off. + // assert_eq!( + // micromark("`a`", {extensions: [{disable: {null: ["codeText"]}}]}), + // "

`a`

", + // "should support turning off code (text)" + // ); +} -- cgit