UNPKG

esther-medina-quintero-parser-nearley

Version:
78 lines (67 loc) 1.97 kB
// @ts-check /** * @description A file with the tests for the Egg lang parser * @author AluXXX Name <alu0101434780@ull.edu.es> * @since 13/03/2024 */ 'use strict'; const should = require('chai').should(); const { parseFromFile } = require("../index.js"); const fs = require('fs'); const { skipKeys, simpleDeb } = require('../src/utils.js'); const { expect } = require('chai'); skipKeys(['toString', "line", "offset", "lineBreaks"]); describe('Compiler', () => { const runTest = (testName) => { const expected = JSON.parse(fs.readFileSync('test/ast/' + testName + '.json', {encoding: 'utf8'})); const actual = parseFromFile('test/examples/' + testName + '.egg'); expect(actual).to.deep.equal(expected); debugger; }; const testList = [ // 'array', 'dodefsum', 'eof', 'fun', 'if', 'scope', 'fun-fun', 'syntax', 'fun3', 'two', 'greater-x-5', 'string', 'sum', /* ... */ ]; testList.forEach((test) => { it(test, () => { runTest(test); }); }); }); describe('Compiler errors', () => { const basePath = 'test/errors/'; const testList = [ { name: 'unexpected-token-comma', error: /Unexpected.*token.*,/i }, { name: 'unexpected-eof', error: /Unexpected.*EOF.*token/i }, { name: 'unexpected-token-word', error: /Unexpected.*WORD.token/i }, { name: 'one-err-2', error: /Unexpected.*EOF.*token/i }, { name: 'one-err', error: /Unexpected.*WORD.token/i }, { name: 'unbalanced', error: /Unexpected.*EOF.*token/i }, { name: 'expcomma', error: /Unexpected.*token.*,/i} ]; const runTest = (test) => { it(test.name, async () => { try { await parseFromFile(`${basePath}${test.name}.egg`) } catch (e) { // console.log(e); should.equal(test.error.test(e), true) } }); }; testList.forEach((test) => { runTest(test); }); });