extern crate micromark;
use micromark::{micromark, micromark_with_options, Options};
#[test]
fn image() {
assert_eq!(
micromark("[link](/uri \"title\")"),
"
link
",
"should support links"
);
assert_eq!(
micromark(""),
"
",
"should support image w/ resource"
);
// To do: attention, tags in images.
// assert_eq!(
// micromark("[foo *bar*]: train.jpg \"train & tracks\"\n\n![foo *bar*]"),
// "
",
// "should support image as shortcut reference"
// );
// To do: tags in images.
// assert_eq!(
// micromark("](/url2)"),
// "
",
// "should “support” images in images"
// );
// To do: tags in images.
// assert_eq!(
// micromark("](/url2)"),
// "
",
// "should “support” links in images"
// );
// To do: attention, tags in images.
// assert_eq!(
// micromark("[foo *bar*]: train.jpg \"train & tracks\"\n\n![foo *bar*][]"),
// "
",
// "should support “content” in images"
// );
// To do: attention, tags in images.
// assert_eq!(
// micromark("[FOOBAR]: train.jpg \"train & tracks\"\n\n![foo *bar*][foobar]"),
// "
",
// "should support “content” in images"
// );
assert_eq!(
micromark(""),
"
",
"should support images w/o title"
);
assert_eq!(
micromark("My "),
"My 
",
"should support images w/ lots of whitespace"
);
assert_eq!(
micromark("![foo]()"),
"
",
"should support images w/ enclosed destinations"
);
assert_eq!(
micromark(""),
"
",
"should support images w/ empty labels"
);
assert_eq!(
micromark("[bar]: /url\n\n![foo][bar]"),
"
",
"should support full references (1)"
);
assert_eq!(
micromark("[BAR]: /url\n\n![foo][bar]"),
"
",
"should support full references (2)"
);
assert_eq!(
micromark("[foo]: /url \"title\"\n\n![foo][]"),
"
",
"should support collapsed references (1)"
);
// To do: attention, tags in images.
// assert_eq!(
// micromark("[*foo* bar]: /url \"title\"\n\n![*foo* bar][]"),
// "
",
// "should support collapsed references (2)"
// );
assert_eq!(
micromark("[foo]: /url \"title\"\n\n![Foo][]"),
"
",
"should support case-insensitive labels"
);
// To do: trim paragraphs.
// assert_eq!(
// micromark("[foo]: /url \"title\"\n\n![foo] \n[]"),
// "
\n[]
",
// "should not support whitespace between sets of brackets"
// );
assert_eq!(
micromark("[foo]: /url \"title\"\n\n![foo]"),
"
",
"should support shortcut references (1)"
);
// To do: attention, tags in images.
// assert_eq!(
// micromark("[*foo* bar]: /url \"title\"\n\n![*foo* bar]"),
// "
",
// "should support shortcut references (2)"
// );
assert_eq!(
micromark("[[foo]]: /url \"title\"\n\n![[foo]]"),
"[[foo]]: /url "title"
\n![[foo]]
",
"should not support link labels w/ unescaped brackets"
);
assert_eq!(
micromark("[foo]: /url \"title\"\n\n![Foo]"),
"
",
"should support case-insensitive label matching"
);
assert_eq!(
micromark("[foo]: /url \"title\"\n\n!\\[foo]"),
"![foo]
",
"should “support” an escaped bracket instead of an image"
);
assert_eq!(
micromark("[foo]: /url \"title\"\n\n\\![foo]"),
"!foo
",
"should support an escaped bang instead of an image, but still have a link"
);
// Extra
assert_eq!(
micromark("![foo]()"),
"
",
"should support images w/o destination"
);
assert_eq!(
micromark(""),
"
",
"should support images w/ explicit empty destination"
);
assert_eq!(
micromark(""),
"
",
"should support images w/o alt"
);
assert_eq!(
micromark(""),
"
",
"should support images w/ empty title (1)"
);
assert_eq!(
micromark(""),
"
",
"should support images w/ empty title (2)"
);
assert_eq!(
micromark(")"),
"
",
"should support images w/ empty title (3)"
);
assert_eq!(
micromark(""),
"
",
"should support character references in images"
);
// Extra
// See:
assert_eq!(
micromark(""),
"
",
"should ignore an empty title"
);
// To do: turning things off.
// assert_eq!(
// micromark("![x]()", {extensions: [{disable: {null: ["labelStartImage"]}}]}),
// "!x
",
// "should support turning off label start (image)"
// );
assert_eq!(
micromark(")"),
"
",
"should ignore non-http protocols by default"
);
assert_eq!(
micromark_with_options(
")",
&Options {
allow_dangerous_protocol: true,
allow_dangerous_html: false,
default_line_ending: None
}
),
"\")
",
"should allow non-http protocols w/ `allowDangerousProtocol`"
);
}