diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/character_escape.rs | 11 | ||||
-rw-r--r-- | tests/character_reference.rs | 11 | ||||
-rw-r--r-- | tests/code_fenced.rs | 33 | ||||
-rw-r--r-- | tests/code_text.rs | 162 | ||||
-rw-r--r-- | tests/misc_tabs.rs | 55 |
5 files changed, 212 insertions, 60 deletions
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("`` \\[\\` ``"), - // "<p><code>\\[\\`</code></p>", - // "should not escape in text code" - // ); + assert_eq!( + micromark("`` \\[\\` ``"), + "<p><code>\\[\\`</code></p>", + "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öö`"), - // "<p><code>f&ouml;&ouml;</code></p>", - // "should not support character references in text code" - // ); + assert_eq!( + micromark("`föö`"), + "<p><code>f&ouml;&ouml;</code></p>", + "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``"), - // "<p><code>foo</code></p>", - // "should not support fenced code w/ less than three markers" - // ); + assert_eq!( + micromark("``\nfoo\n``"), + "<p><code>foo</code></p>", + "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"), - // "<p><code> </code>\naaa</p>", - // "should not support grave accents in the opening fence after the opening sequence" - // ); + assert_eq!( + micromark("``` ```\naaa"), + "<p><code> </code>\naaa</p>", + "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"), - // "<p><code>aa</code>\nfoo</p>", - // "should not support grave accents in the meta string" - // ); + assert_eq!( + micromark("``` aa ```\nfoo"), + "<p><code>aa</code>\nfoo</p>", + "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`"), + "<p><code>foo</code></p>", + "should support code" + ); + + assert_eq!( + micromark("`` foo ` bar ``"), + "<p><code>foo ` bar</code></p>", + "should support code w/ more accents" + ); + + assert_eq!( + micromark("` `` `"), + "<p><code>``</code></p>", + "should support code w/ fences inside, and padding" + ); + + assert_eq!( + micromark("` `` `"), + "<p><code> `` </code></p>", + "should support code w/ extra padding" + ); + + assert_eq!( + micromark("` a`"), + "<p><code> a</code></p>", + "should support code w/ unbalanced padding" + ); + + assert_eq!( + micromark("`\u{a0}b\u{a0}`"), + "<p><code>\u{a0}b\u{a0}</code></p>", + "should support code w/ non-padding whitespace" + ); + + assert_eq!( + micromark("` `\n` `"), + "<p><code> </code>\n<code> </code></p>", + "should support code w/o data" + ); + + assert_eq!( + micromark("``\nfoo\nbar \nbaz\n``"), + "<p><code>foo bar baz</code></p>", + "should support code w/o line endings (1)" + ); + + assert_eq!( + micromark("``\nfoo \n``"), + "<p><code>foo </code></p>", + "should support code w/o line endings (2)" + ); + + assert_eq!( + micromark("`foo bar \nbaz`"), + "<p><code>foo bar baz</code></p>", + "should not support whitespace collapsing" + ); + + assert_eq!( + micromark("`foo\\`bar`"), + "<p><code>foo\\</code>bar`</p>", + "should not support character escapes" + ); + + assert_eq!( + micromark("``foo`bar``"), + "<p><code>foo`bar</code></p>", + "should support more accents" + ); + + assert_eq!( + micromark("` foo `` bar `"), + "<p><code>foo `` bar</code></p>", + "should support less accents" + ); + + assert_eq!( + micromark("*foo`*`"), + "<p>*foo<code>*</code></p>", + "should precede over emphasis" + ); + + assert_eq!( + micromark("[not a `link](/foo`)"), + "<p>[not a <code>link](/foo</code>)</p>", + "should precede over links" + ); + + assert_eq!( + micromark("`<a href=\"`\">`"), + "<p><code><a href="</code>">`</p>", + "should have same precedence as HTML (1)" + ); + + assert_eq!( + micromark_with_options("<a href=\"`\">`", DANGER), + "<p><a href=\"`\">`</p>", + "should have same precedence as HTML (2)" + ); + + assert_eq!( + micromark("`<http://foo.bar.`baz>`"), + "<p><code><http://foo.bar.</code>baz>`</p>", + "should have same precedence as autolinks (1)" + ); + + assert_eq!( + micromark("<http://foo.bar.`baz>`"), + "<p><a href=\"http://foo.bar.%60baz\">http://foo.bar.`baz</a>`</p>", + "should have same precedence as autolinks (2)" + ); + + assert_eq!( + micromark("```foo``"), + "<p>```foo``</p>", + "should not support more accents before a fence" + ); + + assert_eq!( + micromark("`foo"), + "<p>`foo</p>", + "should not support no closing fence (1)" + ); + + assert_eq!( + micromark("`foo``bar``"), + "<p>`foo<code>bar</code></p>", + "should not support no closing fence (2)" + ); + + // Extra: + assert_eq!( + micromark("`foo\t\tbar`"), + "<p><code>foo\t\tbar</code></p>", + "should support tabs in code" + ); + + assert_eq!( + micromark("\\``x`"), + "<p>`<code>x</code></p>", + "should support an escaped initial grave accent" + ); + + // To do: turning things off. + // assert_eq!( + // micromark("`a`", {extensions: [{disable: {null: ["codeText"]}}]}), + // "<p>`a`</p>", + // "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`"), - // "<p><code>\tx</code></p>", - // "should support a tab starting code" - // ); + assert_eq!( + micromark("`\tx`"), + "<p><code>\tx</code></p>", + "should support a tab starting code" + ); - // To do: code (text). - // assert_eq!( - // micromark("`x\t`"), - // "<p><code>x\t</code></p>", - // "should support a tab ending code" - // ); + assert_eq!( + micromark("`x\t`"), + "<p><code>x\t</code></p>", + "should support a tab ending code" + ); - // To do: code (text). - // assert_eq!( - // micromark("`\tx\t`"), - // "<p><code>\tx\t</code></p>", - // "should support tabs around code" - // ); + assert_eq!( + micromark("`\tx\t`"), + "<p><code>\tx\t</code></p>", + "should support tabs around code" + ); - // To do: code (text). - // assert_eq!( - // micromark("`\tx `"), - // "<p><code>\tx </code></p>", - // "should support a tab starting, and a space ending, code" - // ); + assert_eq!( + micromark("`\tx `"), + "<p><code>\tx </code></p>", + "should support a tab starting, and a space ending, code" + ); - // To do: code (text). - // assert_eq!( - // micromark("` x\t`"), - // "<p><code> x\t</code></p>", - // "should support a space starting, and a tab ending, code" - // ); + assert_eq!( + micromark("` x\t`"), + "<p><code> x\t</code></p>", + "should support a space starting, and a tab ending, code" + ); // To do: trim trailing whitespace. // // Note: CM does not strip it in this case. |