From 60ea2fd3a09f10fa28bf48575736b47afebf3221 Mon Sep 17 00:00:00 2001 From: Titus Wormer Date: Thu, 16 Jun 2022 19:04:16 +0200 Subject: Add heading (setext) --- tests/heading_setext.rs | 279 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 279 insertions(+) create mode 100644 tests/heading_setext.rs (limited to 'tests/heading_setext.rs') diff --git a/tests/heading_setext.rs b/tests/heading_setext.rs new file mode 100644 index 0000000..92a5b43 --- /dev/null +++ b/tests/heading_setext.rs @@ -0,0 +1,279 @@ +extern crate micromark; +use micromark::micromark; + +#[test] +fn heading_setext() { + // To do: emphasis. + // assert_eq!( + // micromark("Foo *bar*\n========="), + // "

Foo bar

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

Foo bar

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

Foo bar\nbaz

", + // "should support line endings in setext headings" + // ); + + // To do: emphasis, trim. + // 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" + ); + + // To do: trim paragraphs. + // assert_eq!( + // micromark("Foo\n ="), + // "

Foo\n=

", + // "should not support too much whitespace before underline (1)" + // ); + + // To do: trim paragraphs. + // 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)" + ); + + // To do: trim setext. + // 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" + // ); +} -- cgit