extern crate micromark;
use micromark::micromark;
#[test]
fn heading_atx() {
assert_eq!(
micromark("# foo"),
"
foo
",
"should support a heading w/ rank 1"
);
assert_eq!(
micromark("## foo"),
"foo
",
"should support a heading w/ rank 2"
);
assert_eq!(
micromark("### foo"),
"foo
",
"should support a heading w/ rank 3"
);
assert_eq!(
micromark("#### foo"),
"foo
",
"should support a heading w/ rank 4"
);
assert_eq!(
micromark("##### foo"),
"foo
",
"should support a heading w/ rank 5"
);
assert_eq!(
micromark("###### foo"),
"foo
",
"should support a heading w/ rank 6"
);
assert_eq!(
micromark("####### foo"),
"####### foo
",
"should not support a heading w/ rank 7"
);
assert_eq!(
micromark("#5 bolt"),
"#5 bolt
",
"should not support a heading for a number sign not followed by whitespace (1)"
);
assert_eq!(
micromark("#hashtag"),
"#hashtag
",
"should not support a heading for a number sign not followed by whitespace (2)"
);
assert_eq!(
micromark("\\## foo"),
"## foo
",
"should not support a heading for an escaped number sign"
);
// To do: attention.
// assert_eq!(
// micromark("# foo *bar* \\*baz\\*"),
// "foo bar *baz*
",
// "should support text content in headings"
// );
assert_eq!(
micromark("# foo "),
"foo
",
"should support arbitrary initial and final whitespace"
);
assert_eq!(
micromark(" ### foo"),
"foo
",
"should support an initial space"
);
assert_eq!(
micromark(" ## foo"),
"foo
",
"should support two initial spaces"
);
assert_eq!(
micromark(" # foo"),
"foo
",
"should support three initial spaces"
);
assert_eq!(
micromark(" # foo"),
"# foo\n
",
"should not support four initial spaces"
);
// To do: trimming paragraphs.
// assert_eq!(
// micromark("foo\n # bar"),
// "foo\n# bar
",
// "should not support four initial spaces when interrupting"
// );
assert_eq!(
micromark("## foo ##"),
"foo
",
"should support a closing sequence (1)"
);
assert_eq!(
micromark(" ### bar ###"),
"bar
",
"should support a closing sequence (2)"
);
assert_eq!(
micromark("# foo ##################################"),
"foo
",
"should support a closing sequence w/ an arbitrary number of number signs (1)"
);
assert_eq!(
micromark("##### foo ##"),
"foo
",
"should support a closing sequence w/ an arbitrary number of number signs (2)"
);
assert_eq!(
micromark("### foo ### "),
"foo
",
"should support trailing whitespace after a closing sequence"
);
assert_eq!(
micromark("### foo ### b"),
"foo ### b
",
"should not support other content after a closing sequence"
);
assert_eq!(
micromark("# foo#"),
"foo#
",
"should not support a closing sequence w/o whitespace before it"
);
assert_eq!(
micromark("### foo \\###"),
"foo ###
",
"should not support an “escaped” closing sequence (1)"
);
assert_eq!(
micromark("## foo #\\##"),
"foo ###
",
"should not support an “escaped” closing sequence (2)"
);
assert_eq!(
micromark("# foo \\#"),
"foo #
",
"should not support an “escaped” closing sequence (3)"
);
assert_eq!(
micromark("****\n## foo\n****"),
"
\nfoo
\n
",
"should support atx headings when not surrounded by blank lines"
);
assert_eq!(
micromark("Foo bar\n# baz\nBar foo"),
"Foo bar
\nbaz
\nBar foo
",
"should support atx headings interrupting paragraphs"
);
assert_eq!(
micromark("## \n#\n### ###"),
"\n\n",
"should support empty atx headings"
);
// To do: block quote.
// assert_eq!(
// micromark("> #\na"),
// "\n\n
\na
",
// "should not support lazyness (1)"
// );
// assert_eq!(
// micromark("> a\n#"),
// "\na
\n
\n",
// "should not support lazyness (2)"
// );
// Extensions:
// assert_eq!(
// micromark("# a", {extensions: [{disable: {null: ["headingAtx"]}}]}),
// "# a
",
// "should support turning off heading (atx)"
// );
}