| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- class InlineTests extends BaseTest {
- /** @type {Markdown} */
- parser;
- md(markdown) {
- return normalizeWhitespace(this.parser.toHTML(markdown));
- }
-
- setUp() {
- this.parser = Markdown.completeParser;
- }
-
- test_simpleText() {
- let markdown = 'Lorem ipsum';
- let expected = 'Lorem ipsum';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_strong() {
- let markdown = 'Lorem **ipsum** dolor **sit**';
- let expected = 'Lorem <strong>ipsum</strong> dolor <strong>sit</strong>';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_emphasis() {
- let markdown = 'Lorem _ipsum_ dolor _sit_';
- let expected = 'Lorem <em>ipsum</em> dolor <em>sit</em>';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_strongEmphasis_cleanNesting1() {
- let markdown = 'Lorem **ipsum *dolor* sit** amet';
- let expected = 'Lorem <strong>ipsum <em>dolor</em> sit</strong> amet';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_strongEmphasis_cleanNesting2() {
- let markdown = 'Lorem *ipsum **dolor** sit* amet';
- let expected = 'Lorem <em>ipsum <strong>dolor</strong> sit</em> amet';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_strongEmphasis_tightNesting() {
- let markdown = 'Lorem ***ipsum*** dolor';
- let expected = 'Lorem <strong><em>ipsum</em></strong> dolor';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_strongEmphasis_lopsidedNesting1() {
- let markdown = 'Lorem ***ipsum* dolor** sit';
- let expected = 'Lorem <strong><em>ipsum</em> dolor</strong> sit';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_strongEmphasis_lopsidedNesting2() {
- let markdown = 'Lorem ***ipsum** dolor* sit';
- let expected = 'Lorem <em><strong>ipsum</strong> dolor</em> sit';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_strongEmphasis_lopsidedNesting3() {
- let markdown = 'Lorem **ipsum *dolor*** sit';
- let expected = 'Lorem <strong>ipsum <em>dolor</em></strong> sit';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_strongEmphasis_lopsidedNesting4() {
- let markdown = 'Lorem *ipsum **dolor*** sit';
- let expected = 'Lorem <em>ipsum <strong>dolor</strong></em> sit';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_inlineCode() {
- let markdown = 'Lorem `ipsum` dolor';
- let expected = 'Lorem <code>ipsum</code> dolor';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_inlineCode_withInnerBacktick() {
- let markdown = 'Lorem ``ip`su`m`` dolor';
- let expected = 'Lorem <code>ip`su`m</code> dolor';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_strikethrough_double() {
- let markdown = 'Lorem ~~ipsum~~ dolor';
- let expected = 'Lorem <s>ipsum</s> dolor';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_subscript() {
- let markdown = 'H~2~O';
- let expected = 'H<sub>2</sub>O';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_superscript() {
- let markdown = 'E=mc^2^';
- let expected = 'E=mc<sup>2</sup>';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_highlight() {
- let markdown = 'Lorem ==ipsum== dolor';
- let expected = 'Lorem <mark>ipsum</mark> dolor';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_underline() {
- let markdown = 'Lorem __ipsum__ dolor';
- let expected = 'Lorem <u>ipsum</u> dolor';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_link_fullyQualified() {
- let markdown = 'Lorem [ipsum](https://example.com/path/page.html) dolor';
- let expected = 'Lorem <a href="https://example.com/path/page.html">ipsum</a> dolor';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_link_relative() {
- let markdown = 'Lorem [ipsum](page.html) dolor';
- let expected = 'Lorem <a href="page.html">ipsum</a> dolor';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_link_title() {
- let markdown = 'Lorem [ipsum](page.html "link title") dolor';
- let expected = 'Lorem <a href="page.html" title="link title">ipsum</a> dolor';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_link_literal() {
- let markdown = 'Lorem <https://example.com> dolor';
- let expected = 'Lorem <a href="https://example.com">https://example.com</a> dolor';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_link_ref() {
- let markdown = "Lorem [ipsum][ref] dolor\n\n[ref]: https://example.com";
- let expected = '<p>Lorem <a href="https://example.com">ipsum</a> dolor</p>';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_link_email() {
- let markdown = 'Lorem [ipsum](user@example.com) dolor';
- let expected = 'Lorem <a href="mailto:user@example.com">ipsum</a> dolor';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_link_email_withTitle() {
- let markdown = 'Lorem [ipsum](user@example.com "title") dolor';
- let expected = 'Lorem <a href="mailto:user@example.com" title="title">ipsum</a> dolor';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_link_literalEmail() {
- let markdown = 'Lorem <user@example.com> dolor';
- let expected = 'Lorem <a href="mailto:user@example.com">user@example.com</a> dolor';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_link_image() {
- let markdown = 'Lorem [](page.html) ipsum';
- let expected = 'Lorem <a href="page.html"><img src="image.jpg" alt="alt"></a> ipsum';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_link_image_complex() {
- let markdown = 'Lorem [![alt] (image.jpg "image title")] (page.html "link title") ipsum';
- let expected = 'Lorem <a href="page.html" title="link title"><img src="image.jpg" alt="alt" title="image title"></a> ipsum';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_image() {
- let markdown = 'Lorem  dolor';
- let expected = 'Lorem <img src="image.jpg" alt="alt text"> dolor';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_image_noAlt() {
- let markdown = 'Lorem  dolor';
- let expected = 'Lorem <img src="image.jpg"> dolor';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_image_withTitle() {
- let markdown = 'Lorem  dolor';
- let expected = 'Lorem <img src="image.jpg" alt="alt text" title="image title"> dolor';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_image_ref() {
- let markdown = 'Lorem ![alt text][ref] dolor\n\n' +
- '[ref]: image.jpg "image title"';
- let expected = '<p>Lorem <img src="image.jpg" alt="alt text" title="image title"> dolor</p>';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
-
- test_htmlTags() {
- let markdown = 'Lorem <strong title=\'with " quote\' id="with \' apostrophe" lang=unquoted translate forbidden="true">ipsum</strong> dolor';
- let expected = 'Lorem <strong title="with " quote" id="with \' apostrophe" lang="unquoted" translate>ipsum</strong> dolor';
- let actual = this.md(markdown);
- this.assertEqual(actual, expected);
- }
- }
|