aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2020-08-13 10:14:07 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2020-08-13 10:14:07 -0400
commit047bff85dd5094725b0898d8bdd5b8c32e5d766d (patch)
tree5a6b46ec64136c8ff1680412506626b46f01af44
parent9956f3408794183bc4d2bd483acb33da90cbbab5 (diff)
Allow -ref argument to tj.js and stop printing tests one by one
-rwxr-xr-xtest/tj.js49
1 files changed, 28 insertions, 21 deletions
diff --git a/test/tj.js b/test/tj.js
index e932fbb0..d4339eca 100755
--- a/test/tj.js
+++ b/test/tj.js
@@ -1,27 +1,34 @@
#! /usr/bin/env node
-const bqn=require(__dirname+'/../bqn.js')
- , load=f=>require('fs').readFileSync(__dirname+'/'+f,'utf8');
+let bqn = require(__dirname+'/../bqn.js');
+let load = f=>require('fs').readFileSync(__dirname+'/'+f,'utf8');
+let args = process.argv.slice(2);
+let ref = args[0]==="-ref";
-if (process.argv.length <= 2) {
- const t=load('cases.bqn').split('\n').filter(x=>x).map(x=>x.split(' % '))
- , test=t.map(e=>e[1])
- , expt=t.map(e=>+e[0]);
-//let test= load('testref.bqn').split('\n')
-// .filter(x=>x.charAt(0)===' '
-// &&x.charAt(1)===' '
-// &&x.charAt(2)!=='#'
-// &&x.indexOf(':')===-1
-// &&x.indexOf('e¯')===-1)
-// .map(x=>x.slice(2))
-// , t=test.map(e=>[0,e])
-// , expt=test.map(e=>1);
+if (ref || args.length==0) {
+ let t = (load('cases.bqn')+load('bcases.bqn'))
+ .split('\n').filter(x=>x).map(x=>x.split(' % '));
+ let test = t.map(e=>e[1]);
+ let expt = t.map(e=>+e[0]);
+ if (ref) {
+ let r = load('testref.bqn').split('\n')
+ .filter(x=>x.charAt(0)===' '
+ &&x.charAt(1)===' '
+ &&x.charAt(2)!=='#'
+ &&x.indexOf(':')===-1)
+ .map(x=>x.slice(2));
+ test = test.concat(r);
+ expt = expt.concat(r.map(e=>1));
+ }
- test.map((t,i) => {
- console.log(t);
- let e=expt[i], r=bqn(t);
- console.log(e===r ? " Passed!" : " Expected "+e+" but received "+r);
- });
+ let rslt = test.map(bqn);
+ 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 '+expt[i]+' but received '+rslt[i])
+ : "All "+test.length+" passed!"
+ );
} else {
- console.log(process.argv.slice(2).map(bqn));
+ console.log(args.map(bqn));
}