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.
    // assert_eq!(
    //     micromark("[foo *bar*]: train.jpg \"train & tracks\"\n\n![foo *bar*]"),
    //     "
",
    //     "should support image as shortcut reference"
    // );
    assert_eq!(
        micromark("](/url2)"),
        "
",
        "should “support” images in images"
    );
    assert_eq!(
        micromark("](/url2)"),
        "
",
        "should “support” links in images"
    );
    // To do: attention.
    // assert_eq!(
    //     micromark("[foo *bar*]: train.jpg \"train & tracks\"\n\n![foo *bar*][]"),
    //     "
",
    //     "should support “content” in images"
    // );
    // To do: attention.
    // 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.
    // 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"
    );
    assert_eq!(
        micromark("[foo]: /url \"title\"\n\n![foo] \n[]"),
        " \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.
    // 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`"
    );
}