class UtilsTests extends BaseTest { test_stripIndent() { this.assertEqual(MDUtils.stripIndent(''), ''); this.assertEqual(MDUtils.stripIndent(' '), ''); this.assertEqual(MDUtils.stripIndent('foo'), 'foo'); this.assertEqual(MDUtils.stripIndent(' foo'), 'foo'); this.assertEqual(MDUtils.stripIndent(' foo'), 'foo'); this.assertEqual(MDUtils.stripIndent(' foo'), 'foo'); this.assertEqual(MDUtils.stripIndent(' foo'), 'foo'); this.assertEqual(MDUtils.stripIndent(' foo'), ' foo'); this.assertEqual(MDUtils.stripIndent('\tfoo'), 'foo'); this.assertEqual(MDUtils.stripIndent('\t\tfoo'), '\tfoo'); this.assertEqual(MDUtils.stripIndent('\t\tfoo', 2), 'foo'); this.assertEqual(MDUtils.stripIndent(' foo', 2), 'foo'); } test_countIndents() { this.assertEqual(MDUtils.countIndents(''), 0); this.assertEqual(MDUtils.countIndents(' '), 1); this.assertEqual(MDUtils.countIndents(' '), 1); this.assertEqual(MDUtils.countIndents('foo'), 0); this.assertEqual(MDUtils.countIndents('foo'), 0); this.assertEqual(MDUtils.countIndents(' foo'), 1); this.assertEqual(MDUtils.countIndents(' foo'), 1); this.assertEqual(MDUtils.countIndents(' foo'), 1); this.assertEqual(MDUtils.countIndents(' foo'), 1); this.assertEqual(MDUtils.countIndents(' foo'), 2); this.assertEqual(MDUtils.countIndents('\tfoo'), 1); this.assertEqual(MDUtils.countIndents('\t\tfoo'), 2); this.assertEqual(MDUtils.countIndents('', true), 0); this.assertEqual(MDUtils.countIndents(' ', true), 0); this.assertEqual(MDUtils.countIndents(' ', true), 1); this.assertEqual(MDUtils.countIndents('foo', true), 0); this.assertEqual(MDUtils.countIndents(' foo', true), 0); this.assertEqual(MDUtils.countIndents(' foo', true), 0); this.assertEqual(MDUtils.countIndents(' foo', true), 0); this.assertEqual(MDUtils.countIndents(' foo', true), 1); this.assertEqual(MDUtils.countIndents(' foo', true), 1); this.assertEqual(MDUtils.countIndents('\tfoo', true), 1); this.assertEqual(MDUtils.countIndents('\t\tfoo', true), 2); } test_tokenizeLabel() { // Escapes are preserved this.assertEqual(MDToken.tokenizeLabel('[foo] bar'), [ '[foo]', 'foo' ]); this.assertEqual(MDToken.tokenizeLabel('[foo\\[] bar'), [ '[foo\\[]', 'foo\\[' ]); this.assertEqual(MDToken.tokenizeLabel('[foo\\]] bar'), [ '[foo\\]]', 'foo\\]' ]); this.assertEqual(MDToken.tokenizeLabel('[foo[]] bar'), [ '[foo[]]', 'foo[]' ]); this.assertEqual(MDToken.tokenizeLabel('[foo\\(] bar'), [ '[foo\\(]', 'foo\\(' ]); this.assertEqual(MDToken.tokenizeLabel('[foo\\)] bar'), [ '[foo\\)]', 'foo\\)' ]); this.assertEqual(MDToken.tokenizeLabel('[foo()] bar'), [ '[foo()]', 'foo()' ]); this.assertEqual(MDToken.tokenizeLabel('foo bar'), null); this.assertEqual(MDToken.tokenizeLabel('[foo\\] bar'), null); this.assertEqual(MDToken.tokenizeLabel('[foo bar'), null); this.assertEqual(MDToken.tokenizeLabel('[foo[] bar'), null); } test_tokenizeURL() { this.assertEqual(MDToken.tokenizeURL('(page.html) foo'), [ '(page.html)', 'page.html', null ]); this.assertEqual(MDToken.tokenizeURL('(page.html "link title") foo'), [ '(page.html "link title")', 'page.html', 'link title' ]); this.assertEqual(MDToken.tokenizeURL('(https://example.com/path/page.html?query=foo&bar=baz#fragment) foo'), [ '(https://example.com/path/page.html?query=foo&bar=baz#fragment)', 'https://example.com/path/page.html?query=foo&bar=baz#fragment', null ]); this.assertEqual(MDToken.tokenizeURL('page.html foo'), null); this.assertEqual(MDToken.tokenizeURL('(page.html foo'), null); this.assertEqual(MDToken.tokenizeURL('page.html) foo'), null); this.assertEqual(MDToken.tokenizeURL('(page.html "title) foo'), null); this.assertEqual(MDToken.tokenizeURL('(page .html) foo'), null); this.assertEqual(MDToken.tokenizeURL('(user@example.com) foo'), null); this.assertEqual(MDToken.tokenizeURL('(user@example.com "title") foo'), null); } test_tokenizeEmail() { this.assertEqual(MDToken.tokenizeEmail('(user@example.com)'), [ '(user@example.com)', 'user@example.com', null ]); this.assertEqual(MDToken.tokenizeEmail('(user@example.com "link title")'), [ '(user@example.com "link title")', 'user@example.com', 'link title' ]); this.assertEqual(MDToken.tokenizeEmail('(https://example.com) foo'), null); this.assertEqual(MDToken.tokenizeEmail('(https://example.com "link title") foo'), null); this.assertEqual(MDToken.tokenizeEmail('(user@example.com "link title) foo'), null); this.assertEqual(MDToken.tokenizeEmail('(user@example.com foo'), null); this.assertEqual(MDToken.tokenizeEmail('user@example.com) foo'), null); } }