import { mark } from './mark';
import { some } from '../../combinator';
import { input } from '../context';
import { inspect } from '../../debug.test';
describe('Unit: parser/inline/mark', () => {
describe('mark', () => {
const parser = some(mark);
it('invalid', () => {
assert.deepStrictEqual(inspect(parser, input('')), undefined);
assert.deepStrictEqual(inspect(parser, input('=')), undefined);
assert.deepStrictEqual(inspect(parser, input('==')), [['=='], '']);
assert.deepStrictEqual(inspect(parser, input('==a')), [['==', 'a'], '']);
assert.deepStrictEqual(inspect(parser, input('==a=')), [['==', 'a='], '']);
assert.deepStrictEqual(inspect(parser, input('==a ==')), [['==', 'a ', '=='], '']);
assert.deepStrictEqual(inspect(parser, input('==a ==')), [['==', 'a', ' ', '=='], '']);
assert.deepStrictEqual(inspect(parser, input('==a\n==')), [['==', 'a', '
', '=='], '']);
assert.deepStrictEqual(inspect(parser, input('==a\\ ==')), [['==', 'a', ' ', '=='], '']);
assert.deepStrictEqual(inspect(parser, input('==a\\\n==')), [['==', 'a', '
', '=='], '']);
assert.deepStrictEqual(inspect(parser, input('== ==')), undefined);
assert.deepStrictEqual(inspect(parser, input('== a==')), undefined);
assert.deepStrictEqual(inspect(parser, input('== a ==')), undefined);
assert.deepStrictEqual(inspect(parser, input('==\na==')), undefined);
assert.deepStrictEqual(inspect(parser, input('==\\\na==')), undefined);
assert.deepStrictEqual(inspect(parser, input('==a==')), undefined);
assert.deepStrictEqual(inspect(parser, input(' ==a==')), undefined);
});
it('basic', () => {
assert.deepStrictEqual(inspect(parser, input('==a==')), [['a', ''], '']);
assert.deepStrictEqual(inspect(parser, input('==a=b==')), [['a=b', ''], '']);
assert.deepStrictEqual(inspect(parser, input('==\\===')), [['=', ''], '']);
assert.deepStrictEqual(inspect(parser, input('==a===')), [['a', ''], '=']);
assert.deepStrictEqual(inspect(parser, input('==a\nb==')), [['a
b', ''], '']);
assert.deepStrictEqual(inspect(parser, input('==a\\\nb==')), [['a
b', ''], '']);
});
it('nest', () => {
assert.deepStrictEqual(inspect(parser, input('==a ==b====')), [['a b', ''], '']);
assert.deepStrictEqual(inspect(parser, input('==- ==b====')), [['- b', ''], '']);
assert.deepStrictEqual(inspect(parser, input('==a\\ ==b====')), [['a b', ''], '']);
assert.deepStrictEqual(inspect(parser, input('==a	==b====')), [['a\tb', ''], '']);
assert.deepStrictEqual(inspect(parser, input('==a==b====')), [['ab', ''], '']);
assert.deepStrictEqual(inspect(parser, input('==*==a==*==')), [['a', ''], '']);
assert.deepStrictEqual(inspect(parser, input('====a== b==')), [['a b', ''], '']);
});
});
});