blob: e12098ec6e96ccf507b5df52a2d2709533ab5c0c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
#! /usr/bin/env node
let bqn = require(__dirname+'/../docs/bqn.js');
let read = require('fs').readFileSync;
let cases = f=>read(__dirname+'/cases/'+f+'.bqn','utf8').split('\n')
.filter(x=>x.length>0 && x.charAt(0)!=='#')
.map(x=>x.indexOf('%')===-1?["1",x]:x.split(' % '));
let args = process.argv.slice(2);
let files = args.length ? args : ['simple','syntax'];
let t = [].concat.apply([],files.map(cases));
let test = t.map(e=>e[1]);
let expt = t.map(e=>e[0].trim()==='!'?null:+e[0]);
let rslt = test.map(t => {try{return bqn(t);}catch(e){return null;}});
let pass = rslt.map((r,i)=>r===expt[i]);
let fail = pass.map((p,i)=>p?-1:i).filter(i=>i>=0);
console.log(
fail.length
? fail.map(i=>'"'+test[i]+'": expected '
+(e=>e===null?'to fail':e)(expt[i])
+' but '
+(r=>r===null?'evaluation failed':'received '+r)(rslt[i]))
: "All "+test.length+" passed!"
);
|