|
| 1 | +import { beforeEach, describe, it } from '@jest/globals'; |
| 2 | +import { toXmlMatch, setupTex, tex2mml } from '#helpers'; |
| 3 | + |
| 4 | +beforeEach(() => {}); |
| 5 | + |
| 6 | +function runMacroTests( |
| 7 | + macros: {[key: string]: any}, |
| 8 | + expected: string, |
| 9 | + control: string, |
| 10 | + macro: string) { |
| 11 | + setupTex(['base', 'configmacros'], macros); |
| 12 | + toXmlMatch(tex2mml(control), expected.replace('PH', control)); |
| 13 | + toXmlMatch(tex2mml(macro), expected.replace('PH', macro)); |
| 14 | +} |
| 15 | + |
| 16 | +describe('Config Macros Active', () => { |
| 17 | + it('Macros Simple', () => |
| 18 | + runMacroTests( |
| 19 | + {active: {"@": "~"}}, |
| 20 | + `<math xmlns=\"http://www.w3.org/1998/Math/MathML\" data-latex=\"PH\" display=\"block\"> |
| 21 | + <mi data-latex=\"A\">A</mi> |
| 22 | + <mtext data-latex=\"~\"> </mtext> |
| 23 | + <mi data-latex=\"a\">a</mi> |
| 24 | + </math>`, |
| 25 | + 'A~a', |
| 26 | + 'A@a' |
| 27 | + )); |
| 28 | +}); |
| 29 | + |
| 30 | +describe('Config Macros Commands', () => { |
| 31 | + it('Commands Simple', () => |
| 32 | + runMacroTests( |
| 33 | + {macros: {"RR": "{\\bf R}"}}, |
| 34 | + `<math xmlns=\"http://www.w3.org/1998/Math/MathML\" data-latex=\"PH\" display=\"block\"> |
| 35 | + <mrow data-mjx-texclass=\"ORD\" data-latex=\"{\\bf R}\"> |
| 36 | + <mi mathvariant=\"bold\" data-latex=\"R\">R</mi> |
| 37 | + </mrow> |
| 38 | +</math>`, |
| 39 | + '{\\bf R}', |
| 40 | + '\\RR')); |
| 41 | + it('Commands Argument', () => |
| 42 | + runMacroTests( |
| 43 | + {macros: {"bold": ["{\\bf #1}", 1]}}, |
| 44 | + `<math xmlns=\"http://www.w3.org/1998/Math/MathML\" data-latex=\"PH\" display=\"block\"> |
| 45 | + <mrow data-mjx-texclass=\"ORD\" data-latex=\"{\\bf bold}\"> |
| 46 | + <mi mathvariant=\"bold\" data-latex=\"b\">b</mi> |
| 47 | + <mi mathvariant=\"bold\" data-latex=\"o\">o</mi> |
| 48 | + <mi mathvariant=\"bold\" data-latex=\"l\">l</mi> |
| 49 | + <mi mathvariant=\"bold\" data-latex=\"d\">d</mi> |
| 50 | + </mrow> |
| 51 | + </math>`, |
| 52 | + '{\\bf bold}', |
| 53 | + '\\bold{bold}')); |
| 54 | + it('Commands Aux Argument', () => |
| 55 | + runMacroTests( |
| 56 | + {macros: {"foo": ["\\mbox{first } #1 \\mbox{ second } #2", 2, ["[", "]"]]}}, |
| 57 | + `<math xmlns=\"http://www.w3.org/1998/Math/MathML\" data-latex=\"PH\" display=\"block\"> |
| 58 | + <mstyle displaystyle=\"false\" scriptlevel=\"0\" data-latex=\"\\mbox{first }\"> |
| 59 | + <mtext>first </mtext> |
| 60 | + </mstyle> |
| 61 | + <mi data-latex=\"h\">h</mi> |
| 62 | + <mi data-latex=\"i\">i</mi> |
| 63 | + <mstyle displaystyle=\"false\" scriptlevel=\"0\" data-latex=\"\\mbox{ second }\"> |
| 64 | + <mtext> second </mtext> |
| 65 | + </mstyle> |
| 66 | + <mi data-latex=\"t\">t</mi> |
| 67 | + <mi data-latex=\"h\">h</mi> |
| 68 | + <mi data-latex=\"e\">e</mi> |
| 69 | + <mi data-latex=\"r\">r</mi> |
| 70 | + <mi data-latex=\"e\">e</mi> |
| 71 | + </math>`, |
| 72 | + '\\mbox{first } hi \\mbox{ second } there', |
| 73 | + '\\foo[hi]{there}')); |
| 74 | +}); |
| 75 | + |
| 76 | +describe('Config Macros Environment', () => { |
| 77 | + it('Environment Simple', () => |
| 78 | + runMacroTests( |
| 79 | + {environments: {"myHeartEnv": ["\\heartsuit", "\\spadesuit"]}}, |
| 80 | + `<math xmlns=\"http://www.w3.org/1998/Math/MathML\" data-latex=\"\\begin{myHeartEnv}a\\end{myHeartEnv}\" display=\"block\"> |
| 81 | + <mi mathvariant=\"normal\" data-latex=\"\\heartsuit\">♡</mi> |
| 82 | + <mi data-latex=\"a\">a</mi> |
| 83 | + <mi mathvariant=\"normal\" data-latex=\"\\spadesuit\">♠</mi> |
| 84 | + </math>`, |
| 85 | + '\\begin{myHeartEnv}a\\end{myHeartEnv}', |
| 86 | + '\\begin{myHeartEnv}a\\end{myHeartEnv}' |
| 87 | + )); |
| 88 | +}); |
0 commit comments