From ef644f4def7d5cad3fb5307ec5e00fc7b0b025ff Mon Sep 17 00:00:00 2001 From: Titus Wormer Date: Mon, 13 Jun 2022 18:42:36 +0200 Subject: Add basic html (text) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add all states for html (text) * Fix to link paragraph tokens together * Add note about uncovered bug where linking paragraph tokens together doesn’t work 😅 --- tests/html_text.rs | 434 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 434 insertions(+) create mode 100644 tests/html_text.rs (limited to 'tests/html_text.rs') diff --git a/tests/html_text.rs b/tests/html_text.rs new file mode 100644 index 0000000..6ec387b --- /dev/null +++ b/tests/html_text.rs @@ -0,0 +1,434 @@ +extern crate micromark; +use micromark::{micromark, micromark_with_options, CompileOptions}; + +const DANGER: &CompileOptions = &CompileOptions { + allow_dangerous_html: true, + allow_dangerous_protocol: false, +}; + +#[test] +fn html_text() { + assert_eq!( + micromark("a c"), + "

a <b> c

", + "should encode dangerous html by default" + ); + + assert_eq!( + micromark_with_options("", DANGER), + "

", + "should support opening tags" + ); + + assert_eq!( + micromark_with_options("", DANGER), + "

", + "should support self-closing tags" + ); + + // To do: line endings. + // assert_eq!( + // micromark_with_options("", DANGER), + // "

", + // "should support whitespace in tags" + // ); + + // To do: line endings. + // assert_eq!( + // micromark_with_options( + // "\"\"\n_boolean zoop:33=zoop:33 />", + // DANGER + // ), + // "

\"\"\n_boolean zoop:33=zoop:33 />

", + // "should support attributes on tags" + // ); + + assert_eq!( + micromark_with_options("Foo ", DANGER), + "

Foo

", + "should support non-html tags" + ); + + assert_eq!( + micromark_with_options("<33> <__>", DANGER), + "

<33> <__>

", + "should not support nonconforming tag names" + ); + + assert_eq!( + micromark_with_options("
", DANGER), + "

<a h*#ref="hi">

", + "should not support nonconforming attribute names" + ); + + assert_eq!( + micromark_with_options("
", DANGER), + "

<a href="hi'> <a href=hi'>

", + "should not support nonconforming attribute values" + ); + + // To do: line endings. + // assert_eq!( + // micromark_with_options("< a><\nfoo>\n", DANGER), + // "

< a><\nfoo><bar/ >\n<foo bar=baz\nbim!bop />

", + // "should not support nonconforming whitespace" + // ); + + assert_eq!( + micromark_with_options("
", DANGER), + "

<a href='bar'title=title>

", + "should not support missing whitespace" + ); + + assert_eq!( + micromark_with_options("
", DANGER), + "

", + "should support closing tags" + ); + + assert_eq!( + micromark_with_options("", DANGER), + "

</a href="foo">

", + "should not support closing tags w/ attributes" + ); + + // To do: line endings. + // assert_eq!( + // micromark_with_options("foo ", DANGER), + // "

foo

", + // "should support comments" + // ); + + assert_eq!( + micromark_with_options("foo ", DANGER), + "

foo <!-- not a comment -- two hyphens -->

", + "should not support comments w/ two dashes inside" + ); + + assert_eq!( + micromark_with_options("foo foo -->", DANGER), + "

foo <!--> foo -->

", + "should not support nonconforming comments (1)" + ); + + assert_eq!( + micromark_with_options("foo ", DANGER), + "

foo <!-- foo--->

", + "should not support nonconforming comments (2)" + ); + + assert_eq!( + micromark_with_options("foo ", DANGER), + "

foo

", + "should support instructions" + ); + + assert_eq!( + micromark_with_options("foo ", DANGER), + "

foo

", + "should support declarations" + ); + + assert_eq!( + micromark_with_options("foo &<]]>", DANGER), + "

foo &<]]>

", + "should support cdata" + ); + + assert_eq!( + micromark_with_options("foo ", DANGER), + "

foo

", + "should support (ignore) character references" + ); + + assert_eq!( + micromark_with_options("foo ", DANGER), + "

foo

", + "should not support character escapes (1)" + ); + + assert_eq!( + micromark_with_options("", DANGER), + "

<a href=""">

", + "should not support character escapes (2)" + ); + + // Extra: + assert_eq!( + micromark_with_options("foo ", DANGER), + "

foo <!1>

", + "should not support non-comment, non-cdata, and non-named declaration" + ); + + assert_eq!( + micromark_with_options("foo ", DANGER), + "

foo <!-not enough!-->

", + "should not support comments w/ not enough dashes" + ); + + assert_eq!( + micromark_with_options("foo ", DANGER), + "

foo

", + "should support comments that start w/ a dash, if it’s not followed by a greater than" + ); + + assert_eq!( + micromark_with_options("foo ", DANGER), + "

foo <!--->

", + "should not support comments that start w/ `->`" + ); + + assert_eq!( + micromark_with_options("foo ", DANGER), + "

foo

", + "should support `->` in a comment" + ); + + assert_eq!( + micromark_with_options("foo