diff --git a/experiments/modern/src/maki-interpreter/interpreter.test.js b/experiments/modern/src/maki-interpreter/interpreter.test.js index 90d50f82..50bb2d0b 100644 --- a/experiments/modern/src/maki-interpreter/interpreter.test.js +++ b/experiments/modern/src/maki-interpreter/interpreter.test.js @@ -3,14 +3,7 @@ const path = require("path"); const System = require("../runtime/System"); const runtime = require("../runtime"); const interpret = require("./interpreter"); - -const VERSIONS = { - WINAMP_3_ALPHA: "v1.1.0.a9 (Winamp 3 alpha 8r)", - WINAMP_3_BETA: "v1.1.1.b3 (Winamp 3.0 build 488d)", - WINAMP_3_FULL: "v1.1.1.b3 (Winamp 3.0 full)", - WINAMP_5_02: "v1.1.13 (Winamp 5.02)", - WINAMP_5_66: "v1.2.0 (Winamp 5.66)", -}; +const { VERSIONS } = require("./testConstants"); async function runFile(relativePath) { const system = new System(); diff --git a/experiments/modern/src/maki-interpreter/index.test.js b/experiments/modern/src/maki-interpreter/parser.test.js similarity index 88% rename from experiments/modern/src/maki-interpreter/index.test.js rename to experiments/modern/src/maki-interpreter/parser.test.js index 7fac7fe2..66ffcde0 100644 --- a/experiments/modern/src/maki-interpreter/index.test.js +++ b/experiments/modern/src/maki-interpreter/parser.test.js @@ -2,12 +2,41 @@ const fs = require("fs"); const path = require("path"); const parse = require("./parser"); const { getClass } = require("./objects"); +const { VERSIONS } = require("./testConstants"); function parseFile(relativePath) { const buffer = fs.readFileSync(path.join(__dirname, relativePath)); return parse(buffer); } +describe("can parse without crashing", () => { + const versions = [ + // VERSIONS.WINAMP_3_ALPHA, + VERSIONS.WINAMP_3_BETA, + VERSIONS.WINAMP_3_FULL, + VERSIONS.WINAMP_5_02, + VERSIONS.WINAMP_5_66, + ]; + + const scripts = [ + "hello_world.maki", + "basicTests.maki", + "simpleFunctions.maki", + ]; + + scripts.forEach(script => { + describe(`script ${script}`, () => { + versions.forEach(version => { + test(`compiled with compiler version ${version}`, () => { + expect(() => { + parseFile(`./reference/maki_compiler/${version}/${script}`); + }).not.toThrow(); + }); + }); + }); + }); +}); + describe("standardframe.maki", () => { let maki; beforeEach(() => { diff --git a/experiments/modern/src/maki-interpreter/testConstants.js b/experiments/modern/src/maki-interpreter/testConstants.js new file mode 100644 index 00000000..55d983f7 --- /dev/null +++ b/experiments/modern/src/maki-interpreter/testConstants.js @@ -0,0 +1,7 @@ +export const VERSIONS = { + WINAMP_3_ALPHA: "v1.1.0.a9 (Winamp 3 alpha 8r)", + WINAMP_3_BETA: "v1.1.1.b3 (Winamp 3.0 build 488d)", + WINAMP_3_FULL: "v1.1.1.b3 (Winamp 3.0 full)", + WINAMP_5_02: "v1.1.13 (Winamp 5.02)", + WINAMP_5_66: "v1.2.0 (Winamp 5.66)", +};