import { math } from './math'; import { some } from '../../combinator'; import { input } from '../context'; import { inspect } from '../../debug.test'; describe('Unit: parser/inline/math', () => { describe('math', () => { const parser = some(math); it('invalid', () => { assert.deepStrictEqual(inspect(parser, input('')), undefined); assert.deepStrictEqual(inspect(parser, input('$')), undefined); assert.deepStrictEqual(inspect(parser, input('$$')), undefined); assert.deepStrictEqual(inspect(parser, input('$$$')), undefined); assert.deepStrictEqual(inspect(parser, input('$0 $')), undefined); assert.deepStrictEqual(inspect(parser, input('$0\\ $')), undefined); assert.deepStrictEqual(inspect(parser, input('$0\\\n$')), undefined); assert.deepStrictEqual(inspect(parser, input('$-0, $-1')), undefined); assert.deepStrictEqual(inspect(parser, input('$-0 and $-1')), undefined); assert.deepStrictEqual(inspect(parser, input('$-0と$-1')), undefined); assert.deepStrictEqual(inspect(parser, input('$-a $-b')), undefined); assert.deepStrictEqual(inspect(parser, input('$-a\\ $-b')), undefined); assert.deepStrictEqual(inspect(parser, input('$a $')), undefined); assert.deepStrictEqual(inspect(parser, input('$-a `$`')), undefined); assert.deepStrictEqual(inspect(parser, input('$-a ``$``')), undefined); // (``" + ``" + $-b") or (``"`` + "$-b") assert.deepStrictEqual(inspect(parser, input('$-a ``"``"$-b"')), undefined); // (``b`` + "c" + $-d) or (``b``"c" + $-d) assert.deepStrictEqual(inspect(parser, input('$-a ``b``"c"$-d')), undefined); assert.deepStrictEqual(inspect(parser, input('$-a"$-b"')), undefined); assert.deepStrictEqual(inspect(parser, input('$-a\\"$-b\\"')), undefined); assert.deepStrictEqual(inspect(parser, input('$a"$')), 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\\]')), undefined); assert.deepStrictEqual(inspect(parser, input('$-a{$-b}')), undefined); assert.deepStrictEqual(inspect(parser, input('$a{$')), undefined); assert.deepStrictEqual(inspect(parser, input('$a$b')), undefined); assert.deepStrictEqual(inspect(parser, input('$a$b$')), undefined); assert.deepStrictEqual(inspect(parser, input('$ $')), undefined); 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('$\n$')), undefined); assert.deepStrictEqual(inspect(parser, input('$\\\n$')), undefined); assert.deepStrictEqual(inspect(parser, input('$a\nb$')), undefined); assert.deepStrictEqual(inspect(parser, input('$a\\\nb$')), undefined); assert.deepStrictEqual(inspect(parser, input('$a\\$\nb$')), undefined); assert.deepStrictEqual(inspect(parser, input('$a\\$\\\nb$')), undefined); assert.deepStrictEqual(inspect(parser, input('$`$')), undefined); assert.deepStrictEqual(inspect(parser, input('$`a"$')), undefined); assert.deepStrictEqual(inspect(parser, input('$`a"b$')), undefined); assert.deepStrictEqual(inspect(parser, input('$``$')), undefined); assert.deepStrictEqual(inspect(parser, input('$``$"$')), undefined); assert.deepStrictEqual(inspect(parser, input('$``a$')), undefined); assert.deepStrictEqual(inspect(parser, input('$``a"$0')), undefined); assert.deepStrictEqual(inspect(parser, input('$``a""b$')), 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('$``\n"$')), undefined); assert.deepStrictEqual(inspect(parser, input('$``a\\$\nb"$')), undefined); assert.deepStrictEqual(inspect(parser, input('$``a\\$\\\nb"$')), undefined); assert.deepStrictEqual(inspect(parser, input('$``"$')), undefined); assert.deepStrictEqual(inspect(parser, input('$``a"$')), undefined); assert.deepStrictEqual(inspect(parser, input('$``\\"$')), undefined); assert.deepStrictEqual(inspect(parser, input('$``a``b"c"$')), undefined); assert.deepStrictEqual(inspect(parser, input('$````""$')), undefined); assert.deepStrictEqual(inspect(parser, input('$"$')), undefined); assert.deepStrictEqual(inspect(parser, input('$}$')), undefined); assert.deepStrictEqual(inspect(parser, input('${')), undefined); assert.deepStrictEqual(inspect(parser, input('${a')), undefined); assert.deepStrictEqual(inspect(parser, input('${$')), undefined); assert.deepStrictEqual(inspect(parser, input('${}')), undefined); assert.deepStrictEqual(inspect(parser, input('${a} $')), 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{c}$')), undefined); assert.deepStrictEqual(inspect(parser, input('${a}{b}$')), undefined); assert.deepStrictEqual(inspect(parser, input('${\\}$')), undefined); assert.deepStrictEqual(inspect(parser, input('${\n}$')), undefined); assert.deepStrictEqual(inspect(parser, input('${\\\n}$')), undefined); assert.deepStrictEqual(inspect(parser, input('${a\nb}$')), undefined); assert.deepStrictEqual(inspect(parser, input('${a\\\nb}$')), undefined); assert.deepStrictEqual(inspect(parser, input('${$}$')), undefined); assert.deepStrictEqual(inspect(parser, input('${a\\$\nb}$')), undefined); assert.deepStrictEqual(inspect(parser, input('${a\\$\\\nb}$')), undefined); assert.deepStrictEqual(inspect(parser, input('$\\begin$')), [['$\\begin$'], '']); assert.deepStrictEqual(inspect(parser, input('$\\huge0$')), [['$\\huge0$'], '']); assert.deepStrictEqual(inspect(parser, input('$\\Begin$')), [['$\\Begin$'], '']); assert.deepStrictEqual(inspect(parser, input('$\\begin{}$')), [['$\\begin{}$'], '']); assert.deepStrictEqual(inspect(parser, input('${\\begin}$')), [['${\\begin}$'], '']); assert.deepStrictEqual(inspect(parser, input('$http://host$')), undefined); assert.deepStrictEqual(inspect(parser, input('${http://host}$')), undefined); assert.deepStrictEqual(inspect(parser, input(' ${a}$')), undefined); }); it('basic', () => { assert.deepStrictEqual(inspect(parser, input('$0$')), [['$0$'], '']); assert.deepStrictEqual(inspect(parser, input('$0$$')), [['$0$'], '$']); assert.deepStrictEqual(inspect(parser, input('$00$')), [['$00$'], '']); assert.deepStrictEqual(inspect(parser, input('$-0$')), [['$-0$'], '']); assert.deepStrictEqual(inspect(parser, input('$0-1$')), [['$0-1$'], '']); assert.deepStrictEqual(inspect(parser, input('$0+1$')), [['$0+1$'], '']); assert.deepStrictEqual(inspect(parser, input('$0*1$')), [['$0*1$'], '']); assert.deepStrictEqual(inspect(parser, input('$0/1$')), [['$0/1$'], '']); assert.deepStrictEqual(inspect(parser, input('$a$')), [['$a$'], '']); assert.deepStrictEqual(inspect(parser, input('$a$$')), [['$a$'], '$']); assert.deepStrictEqual(inspect(parser, input('$a-b$')), [['$a-b$'], '']); assert.deepStrictEqual(inspect(parser, input('$a+b$')), [['$a+b$'], '']); assert.deepStrictEqual(inspect(parser, input('$a*b$')), [['$a*b$'], '']); assert.deepStrictEqual(inspect(parser, input('$a/b$')), [['$a/b$'], '']); assert.deepStrictEqual(inspect(parser, input(`$a'$`)), [[`$a'$`], '']); assert.deepStrictEqual(inspect(parser, input(`$a''$`)), [[`$a''$`], '']); assert.deepStrictEqual(inspect(parser, input('$a$[A](a)')), [['$a$'], '[A](a)']); assert.deepStrictEqual(inspect(parser, input('$A$')), [['$A$'], '']); assert.deepStrictEqual(inspect(parser, input('$-a$')), [['$-a$'], '']); assert.deepStrictEqual(inspect(parser, input('$\\$$')), [['$\\$$'], '']); assert.deepStrictEqual(inspect(parser, input('$\\Pi$')), [['$\\Pi$'], '']); assert.deepStrictEqual(inspect(parser, input('$\\ 0$')), [['$\\ 0$'], '']); assert.deepStrictEqual(inspect(parser, input('$\\\\0$')), [['$\\\\0$'], '']); assert.deepStrictEqual(inspect(parser, input('$|1|$')), [['$|1|$'], '']); assert.deepStrictEqual(inspect(parser, input('$[0,1)$]')), [['$[0,1)$'], ']']); assert.deepStrictEqual(inspect(parser, input('$(0, 1]$)')), [['$(0, 1]$'], ')']); assert.deepStrictEqual(inspect(parser, input('$\\{0,1\\}$')), [['$\\{0,1\\}$'], '']); assert.deepStrictEqual(inspect(parser, input('$n=1$')), [['$n=1$'], '']); assert.deepStrictEqual(inspect(parser, input('$n$n<m$'], '']); assert.deepStrictEqual(inspect(parser, input('$n>m$')), [['$n>m$'], '']); assert.deepStrictEqual(inspect(parser, input('$E = mc^2$')), [['$E = mc^2$'], '']); assert.deepStrictEqual(inspect(parser, input('$f(x)$')), [['$f(x)$'], '']); assert.deepStrictEqual(inspect(parser, input('$f: x \\to y$')), [['$f: x \\to y$'], '']); assert.deepStrictEqual(inspect(parser, input('$k$\\-space')), [['$k$'], '\\-space']); assert.deepStrictEqual(inspect(parser, input('$a{b}$')), [['$a{b}$'], '']); assert.deepStrictEqual(inspect(parser, input('$a\\{$\\}')), [['$a\\{$'], '\\}']); assert.deepStrictEqual(inspect(parser, input('${}$')), [['${}$'], '']); 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}$0')), [['${a}$'], '0']); assert.deepStrictEqual(inspect(parser, input('${a}$b')), [['${a}$'], 'b']); assert.deepStrictEqual(inspect(parser, input('${ab}$')), [['${ab}$'], '']); assert.deepStrictEqual(inspect(parser, input('${a b}$')), [['${a b}$'], '']); 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('${``"}$')), [['${``"}$'], '']); assert.deepStrictEqual(inspect(parser, input('${\\a}$')), [['${\\a}$'], '']); assert.deepStrictEqual(inspect(parser, input('${\\$}$')), [['${\\$}$'], '']); assert.deepStrictEqual(inspect(parser, input('${\\\\}$')), [['${\\\\}$'], '']); assert.deepStrictEqual(inspect(parser, input('${あ}$')), [['${あ}$'], '']); }); it('nest', () => { assert.deepStrictEqual(inspect(parser, input('${*a*}$')), [['${*a*}$'], '']); assert.deepStrictEqual(inspect(parser, input('${}$')), [['${<wbr>}$'], '']); }); }); });