import { ruby } from './ruby';
import { some } from '../../combinator';
import { input } from '../context';
import { inspect } from '../../debug.test';
describe('Unit: parser/inline/ruby', () => {
describe('ruby', () => {
const parser = some(ruby);
it('invalid', () => {
assert.deepStrictEqual(inspect(parser, input('')), undefined);
assert.deepStrictEqual(inspect(parser, input('[(b)')), undefined);
assert.deepStrictEqual(inspect(parser, input('[]()')), undefined);
assert.deepStrictEqual(inspect(parser, input('[](b)')), undefined);
assert.deepStrictEqual(inspect(parser, input('[ ](b)')), undefined);
assert.deepStrictEqual(inspect(parser, input('[ a](b)')), undefined);
assert.deepStrictEqual(inspect(parser, input('[	a](b)')), undefined);
assert.deepStrictEqual(inspect(parser, input('[	 a](b)')), undefined);
assert.deepStrictEqual(inspect(parser, input('[&a;](b)')), [['&a;'], '']);
assert.deepStrictEqual(inspect(parser, input('[a](&a;)')), [['a'], '']);
assert.deepStrictEqual(inspect(parser, input('[](a)')), undefined);
assert.deepStrictEqual(inspect(parser, input('[a]()')), undefined);
assert.deepStrictEqual(inspect(parser, input('[a]()')), undefined);
assert.deepStrictEqual(inspect(parser, input('[a]( )')), undefined);
assert.deepStrictEqual(inspect(parser, input('[a\nb](c)')), undefined);
assert.deepStrictEqual(inspect(parser, input('[a](b\nc)')), undefined);
assert.deepStrictEqual(inspect(parser, input(' [a](b)')), undefined);
});
it('basic', () => {
assert.deepStrictEqual(inspect(parser, input('[A](a)')), [['A'], '']);
assert.deepStrictEqual(inspect(parser, input('[A](ab)')), [['A'], '']);
assert.deepStrictEqual(inspect(parser, input('[A](a b)')), [['A'], '']);
assert.deepStrictEqual(inspect(parser, input('[A ](a)')), [['A'], '']);
assert.deepStrictEqual(inspect(parser, input('[A ](a b)')), [['A'], '']);
assert.deepStrictEqual(inspect(parser, input('[A ](a b )')), [['A'], '']);
assert.deepStrictEqual(inspect(parser, input('[A ](a)')), [['A'], '']);
assert.deepStrictEqual(inspect(parser, input('[A \\ ](a)')), [['A '], '']);
assert.deepStrictEqual(inspect(parser, input('[AB](a)')), [['AB'], '']);
assert.deepStrictEqual(inspect(parser, input('[AB](a )')), [['AB'], '']);
assert.deepStrictEqual(inspect(parser, input('[AB]( b)')), [['AB'], '']);
assert.deepStrictEqual(inspect(parser, input('[AB](ab)')), [['AB'], '']);
assert.deepStrictEqual(inspect(parser, input('[AB](a b)')), [['AB'], '']);
assert.deepStrictEqual(inspect(parser, input('[AB](a b )')), [['AB'], '']);
assert.deepStrictEqual(inspect(parser, input('[AB](a b c)')), [['AB'], '']);
assert.deepStrictEqual(inspect(parser, input('[A B](ab)')), [['AB'], '']);
assert.deepStrictEqual(inspect(parser, input('[A B](a b)')), [['AB'], '']);
assert.deepStrictEqual(inspect(parser, input('[A B](a b )')), [['A B'], '']);
assert.deepStrictEqual(inspect(parser, input('[ABC](a )')), [['ABC'], '']);
assert.deepStrictEqual(inspect(parser, input('[ABC](a )')), [['ABC'], '']);
assert.deepStrictEqual(inspect(parser, input('[ABC]( b)')), [['ABC'], '']);
assert.deepStrictEqual(inspect(parser, input('[ABC]( b )')), [['ABC'], '']);
assert.deepStrictEqual(inspect(parser, input('[ABC]( c)')), [['ABC'], '']);
assert.deepStrictEqual(inspect(parser, input('[ABC](a c)')), [['ABC'], '']);
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('[*A*](*a*)')), [['*A*'], '']);
});
});
});