use flowmark::config::ListSpacing;
use flowmark::fill_markdown;
fn md(src: &str) -> String {
fill_markdown(src, true, 88, true, false, false, false, None, ListSpacing::Preserve)
}
#[test]
fn test_full_ref_image_inlined() {
let src = "![alt][img]\n\n[img]: https://example.com/img.png\n";
let expected = "\n\n[img]: https://example.com/img.png\n";
assert_eq!(md(src), expected);
}
#[test]
fn test_collapsed_ref_image_inlined() {
let src = "![alt][]\n\n[alt]: https://example.com/img.png\n";
let expected = "\n\n[alt]: https://example.com/img.png\n";
assert_eq!(md(src), expected);
}
#[test]
fn test_shortcut_ref_image_inlined() {
let src = "![alt]\n\n[alt]: https://example.com/img.png\n";
let expected = "\n\n[alt]: https://example.com/img.png\n";
assert_eq!(md(src), expected);
}
#[test]
fn test_full_ref_image_with_title() {
let src = "![alt][img]\n\n[img]: https://example.com/img.png \"My title\"\n";
let expected = "\n\n[img]: https://example.com/img.png \"My title\"\n";
assert_eq!(md(src), expected);
}
#[test]
fn test_full_ref_image_label_with_spaces() {
let src = "![Logo][company logo]\n\n[company logo]: https://example.com/logo.png\n";
let expected =
"\n\n[company logo]: https://example.com/logo.png\n";
assert_eq!(md(src), expected);
}
#[test]
fn test_full_ref_image_label_case_insensitive() {
let src = "![alt][IMG]\n\n[Img]: https://example.com/img.png\n";
let expected = "\n\n[img]: https://example.com/img.png\n";
assert_eq!(md(src), expected);
}
#[test]
fn test_full_ref_image_empty_alt() {
let src = "![][img]\n\n[img]: https://example.com/img.png\n";
let expected = "\n\n[img]: https://example.com/img.png\n";
assert_eq!(md(src), expected);
}
#[test]
fn test_badge_full_ref_image_in_full_ref_link() {
let src = "[![alt][img]][url]\n\n[img]: https://example.com/img.png\n[url]: https://example.com/page\n";
let expected = "[][url]\n\n[img]: https://example.com/img.png\n[url]: https://example.com/page\n";
assert_eq!(md(src), expected);
}
#[test]
fn test_badge_collapsed_ref_image_in_full_ref_link() {
let src =
"[![alt][]][url]\n\n[alt]: https://example.com/img.png\n[url]: https://example.com/page\n";
let expected = "[][url]\n\n[alt]: https://example.com/img.png\n[url]: https://example.com/page\n";
assert_eq!(md(src), expected);
}
#[test]
fn test_badge_shortcut_ref_image_in_full_ref_link() {
let src =
"[![alt]][url]\n\n[alt]: https://example.com/img.png\n[url]: https://example.com/page\n";
let expected = "[][url]\n\n[alt]: https://example.com/img.png\n[url]: https://example.com/page\n";
assert_eq!(md(src), expected);
}
#[test]
fn test_badge_inline_image_in_full_ref_link() {
let src = "[][url]\n\n[url]: https://example.com/page\n";
let expected =
"[][url]\n\n[url]: https://example.com/page\n";
assert_eq!(md(src), expected);
}
#[test]
fn test_full_ref_image_idempotent() {
let once = md("![alt][img]\n\n[img]: https://example.com/img.png\n");
assert_eq!(md(&once), once);
}
#[test]
fn test_badge_full_ref_image_in_full_ref_link_idempotent() {
let once = md(
"[![alt][img]][url]\n\n[img]: https://example.com/img.png\n[url]: https://example.com/page\n",
);
assert_eq!(md(&once), once);
}