text: // @flow
  import assert from 'assert';
  
  import {escapeMarkdown, md} from '../';
  
  describe('escapeMarkdown', () => {
    it('returns an escaped string 01', () => {
      assert.strictEqual('\\*test\\*', escapeMarkdown('*test*'));
    });
  
    it('returns an escaped string 02', () => {
      assert.strictEqual('\\_test\\_', escapeMarkdown('_test_'));
    });
  
    it('returns an escaped string 03', () => {
      assert.strictEqual('\\~test\\~', escapeMarkdown('~test~'));
    });
  
    it('returns an escaped string 04', () => {
      assert.strictEqual('\\*\\_\\~test\\~\\_\\*', escapeMarkdown('*_~test~_*'));
    });
  
    it('returns an escaped string with backslash 01', () => {
      assert.strictEqual('\\\\test\\\\', escapeMarkdown('\\test\\'));
    });
  
    it('returns an escaped string with backslash 02', () => {
      assert.strictEqual('\\\\\\*test\\*\\\\', escapeMarkdown('\\*test*\\'));
    });
  });
  
  describe('md tagged template literal', () => {
    it('bold placeholder', () => {
      assert.strictEqual(
        '*Test*: **\\_abc\\_**',
        md`*Test*: ${md.bold('_abc_')}`,
      );
    });
  
    it('italic placeholder', () => {
      assert.strictEqual(
        '*Test*: _\\_abc\\__',
        md`*Test*: ${md.italic('_abc_')}`,
      );
    });
  
    it('underline placeholder', () => {
      assert.strictEqual(
        '*Test*: __\\_abc\\___',
        md`*Test*: ${md.underline('_abc_')}`,
      );
    });
  
    it('strikethrough placeholder', () => {
      assert.strictEqual(
        '*Test*: ~~\\_abc\\_~~',
        md`*Test*: ${md.strikethrough('_abc_')}`,
      );
    });
  
    it('escapes only placeholders', () => {
      assert.strictEqual('*Test*: \\_abc\\_', md`*Test*: ${'_abc_'}`);
    });
  
    it('behaves like native template literal', () => {
      let v = {
        toString() {
          return 'a';
        },
        // $FlowFixMe[invalid-computed-prop]
        [Symbol.toPrimitive]() {
          return 'b';
        },
      };
      assert.strictEqual('Test: b', md`Test: ${v}`);
    });
  
    it('supports null and undefined', () => {
      assert.strictEqual('Test: undefined null', md`Test: ${undefined} ${null}`);
    });
  });
  