aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorLibravatar Titus Wormer <tituswormer@gmail.com>2022-06-15 18:17:01 +0200
committerLibravatar Titus Wormer <tituswormer@gmail.com>2022-06-15 18:17:01 +0200
commitacc35758778bfda5cb01951533868eb8baa2e2d2 (patch)
tree82ded1c1f88d04a1c37e40822ad7e5a6bba8a717 /tests
parent75dcb48f78a8a798fde525d2d39e20cffec48e50 (diff)
downloadmarkdown-rs-acc35758778bfda5cb01951533868eb8baa2e2d2.tar.gz
markdown-rs-acc35758778bfda5cb01951533868eb8baa2e2d2.tar.bz2
markdown-rs-acc35758778bfda5cb01951533868eb8baa2e2d2.zip
Add code (text)
Diffstat (limited to 'tests')
-rw-r--r--tests/character_escape.rs11
-rw-r--r--tests/character_reference.rs11
-rw-r--r--tests/code_fenced.rs33
-rw-r--r--tests/code_text.rs162
-rw-r--r--tests/misc_tabs.rs55
5 files changed, 212 insertions, 60 deletions
diff --git a/tests/character_escape.rs b/tests/character_escape.rs
index 5fdc445..aae0b58 100644
--- a/tests/character_escape.rs
+++ b/tests/character_escape.rs
@@ -37,12 +37,11 @@ fn character_escape() {
// "should escape a line break"
// );
- // To do: code (text).
- // assert_eq!(
- // micromark("`` \\[\\` ``"),
- // "<p><code>\\[\\`</code></p>",
- // "should not escape in text code"
- // );
+ assert_eq!(
+ micromark("`` \\[\\` ``"),
+ "<p><code>\\[\\`</code></p>",
+ "should not escape in text code"
+ );
assert_eq!(
micromark(" \\[\\]"),
diff --git a/tests/character_reference.rs b/tests/character_reference.rs
index 5e71792..e351088 100644
--- a/tests/character_reference.rs
+++ b/tests/character_reference.rs
@@ -74,12 +74,11 @@ fn character_reference() {
"should support character references in code language"
);
- // To do: code (text).
- // assert_eq!(
- // micromark("`f&ouml;&ouml;`"),
- // "<p><code>f&amp;ouml;&amp;ouml;</code></p>",
- // "should not support character references in text code"
- // );
+ assert_eq!(
+ micromark("`f&ouml;&ouml;`"),
+ "<p><code>f&amp;ouml;&amp;ouml;</code></p>",
+ "should not support character references in text code"
+ );
assert_eq!(
micromark(" f&ouml;f&ouml;"),
diff --git a/tests/code_fenced.rs b/tests/code_fenced.rs
index 6419f67..82ac088 100644
--- a/tests/code_fenced.rs
+++ b/tests/code_fenced.rs
@@ -15,12 +15,11 @@ fn code_fenced() {
"should support fenced code w/ tildes"
);
- // To do: code (text).
- // assert_eq!(
- // micromark("``\nfoo\n``"),
- // "<p><code>foo</code></p>",
- // "should not support fenced code w/ less than three markers"
- // );
+ assert_eq!(
+ micromark("``\nfoo\n``"),
+ "<p><code>foo</code></p>",
+ "should not support fenced code w/ less than three markers"
+ );
assert_eq!(
micromark("```\naaa\n~~~\n```"),
@@ -119,12 +118,11 @@ fn code_fenced() {
"should not support an indented closing sequence w/ 4 spaces"
);
- // To do: code (text).
- // assert_eq!(
- // micromark("``` ```\naaa"),
- // "<p><code> </code>\naaa</p>",
- // "should not support grave accents in the opening fence after the opening sequence"
- // );
+ assert_eq!(
+ micromark("``` ```\naaa"),
+ "<p><code> </code>\naaa</p>",
+ "should not support grave accents in the opening fence after the opening sequence"
+ );
assert_eq!(
micromark("~~~~~~\naaa\n~~~ ~~\n"),
@@ -163,12 +161,11 @@ fn code_fenced() {
"should support the info string as a `language-` class, but not the meta string"
);
- // To do: code (text).
- // assert_eq!(
- // micromark("``` aa ```\nfoo"),
- // "<p><code>aa</code>\nfoo</p>",
- // "should not support grave accents in the meta string"
- // );
+ assert_eq!(
+ micromark("``` aa ```\nfoo"),
+ "<p><code>aa</code>\nfoo</p>",
+ "should not support grave accents in the meta string"
+ );
assert_eq!(
micromark("~~~ aa ``` ~~~\nfoo\n~~~"),
diff --git a/tests/code_text.rs b/tests/code_text.rs
new file mode 100644
index 0000000..bab6dd6
--- /dev/null
+++ b/tests/code_text.rs
@@ -0,0 +1,162 @@
+extern crate micromark;
+use micromark::{micromark, micromark_with_options, CompileOptions};
+
+const DANGER: &CompileOptions = &CompileOptions {
+ allow_dangerous_html: true,
+ allow_dangerous_protocol: false,
+};
+
+#[test]
+fn code_text() {
+ assert_eq!(
+ micromark("`foo`"),
+ "<p><code>foo</code></p>",
+ "should support code"
+ );
+
+ assert_eq!(
+ micromark("`` foo ` bar ``"),
+ "<p><code>foo ` bar</code></p>",
+ "should support code w/ more accents"
+ );
+
+ assert_eq!(
+ micromark("` `` `"),
+ "<p><code>``</code></p>",
+ "should support code w/ fences inside, and padding"
+ );
+
+ assert_eq!(
+ micromark("` `` `"),
+ "<p><code> `` </code></p>",
+ "should support code w/ extra padding"
+ );
+
+ assert_eq!(
+ micromark("` a`"),
+ "<p><code> a</code></p>",
+ "should support code w/ unbalanced padding"
+ );
+
+ assert_eq!(
+ micromark("`\u{a0}b\u{a0}`"),
+ "<p><code>\u{a0}b\u{a0}</code></p>",
+ "should support code w/ non-padding whitespace"
+ );
+
+ assert_eq!(
+ micromark("` `\n` `"),
+ "<p><code> </code>\n<code> </code></p>",
+ "should support code w/o data"
+ );
+
+ assert_eq!(
+ micromark("``\nfoo\nbar \nbaz\n``"),
+ "<p><code>foo bar baz</code></p>",
+ "should support code w/o line endings (1)"
+ );
+
+ assert_eq!(
+ micromark("``\nfoo \n``"),
+ "<p><code>foo </code></p>",
+ "should support code w/o line endings (2)"
+ );
+
+ assert_eq!(
+ micromark("`foo bar \nbaz`"),
+ "<p><code>foo bar baz</code></p>",
+ "should not support whitespace collapsing"
+ );
+
+ assert_eq!(
+ micromark("`foo\\`bar`"),
+ "<p><code>foo\\</code>bar`</p>",
+ "should not support character escapes"
+ );
+
+ assert_eq!(
+ micromark("``foo`bar``"),
+ "<p><code>foo`bar</code></p>",
+ "should support more accents"
+ );
+
+ assert_eq!(
+ micromark("` foo `` bar `"),
+ "<p><code>foo `` bar</code></p>",
+ "should support less accents"
+ );
+
+ assert_eq!(
+ micromark("*foo`*`"),
+ "<p>*foo<code>*</code></p>",
+ "should precede over emphasis"
+ );
+
+ assert_eq!(
+ micromark("[not a `link](/foo`)"),
+ "<p>[not a <code>link](/foo</code>)</p>",
+ "should precede over links"
+ );
+
+ assert_eq!(
+ micromark("`<a href=\"`\">`"),
+ "<p><code>&lt;a href=&quot;</code>&quot;&gt;`</p>",
+ "should have same precedence as HTML (1)"
+ );
+
+ assert_eq!(
+ micromark_with_options("<a href=\"`\">`", DANGER),
+ "<p><a href=\"`\">`</p>",
+ "should have same precedence as HTML (2)"
+ );
+
+ assert_eq!(
+ micromark("`<http://foo.bar.`baz>`"),
+ "<p><code>&lt;http://foo.bar.</code>baz&gt;`</p>",
+ "should have same precedence as autolinks (1)"
+ );
+
+ assert_eq!(
+ micromark("<http://foo.bar.`baz>`"),
+ "<p><a href=\"http://foo.bar.%60baz\">http://foo.bar.`baz</a>`</p>",
+ "should have same precedence as autolinks (2)"
+ );
+
+ assert_eq!(
+ micromark("```foo``"),
+ "<p>```foo``</p>",
+ "should not support more accents before a fence"
+ );
+
+ assert_eq!(
+ micromark("`foo"),
+ "<p>`foo</p>",
+ "should not support no closing fence (1)"
+ );
+
+ assert_eq!(
+ micromark("`foo``bar``"),
+ "<p>`foo<code>bar</code></p>",
+ "should not support no closing fence (2)"
+ );
+
+ // Extra:
+ assert_eq!(
+ micromark("`foo\t\tbar`"),
+ "<p><code>foo\t\tbar</code></p>",
+ "should support tabs in code"
+ );
+
+ assert_eq!(
+ micromark("\\``x`"),
+ "<p>`<code>x</code></p>",
+ "should support an escaped initial grave accent"
+ );
+
+ // To do: turning things off.
+ // assert_eq!(
+ // micromark("`a`", {extensions: [{disable: {null: ["codeText"]}}]}),
+ // "<p>`a`</p>",
+ // "should support turning off code (text)"
+ // );
+}
diff --git a/tests/misc_tabs.rs b/tests/misc_tabs.rs
index bdd88cf..0d05be9 100644
--- a/tests/misc_tabs.rs
+++ b/tests/misc_tabs.rs
@@ -181,40 +181,35 @@ fn tabs_text() {
"should support character reference resolving to a tab"
);
- // To do: code (text).
- // assert_eq!(
- // micromark("`\tx`"),
- // "<p><code>\tx</code></p>",
- // "should support a tab starting code"
- // );
+ assert_eq!(
+ micromark("`\tx`"),
+ "<p><code>\tx</code></p>",
+ "should support a tab starting code"
+ );
- // To do: code (text).
- // assert_eq!(
- // micromark("`x\t`"),
- // "<p><code>x\t</code></p>",
- // "should support a tab ending code"
- // );
+ assert_eq!(
+ micromark("`x\t`"),
+ "<p><code>x\t</code></p>",
+ "should support a tab ending code"
+ );
- // To do: code (text).
- // assert_eq!(
- // micromark("`\tx\t`"),
- // "<p><code>\tx\t</code></p>",
- // "should support tabs around code"
- // );
+ assert_eq!(
+ micromark("`\tx\t`"),
+ "<p><code>\tx\t</code></p>",
+ "should support tabs around code"
+ );
- // To do: code (text).
- // assert_eq!(
- // micromark("`\tx `"),
- // "<p><code>\tx </code></p>",
- // "should support a tab starting, and a space ending, code"
- // );
+ assert_eq!(
+ micromark("`\tx `"),
+ "<p><code>\tx </code></p>",
+ "should support a tab starting, and a space ending, code"
+ );
- // To do: code (text).
- // assert_eq!(
- // micromark("` x\t`"),
- // "<p><code> x\t</code></p>",
- // "should support a space starting, and a tab ending, code"
- // );
+ assert_eq!(
+ micromark("` x\t`"),
+ "<p><code> x\t</code></p>",
+ "should support a space starting, and a tab ending, code"
+ );
// To do: trim trailing whitespace.
// // Note: CM does not strip it in this case.