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 ipsum dolor sit';
let actual = this.md(markdown);
this.assertEqual(actual, expected);
}
test_emphasis() {
let markdown = 'Lorem _ipsum_ dolor _sit_';
let expected = 'Lorem ipsum dolor sit';
let actual = this.md(markdown);
this.assertEqual(actual, expected);
}
test_strongEmphasis_cleanNesting1() {
let markdown = 'Lorem **ipsum *dolor* sit** amet';
let expected = 'Lorem ipsum dolor sit amet';
let actual = this.md(markdown);
this.assertEqual(actual, expected);
}
test_strongEmphasis_cleanNesting2() {
let markdown = 'Lorem *ipsum **dolor** sit* amet';
let expected = 'Lorem ipsum dolor sit amet';
let actual = this.md(markdown);
this.assertEqual(actual, expected);
}
test_strongEmphasis_tightNesting() {
let markdown = 'Lorem ***ipsum*** dolor';
let expected1 = 'Lorem ipsum dolor';
let expected2 = 'Lorem ipsum dolor';
let actual = this.md(markdown);
this.assertTrue(actual == expected1 || actual == expected2);
}
test_strongEmphasis_lopsidedNesting1() {
let markdown = 'Lorem ***ipsum* dolor** sit';
let expected = 'Lorem ipsum dolor sit';
let actual = this.md(markdown);
this.assertEqual(actual, expected);
}
test_strongEmphasis_lopsidedNesting2() {
let markdown = 'Lorem ***ipsum** dolor* sit';
let expected = 'Lorem ipsum dolor sit';
let actual = this.md(markdown);
this.assertEqual(actual, expected);
}
test_strongEmphasis_lopsidedNesting3() {
let markdown = 'Lorem **ipsum *dolor*** sit';
let expected = 'Lorem ipsum dolor sit';
let actual = this.md(markdown);
this.assertEqual(actual, expected);
}
test_strongEmphasis_lopsidedNesting4() {
let markdown = 'Lorem *ipsum **dolor*** sit';
let expected = 'Lorem ipsum dolor sit';
let actual = this.md(markdown);
this.assertEqual(actual, expected);
}
test_inlineCode() {
let markdown = 'Lorem `ipsum` dolor';
let expected = 'Lorem ipsum dolor';
let actual = this.md(markdown);
this.assertEqual(actual, expected);
}
test_inlineCode_withInnerBacktick() {
let markdown = 'Lorem ``ip`su`m`` dolor';
let expected = 'Lorem ip`su`m dolor';
let actual = this.md(markdown);
this.assertEqual(actual, expected);
}
test_strikethrough_double() {
let markdown = 'Lorem ~~ipsum~~ dolor';
let expected = 'Lorem ipsum dolor';
let actual = this.md(markdown);
this.assertEqual(actual, expected);
}
test_subscript() {
let markdown = 'H~2~O';
let expected = 'H2O';
let actual = this.md(markdown);
this.assertEqual(actual, expected);
}
test_superscript() {
let markdown = 'E=mc^2^';
let expected = 'E=mc2';
let actual = this.md(markdown);
this.assertEqual(actual, expected);
}
test_highlight() {
let markdown = 'Lorem ==ipsum== dolor';
let expected = 'Lorem ipsum dolor';
let actual = this.md(markdown);
this.assertEqual(actual, expected);
}
test_underline() {
let markdown = 'Lorem __ipsum__ dolor';
let expected = 'Lorem ipsum 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 ipsum dolor';
let actual = this.md(markdown);
this.assertEqual(actual, expected);
}
test_link_relative() {
let markdown = 'Lorem [ipsum](page.html) dolor';
let expected = 'Lorem ipsum 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 ipsum dolor';
let actual = this.md(markdown);
this.assertEqual(actual, expected);
}
test_link_literal() {
let markdown = 'Lorem dolor';
let expected = 'Lorem https://example.com 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 = 'Lorem ipsum dolor
';
let actual = this.md(markdown);
this.assertEqual(actual, expected);
}
test_link_email() {
let markdown = 'Lorem [ipsum](user@example.com) dolor';
let expected = 'Lorem ipsum 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 ipsum dolor';
let actual = this.md(markdown);
this.assertEqual(actual, expected);
}
test_link_literalEmail() {
let markdown = 'Lorem dolor';
let expected = 'Lorem user@example.com dolor';
let actual = this.md(markdown);
this.assertEqual(actual, expected);
}
test_link_image() {
let markdown = 'Lorem [](page.html) ipsum';
let expected = 'Lorem
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
ipsum';
let actual = this.md(markdown);
this.assertEqual(actual, expected);
}
test_image() {
let markdown = 'Lorem  dolor';
let expected = 'Lorem
dolor';
let actual = this.md(markdown);
this.assertEqual(actual, expected);
}
test_image_noAlt() {
let markdown = 'Lorem  dolor';
let expected = 'Lorem
dolor';
let actual = this.md(markdown);
this.assertEqual(actual, expected);
}
test_image_withTitle() {
let markdown = 'Lorem  dolor';
let expected = 'Lorem
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 = 'Lorem
dolor
';
let actual = this.md(markdown);
this.assertEqual(actual, expected);
}
test_htmlTags() {
let markdown = 'Lorem ipsum dolor';
let expected = 'Lorem ipsum dolor';
let actual = this.md(markdown);
this.assertEqual(actual, expected);
}
}