Skip to content
31 changes: 17 additions & 14 deletions testsuite/tests/input/tex/ConfigMacros.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,59 +4,62 @@ import '#js/input/tex/configmacros/ConfigMacrosConfiguration.js';

beforeEach(() => {});

function runMacroTests(
function runMacroTest(
macros: { [key: string]: any },
control: string,
macro: string
) {
setupTex(['base', 'configmacros'], macros);
expect(tex2mml(control)).toMatchSnapshot();
expect(tex2mml(macro)).toMatchSnapshot();
}

/**********************************************************************************/

describe('Config Macros Active', () => {
it('Macros Simple', () => {
runMacroTests({ active: { '@': '~' } }, 'A~a', 'A@a');
runMacroTest({ active: { '@': '~' } }, 'A@a');
});
});

/**********************************************************************************/

describe('Config Macros Commands', () => {
it('Commands Simple', () => {
runMacroTests({ macros: { RR: '{\\bf R}' } }, '{\\bf R}', '\\RR');
runMacroTest({ macros: { RR: '{\\bf R}' } }, '\\RR');
});

it('Commands Argument', () => {
runMacroTests(
{ macros: { bold: ['{\\bf #1}', 1] } },
'{\\bf bold}',
'\\bold{bold}'
);
runMacroTest({ macros: { bold: ['{\\bf #1}', 1] } }, '\\bold{bold}');
});

it('Commands Aux Argument', () => {
runMacroTests(
runMacroTest(
{
macros: {
foo: ['\\mbox{first } #1 \\mbox{ second } #2', 2, ['[', ']']],
},
},
'\\mbox{first } hi \\mbox{ second } there',
'\\foo[hi]{there}'
);
});

it('Commands Template', () => {
runMacroTest(
{
macros: {
foo: ['\\text{[#1]}', 1, [undefined , '+ \\oof']]
}
},
'\\foo A + \\oof'
);
});
});

/**********************************************************************************/

describe('Config Macros Environment', () => {
it('Environment Simple', () => {
runMacroTests(
runMacroTest(
{ environments: { myHeartEnv: ['\\heartsuit', '\\spadesuit'] } },
'\\begin{myHeartEnv}a\\end{myHeartEnv}',
'\\begin{myHeartEnv}a\\end{myHeartEnv}'
);
});
Expand Down
74 changes: 70 additions & 4 deletions testsuite/tests/input/tex/Newcommand.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -244,10 +244,76 @@ describe('Newcommand', () => {
expectTexError('\\def\\x#1 #2 {[#1,#2]} \\x{a}{b}').toBe(
'Runaway argument for \\x?'
);
expectTexError('\\def\\x#1 #2 {[#1,#2]} \\x{a} {b}').toBe(
'Runaway argument for \\x?'
);
expect(tex2mml('\\def\\x#1 #2{[#1,#2]} \\x{a} {b} ')).toMatchSnapshot();
expect(tex2mml('\\def\\x#1 #2 {[#1,#2]} \\x{a} {b}')).toMatchSnapshot();
expect(tex2mml('\\def\\x#1 #2 {[#1,#2]} \\x{a} {b} ')).toMatchSnapshot();
});

it('Def braces', () => {
expect(tex2mml('\\def\\x #1\\a{x^#1}\\x {23}\\a')).toMatchSnapshot();
expect(tex2mml('\\def\\x #1\\a{x^#1}\\x {23} \\a')).toMatchSnapshot();
});

it('Def newlines, spaces, tabs', () => {
expect(tex2mml('\\def\\x #1\n#2{\\text{[#1][#2]}}\\x a\nb')).toMatchSnapshot();
expect(tex2mml('\\def\\x #1\n#2{\\text{[#1][#2]}}\\x a b')).toMatchSnapshot();
expect(tex2mml('\\def\\x #1\n#2{\\text{[#1][#2]}}\\x a\tb')).toMatchSnapshot();
expect(tex2mml('\\def\\x #1\n#2{\\text{[#1][#2]}}\\x a\t \nb')).toMatchSnapshot();
expect(tex2mml('\\def\\x #1 #2{\\text{[#1][#2]}}\\x a\nb')).toMatchSnapshot();
expect(tex2mml('\\def\\x #1 #2{\\text{[#1][#2]}}\\x a b')).toMatchSnapshot();
expect(tex2mml('\\def\\x #1 #2{\\text{[#1][#2]}}\\x a\tb')).toMatchSnapshot();
});

it('Def multiple spaces', () => {
expect(tex2mml('\\def\\x #1 #2{\\text{[#1][#2]}}\\x a b')).toMatchSnapshot();
expect(tex2mml('\\def\\x #1 #2{\\text{[#1][#2]}}\\x a b')).toMatchSnapshot();
expect(tex2mml('\\def\\x #1\\a\\b#2\\c{\\text{[#1][#2]}}\\x a\\a\\b b\\c')).toMatchSnapshot();
expect(tex2mml('\\def\\x #1\\a\\b#2\\c{\\text{[#1][#2]}}\\x a\\a \\b b \\c')).toMatchSnapshot();
expect(tex2mml('\\def\\x #1\\a\\b#2\\c{\\text{[#1][#2]}}\\x a\\a \\b b \\c')).toMatchSnapshot();
expect(tex2mml('\\def\\x #1\\a b{\\text{[#1]}}\\x a\\a b')).toMatchSnapshot();
expect(tex2mml('\\def\\x #1\\a b{\\text{[#1]}}\\x a\\a\n b')).toMatchSnapshot();
});

it('Def multiple arg template', () => {
expect(tex2mml('\\def\\x #1#2\\x{\\text{[#1][#2]}}\\x abc\\x')).toMatchSnapshot();
expect(tex2mml('\\def\\x #1#2\\x{\\text{[#1][#2]}}\\x {abc}\\x')).toMatchSnapshot();
});

it('Def partial template match', () => {
expect(tex2mml('\\def\\x #1ab{\\text{[#1]}}\\x axab')).toMatchSnapshot();
expect(tex2mml('\\def\\x #1ab{\\text{[#1]}}\\x ax a b cab')).toMatchSnapshot();
});

it('Def empty template arg', () => {
expect(tex2mml('\\def\\x #1ab{\\text{[#1]}}\\x ab')).toMatchSnapshot();
});

it('Def comments', () => {
expect(tex2mml('\\def\\x #1{\\text{[#1]}}\\x%{}\n{ab}')).toMatchSnapshot();
expect(tex2mml('\\def\\x #1\\a{\\text{[#1]}}\\x ab%{}\ncd\\a')).toMatchSnapshot();
expect(tex2mml('\\def\\x #1%{\n#2{\\text{[#1][#2]}}\\x ab')).toMatchSnapshot();
expect(tex2mml('\\def\\x #1\\a#2\\b{\\text{[#1][#2]}}\\x %\\a\n a\\a %\\b\n b\\b')).toMatchSnapshot();
expect(tex2mml('\\def\\x #1{%x}\n\\text{[#1]}}\\x a')).toMatchSnapshot();
expectTexError('\\def\\x{\\text{%}}\\x').toBe('Missing close brace');
expectTexError('\\def\\x #1X{\\text{[#1]}}\\x%aX').toBe('Runaway argument for \\x?');
});
});

/**********************************************************************************/

describe('Newcommand legacy', () => {
beforeEach(() => setupTex(['base', 'newcommand'], {legacyComments: true, legacyMacroTemplates: true}));

it('Def legacy comments', () => {
expect(tex2mml('\\def\\x #1%X{\\text{[#1]}}\\x a%X')).toMatchSnapshot();
expect(tex2mml('\\def\\x{\\text{%}}\\x')).toMatchSnapshot();
});

it('Def legacy macro templates', () => {
expectTexError('\\def\\x #1X Y{\\text{[#1]}}\\x aX Y').toBe('Runaway argument for \\x?');
expect(tex2mml('\\def\\x #1X Y{\\text{[#1]}}\\x aX Y')).toMatchSnapshot();
expectTexError('\\def\\x #1X\nY{\\text{[#1]}}\\x aX Y').toBe('Runaway argument for \\x?');
expectTexError('\\def\\x #1X\nY{\\text{[#1]}}\\x aX \nY').toBe('Runaway argument for \\x?');
expect(tex2mml('\\def\\x #1X\nY{\\text{[#1]}}\\x aX\nY')).toMatchSnapshot();
});
});

Expand Down
2 changes: 1 addition & 1 deletion testsuite/tests/input/tex/Verb.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ beforeEach(async () => setupTex(['base', 'verb']));
/**********************************************************************************/

describe('Verb', () => {
it('Verb Plus ', () => {
it('Verb Plus', () => {
expect(tex2mml('\\verb+{a}+')).toMatchSnapshot();
});

Expand Down
55 changes: 4 additions & 51 deletions testsuite/tests/input/tex/__snapshots__/ConfigMacros.test.ts.snap
Original file line number Diff line number Diff line change
@@ -1,14 +1,6 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP

exports[`Config Macros Active Macros Simple 1`] = `
"<math xmlns="http://www.w3.org/1998/Math/MathML" data-latex="A~a" display="block">
<mi data-latex="A">A</mi>
<mtext data-latex="~">&#xA0;</mtext>
<mi data-latex="a">a</mi>
</math>"
`;

exports[`Config Macros Active Macros Simple 2`] = `
"<math xmlns="http://www.w3.org/1998/Math/MathML" data-latex="A@a" display="block">
<mi data-latex="A">A</mi>
<mtext data-latex="~">&#xA0;</mtext>
Expand All @@ -17,17 +9,6 @@ exports[`Config Macros Active Macros Simple 2`] = `
`;

exports[`Config Macros Commands Commands Argument 1`] = `
"<math xmlns="http://www.w3.org/1998/Math/MathML" data-latex="{\\bf bold}" display="block">
<mrow data-mjx-texclass="ORD" data-latex="{\\bf bold}">
<mi mathvariant="bold" data-latex="b">b</mi>
<mi mathvariant="bold" data-latex="o">o</mi>
<mi mathvariant="bold" data-latex="l">l</mi>
<mi mathvariant="bold" data-latex="d">d</mi>
</mrow>
</math>"
`;

exports[`Config Macros Commands Commands Argument 2`] = `
"<math xmlns="http://www.w3.org/1998/Math/MathML" data-latex="\\bold{bold}" display="block">
<mrow data-mjx-texclass="ORD" data-latex="{\\bf bold}">
<mi mathvariant="bold" data-latex="b">b</mi>
Expand All @@ -39,24 +20,6 @@ exports[`Config Macros Commands Commands Argument 2`] = `
`;

exports[`Config Macros Commands Commands Aux Argument 1`] = `
"<math xmlns="http://www.w3.org/1998/Math/MathML" data-latex="\\mbox{first } hi \\mbox{ second } there" display="block">
<mstyle displaystyle="false" data-latex="\\mbox{first }">
<mtext>first&#xA0;</mtext>
</mstyle>
<mi data-latex="h">h</mi>
<mi data-latex="i">i</mi>
<mstyle displaystyle="false" data-latex="\\mbox{ second }">
<mtext>&#xA0;second&#xA0;</mtext>
</mstyle>
<mi data-latex="t">t</mi>
<mi data-latex="h">h</mi>
<mi data-latex="e">e</mi>
<mi data-latex="r">r</mi>
<mi data-latex="e">e</mi>
</math>"
`;

exports[`Config Macros Commands Commands Aux Argument 2`] = `
"<math xmlns="http://www.w3.org/1998/Math/MathML" data-latex="\\foo[hi]{there}" display="block">
<mstyle displaystyle="false" data-latex="\\mbox{first }">
<mtext>first&#xA0;</mtext>
Expand All @@ -75,30 +38,20 @@ exports[`Config Macros Commands Commands Aux Argument 2`] = `
`;

exports[`Config Macros Commands Commands Simple 1`] = `
"<math xmlns="http://www.w3.org/1998/Math/MathML" data-latex="{\\bf R}" display="block">
<mrow data-mjx-texclass="ORD" data-latex="{\\bf R}">
<mi mathvariant="bold" data-latex="R">R</mi>
</mrow>
</math>"
`;

exports[`Config Macros Commands Commands Simple 2`] = `
"<math xmlns="http://www.w3.org/1998/Math/MathML" data-latex="\\RR" display="block">
<mrow data-mjx-texclass="ORD" data-latex="{\\bf R}">
<mi mathvariant="bold" data-latex="R">R</mi>
</mrow>
</math>"
`;

exports[`Config Macros Environment Environment Simple 1`] = `
"<math xmlns="http://www.w3.org/1998/Math/MathML" data-latex="\\begin{myHeartEnv}a\\end{myHeartEnv}" display="block">
<mi mathvariant="normal" data-latex="\\heartsuit">&#x2661;</mi>
<mi data-latex="a">a</mi>
<mi mathvariant="normal" data-latex="\\spadesuit">&#x2660;</mi>
exports[`Config Macros Commands Commands Template 1`] = `
"<math xmlns="http://www.w3.org/1998/Math/MathML" data-latex="\\foo A + \\oof" display="block">
<mtext data-latex="\\text{[A ]}">[A ]</mtext>
</math>"
`;

exports[`Config Macros Environment Environment Simple 2`] = `
exports[`Config Macros Environment Environment Simple 1`] = `
"<math xmlns="http://www.w3.org/1998/Math/MathML" data-latex="\\begin{myHeartEnv}a\\end{myHeartEnv}" display="block">
<mi mathvariant="normal" data-latex="\\heartsuit">&#x2661;</mi>
<mi data-latex="a">a</mi>
Expand Down
Loading