extern crate micromark; use micromark::micromark; #[test] fn heading_setext() { assert_eq!( micromark("Foo *bar*\n========="), "

Foo bar

", "should support a heading w/ an equals to (rank of 1)" ); assert_eq!( micromark("Foo *bar*\n---------"), "

Foo bar

", "should support a heading w/ a dash (rank of 2)" ); assert_eq!( micromark("Foo *bar\nbaz*\n===="), "

Foo bar\nbaz

", "should support line endings in setext headings" ); assert_eq!( micromark(" Foo *bar\nbaz*\t\n===="), "

Foo bar\nbaz

", "should not include initial and final whitespace around content" ); assert_eq!( micromark("Foo\n-------------------------"), "

Foo

", "should support long underlines" ); assert_eq!( micromark("Foo\n="), "

Foo

", "should support short underlines" ); assert_eq!( micromark(" Foo\n ==="), "

Foo

", "should support indented content w/ 1 space" ); assert_eq!( micromark(" Foo\n---"), "

Foo

", "should support indented content w/ 2 spaces" ); assert_eq!( micromark(" Foo\n---"), "

Foo

", "should support indented content w/ 3 spaces" ); assert_eq!( micromark(" Foo\n ---"), "
Foo\n---\n
", "should not support too much indented content (1)" ); assert_eq!( micromark(" Foo\n---"), "
Foo\n
\n
", "should not support too much indented content (2)" ); assert_eq!( micromark("Foo\n ---- "), "

Foo

", "should support initial and final whitespace around the underline" ); assert_eq!( micromark("Foo\n ="), "

Foo

", "should support whitespace before underline" ); assert_eq!( micromark("Foo\n ="), "

Foo\n=

", "should not support too much whitespace before underline (1)" ); assert_eq!( micromark("Foo\n\t="), "

Foo\n=

", "should not support too much whitespace before underline (2)" ); assert_eq!( micromark("Foo\n= ="), "

Foo\n= =

", "should not support whitespace in the underline (1)" ); assert_eq!( micromark("Foo\n--- -"), "

Foo

\n
", "should not support whitespace in the underline (2)" ); assert_eq!( micromark("Foo \n-----"), "

Foo

", "should not support a hard break w/ spaces at the end" ); assert_eq!( micromark("Foo\\\n-----"), "

Foo\\

", "should not support a hard break w/ backslash at the end" ); assert_eq!( micromark("`Foo\n----\n`"), "

`Foo

\n

`

", "should precede over inline constructs (1)" ); assert_eq!( micromark(""), "

<a title="a lot

\n

of dashes"/>

", "should precede over inline constructs (2)" ); // To do: block quote. // assert_eq!( // micromark("> Foo\n---"), // "
\n

Foo

\n
\n
", // "should not allow underline to be lazy (1)" // ); // To do: block quote. // assert_eq!( // micromark("> foo\nbar\n==="), // "
\n

foo\nbar\n===

\n
", // "should not allow underline to be lazy (2)" // ); // To do: list. // assert_eq!( // micromark("- Foo\n---"), // "\n
", // "should not allow underline to be lazy (3)" // ); assert_eq!( micromark("Foo\nBar\n---"), "

Foo\nBar

", "should support line endings in setext headings" ); assert_eq!( micromark("---\nFoo\n---\nBar\n---\nBaz"), "
\n

Foo

\n

Bar

\n

Baz

", "should support adjacent setext headings" ); assert_eq!( micromark("\n===="), "

====

", "should not support empty setext headings" ); assert_eq!( micromark("---\n---"), "
\n
", "should prefer other constructs over setext headings (1)" ); // To do: list. // assert_eq!( // micromark("- foo\n-----"), // "\n
", // "should prefer other constructs over setext headings (2)" // ); assert_eq!( micromark(" foo\n---"), "
foo\n
\n
", "should prefer other constructs over setext headings (3)" ); // To do: block quote. // assert_eq!( // micromark("> foo\n-----"), // "
\n

foo

\n
\n
", // "should prefer other constructs over setext headings (4)" // ); assert_eq!( micromark("\\> foo\n------"), "

> foo

", "should support starting w/ character escapes" ); assert_eq!( micromark("Foo\nbar\n---\nbaz"), "

Foo\nbar

\n

baz

", "paragraph and heading interplay (1)" ); assert_eq!( micromark("Foo\n\nbar\n---\nbaz"), "

Foo

\n

bar

\n

baz

", "paragraph and heading interplay (2)" ); assert_eq!( micromark("Foo\nbar\n\n---\n\nbaz"), "

Foo\nbar

\n
\n

baz

", "paragraph and heading interplay (3)" ); assert_eq!( micromark("Foo\nbar\n* * *\nbaz"), "

Foo\nbar

\n
\n

baz

", "paragraph and heading interplay (4)" ); assert_eq!( micromark("Foo\nbar\n\\---\nbaz"), "

Foo\nbar\n---\nbaz

", "paragraph and heading interplay (5)" ); // Extra: assert_eq!( micromark("Foo \nbar\n-----"), "

Foo
\nbar

", "should support a hard break w/ spaces in between" ); assert_eq!( micromark("Foo\\\nbar\n-----"), "

Foo
\nbar

", "should support a hard break w/ backslash in between" ); assert_eq!( micromark("a\n-\nb"), "

a

\n

b

", "should prefer a setext heading over an interrupting list" ); // To do: block quote. // assert_eq!( // micromark("> ===\na"), // "
\n

===\na

\n
", // "should not support lazyness (1)" // ); // To do: block quote. // assert_eq!( // micromark("> a\n==="), // "
\n

a\n===

\n
", // "should not support lazyness (2)" // ); // To do: turning things off. // assert_eq!( // micromark("a\n-", {extensions: [{disable: {null: ["setextUnderline"]}}]}), // "

a\n-

", // "should support turning off setext underlines" // ); }