From 95bafd405887e316bb375b81bb62c2129e2dc88f Mon Sep 17 00:00:00 2001 From: Bronwen Date: Sat, 22 May 2021 18:27:59 -0400 Subject: [PATCH] test watcher... test link parsing --- package.json | 1 + tests/lexer.js | 49 +++++++++++++++++++++---------- tests/lib/ModuleFiles.js | 16 ++++++++++ tests/modules/link.v | 1 + tests/modules/linkArray.v | 1 + tests/modules/requiredLink.v | 1 + tests/modules/requiredLinkArray.v | 1 + 7 files changed, 55 insertions(+), 15 deletions(-) create mode 100644 tests/lib/ModuleFiles.js create mode 100644 tests/modules/link.v create mode 100644 tests/modules/linkArray.v create mode 100644 tests/modules/requiredLink.v create mode 100644 tests/modules/requiredLinkArray.v diff --git a/package.json b/package.json index cd69462..bcbc433 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ }, "scripts": { "test": "mocha tests", + "test:watch": "supervisor -n exit -w out,tests --exec mocha -- tests", "debug": "cross-env DEBUG=vogue:* yarn node --enable-source-maps --unhandled-rejections=strict out/run.js test", "debug:watch": "cross-env DEBUG=vogue:* supervisor -w out,test/**/*.v,lib -n exit --exec yarn -- test", "postinstall": "yarn compile && cd test && yarn", diff --git a/tests/lexer.js b/tests/lexer.js index 1bc706c..9ec60c3 100644 --- a/tests/lexer.js +++ b/tests/lexer.js @@ -1,20 +1,39 @@ import { createAst } from './../out/createAst.js'; -import { readFileSync } from 'fs'; -import { resolve, parse } from 'path'; -import { fileURLToPath } from 'node:url'; import { expect } from 'chai'; +import * as ModuleFiles from './lib/ModuleFiles.js' describe('Lexer', () => { - it('parses namespaces without dots', () => { - const ast = createAst(resolve(parse(fileURLToPath(import.meta.url)).dir, 'modules', 'namespaceX.v')); - expect(ast).to.deep.equal([{type: 'namespace', namespace: 'x'}]); - }); - it('parses namespaces with a single dot', () => { - const ast = createAst(resolve(parse(fileURLToPath(import.meta.url)).dir, 'modules', 'namespaceXY.v')); - expect(ast).to.deep.equal([{type: 'namespace', namespace: 'x.y'}]); - }); - it('parses namespaces two dots', () => { - const ast = createAst(resolve(parse(fileURLToPath(import.meta.url)).dir, 'modules', 'namespaceXYZ.v')); - expect(ast).to.deep.equal([{type: 'namespace', namespace: 'x.y.z'}]); - }); + describe('namespaces', () => { + it('parses namespaces without dots', () => { + const ast = createAst(ModuleFiles.namespaceX); + expect(ast).to.deep.equal([{type: 'namespace', namespace: 'x'}]); + }); + it('parses namespaces with a single dot', () => { + const ast = createAst(ModuleFiles.namespaceXY); + expect(ast).to.deep.equal([{type: 'namespace', namespace: 'x.y'}]); + }); + it('parses namespaces two dots', () => { + const ast = createAst(ModuleFiles.namespaceXYZ); + expect(ast).to.deep.equal([{type: 'namespace', namespace: 'x.y.z'}]); + }); + }) + + describe('links', () => { + it('parses link', () => { + const ast = createAst(ModuleFiles.link); + expect(ast).to.deep.equal([{type: 'link', array: false, required: false, name: 'test'}]); + }); + it('parses required link', () => { + const ast = createAst(ModuleFiles.requiredLink); + expect(ast).to.deep.equal([{type: 'link', array: false, required: true, name: 'test'}]); + }); + it('parses link array', () => { + const ast = createAst(ModuleFiles.linkArray); + expect(ast).to.deep.equal([{type: 'link', array: true, required: false, name: 'test'}]); + }); + it('parses required link array', () => { + const ast = createAst(ModuleFiles.requiredLinkArray); + expect(ast).to.deep.equal([{type: 'link', array: true, required: true, name: 'test'}]); + }); + }) }) \ No newline at end of file diff --git a/tests/lib/ModuleFiles.js b/tests/lib/ModuleFiles.js new file mode 100644 index 0000000..1432925 --- /dev/null +++ b/tests/lib/ModuleFiles.js @@ -0,0 +1,16 @@ + +import { resolve, parse } from 'path'; +import { fileURLToPath } from 'node:url'; + +function file(str) { + return resolve(parse(fileURLToPath(import.meta.url)).dir, '..', 'modules', str + '.v') +} + +export const namespaceX = file('namespaceX'); +export const namespaceXY = file('namespaceXY'); +export const namespaceXYZ = file('namespaceXYZ'); + +export const link = file('link'); +export const linkArray = file('linkArray'); +export const requiredLink = file('requiredLink'); +export const requiredLinkArray = file('requiredLinkArray'); diff --git a/tests/modules/link.v b/tests/modules/link.v new file mode 100644 index 0000000..097a07e --- /dev/null +++ b/tests/modules/link.v @@ -0,0 +1 @@ +link test; \ No newline at end of file diff --git a/tests/modules/linkArray.v b/tests/modules/linkArray.v new file mode 100644 index 0000000..567628c --- /dev/null +++ b/tests/modules/linkArray.v @@ -0,0 +1 @@ +link[] test; \ No newline at end of file diff --git a/tests/modules/requiredLink.v b/tests/modules/requiredLink.v new file mode 100644 index 0000000..db246e1 --- /dev/null +++ b/tests/modules/requiredLink.v @@ -0,0 +1 @@ +required link test; \ No newline at end of file diff --git a/tests/modules/requiredLinkArray.v b/tests/modules/requiredLinkArray.v new file mode 100644 index 0000000..aa7d649 --- /dev/null +++ b/tests/modules/requiredLinkArray.v @@ -0,0 +1 @@ +required link[] test; \ No newline at end of file