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