import { htmlentity } from './htmlentity'; import { some } from '../../combinator'; import { input } from '../context'; import { inspect } from '../../debug.test'; describe('Unit: parser/inline/htmlentity', () => { describe('htmlentity', () => { const parser = some(htmlentity); it('invalid', () => { assert.deepStrictEqual(inspect(parser, input('')), undefined); assert.deepStrictEqual(inspect(parser, input('&')), [['&'], '']); assert.deepStrictEqual(inspect(parser, input('&')), [['&'], '']); assert.deepStrictEqual(inspect(parser, input('&;')), [['&'], ';']); assert.deepStrictEqual(inspect(parser, input('& ;')), [['&'], ' ;']); assert.deepStrictEqual(inspect(parser, input('&\n;')), [['&'], '\n;']); assert.deepStrictEqual(inspect(parser, input('&a;')), [['&a;'], '']); assert.deepStrictEqual(inspect(parser, input('&#;')), [['&'], '#;']); assert.deepStrictEqual(inspect(parser, input('&#g;')), [['&'], '#g;']); assert.deepStrictEqual(inspect(parser, input('&#x;')), [['&'], '#x;']); assert.deepStrictEqual(inspect(parser, input('&#-1;')), [['&'], '#-1;']); assert.deepStrictEqual(inspect(parser, input('&&;')), [['&', '&'], ';']); assert.deepStrictEqual(inspect(parser, input('&*&*')), [['&'], '*&*']); assert.deepStrictEqual(inspect(parser, input('&<;')), [['&'], '<;']); assert.deepStrictEqual(inspect(parser, input('&<>;')), [['&'], '<>;']); assert.deepStrictEqual(inspect(parser, input('&>;')), [['&'], '>;']); assert.deepStrictEqual(inspect(parser, input('#')), [['&'], '#35;']); assert.deepStrictEqual(inspect(parser, input('Ӓ')), [['&'], '#1234;']); assert.deepStrictEqual(inspect(parser, input('Ϡ')), [['&'], '#992;']); assert.deepStrictEqual(inspect(parser, input('�')), [['&'], '#98765432;']); assert.deepStrictEqual(inspect(parser, input('�')), [['&'], '#0;']); assert.deepStrictEqual(inspect(parser, input('"')), [['&'], '#X22;']); assert.deepStrictEqual(inspect(parser, input('ആ')), [['&'], '#XD06;']); assert.deepStrictEqual(inspect(parser, input('ಫ')), [['&'], '#xcab;']); assert.deepStrictEqual(inspect(parser, input(' ')), [['&NewLine;'], '']); assert.deepStrictEqual(inspect(parser, input(' &')), undefined); }); it('entity', () => { assert.deepStrictEqual(inspect(parser, input(' ')), [['\u00A0'], '']); assert.deepStrictEqual(inspect(parser, input('&')), [['&'], '']); assert.deepStrictEqual(inspect(parser, input('©')), [['©'], '']); assert.deepStrictEqual(inspect(parser, input('Æ')), [['Æ'], '']); assert.deepStrictEqual(inspect(parser, input('Ď')), [['Ď'], '']); assert.deepStrictEqual(inspect(parser, input('¾')), [['¾'], '']); assert.deepStrictEqual(inspect(parser, input('ℋ')), [['ℋ'], '']); assert.deepStrictEqual(inspect(parser, input('ⅆ')), [['ⅆ'], '']); assert.deepStrictEqual(inspect(parser, input('∲')), [['∲'], '']); assert.deepStrictEqual(inspect(parser, input('≧̸')), [['≧̸'], '']); }); }); });