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/character_escape.rs | 11 ++- tests/character_reference.rs | 11 ++- tests/code_fenced.rs | 33 ++++----- tests/code_text.rs | 162 +++++++++++++++++++++++++++++++++++++++++++ tests/misc_tabs.rs | 55 +++++++-------- 5 files changed, 212 insertions(+), 60 deletions(-) create mode 100644 tests/code_text.rs (limited to 'tests') diff --git a/tests/character_escape.rs b/tests/character_escape.rs index 5fdc445..aae0b58 100644 --- a/tests/character_escape.rs +++ b/tests/character_escape.rs @@ -37,12 +37,11 @@ fn character_escape() { // "should escape a line break" // ); - // To do: code (text). - // assert_eq!( - // micromark("`` \\[\\` ``"), - // "

\\[\\`

", - // "should not escape in text code" - // ); + assert_eq!( + micromark("`` \\[\\` ``"), + "

\\[\\`

", + "should not escape in text code" + ); assert_eq!( micromark(" \\[\\]"), diff --git a/tests/character_reference.rs b/tests/character_reference.rs index 5e71792..e351088 100644 --- a/tests/character_reference.rs +++ b/tests/character_reference.rs @@ -74,12 +74,11 @@ fn character_reference() { "should support character references in code language" ); - // To do: code (text). - // assert_eq!( - // micromark("`föö`"), - // "

föö

", - // "should not support character references in text code" - // ); + assert_eq!( + micromark("`föö`"), + "

föö

", + "should not support character references in text code" + ); assert_eq!( micromark(" föfö"), diff --git a/tests/code_fenced.rs b/tests/code_fenced.rs index 6419f67..82ac088 100644 --- a/tests/code_fenced.rs +++ b/tests/code_fenced.rs @@ -15,12 +15,11 @@ fn code_fenced() { "should support fenced code w/ tildes" ); - // To do: code (text). - // assert_eq!( - // micromark("``\nfoo\n``"), - // "

foo

", - // "should not support fenced code w/ less than three markers" - // ); + assert_eq!( + micromark("``\nfoo\n``"), + "

foo

", + "should not support fenced code w/ less than three markers" + ); assert_eq!( micromark("```\naaa\n~~~\n```"), @@ -119,12 +118,11 @@ fn code_fenced() { "should not support an indented closing sequence w/ 4 spaces" ); - // To do: code (text). - // assert_eq!( - // micromark("``` ```\naaa"), - // "

\naaa

", - // "should not support grave accents in the opening fence after the opening sequence" - // ); + assert_eq!( + micromark("``` ```\naaa"), + "

\naaa

", + "should not support grave accents in the opening fence after the opening sequence" + ); assert_eq!( micromark("~~~~~~\naaa\n~~~ ~~\n"), @@ -163,12 +161,11 @@ fn code_fenced() { "should support the info string as a `language-` class, but not the meta string" ); - // To do: code (text). - // assert_eq!( - // micromark("``` aa ```\nfoo"), - // "

aa\nfoo

", - // "should not support grave accents in the meta string" - // ); + assert_eq!( + micromark("``` aa ```\nfoo"), + "

aa\nfoo

", + "should not support grave accents in the meta string" + ); assert_eq!( micromark("~~~ aa ``` ~~~\nfoo\n~~~"), 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)" + // ); +} diff --git a/tests/misc_tabs.rs b/tests/misc_tabs.rs index bdd88cf..0d05be9 100644 --- a/tests/misc_tabs.rs +++ b/tests/misc_tabs.rs @@ -181,40 +181,35 @@ fn tabs_text() { "should support character reference resolving to a tab" ); - // To do: code (text). - // assert_eq!( - // micromark("`\tx`"), - // "

\tx

", - // "should support a tab starting code" - // ); + assert_eq!( + micromark("`\tx`"), + "

\tx

", + "should support a tab starting code" + ); - // To do: code (text). - // assert_eq!( - // micromark("`x\t`"), - // "

x\t

", - // "should support a tab ending code" - // ); + assert_eq!( + micromark("`x\t`"), + "

x\t

", + "should support a tab ending code" + ); - // To do: code (text). - // assert_eq!( - // micromark("`\tx\t`"), - // "

\tx\t

", - // "should support tabs around code" - // ); + assert_eq!( + micromark("`\tx\t`"), + "

\tx\t

", + "should support tabs around code" + ); - // To do: code (text). - // assert_eq!( - // micromark("`\tx `"), - // "

\tx

", - // "should support a tab starting, and a space ending, code" - // ); + assert_eq!( + micromark("`\tx `"), + "

\tx

", + "should support a tab starting, and a space ending, code" + ); - // To do: code (text). - // assert_eq!( - // micromark("` x\t`"), - // "

x\t

", - // "should support a space starting, and a tab ending, code" - // ); + assert_eq!( + micromark("` x\t`"), + "

x\t

", + "should support a space starting, and a tab ending, code" + ); // To do: trim trailing whitespace. // // Note: CM does not strip it in this case. -- cgit