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