aboutsummaryrefslogtreecommitdiff
path: root/test/js
diff options
context:
space:
mode:
Diffstat (limited to 'test/js')
-rwxr-xr-xtest/js34
1 files changed, 34 insertions, 0 deletions
diff --git a/test/js b/test/js
new file mode 100755
index 00000000..da099417
--- /dev/null
+++ b/test/js
@@ -0,0 +1,34 @@
+#! /usr/bin/env node
+
+let bqn = require(__dirname+'/../docs/bqn.js');
+let load = f=>require('fs').readFileSync(__dirname+'/'+f,'utf8');
+let args = process.argv.slice(2);
+let prim = args[0]==="-prim";
+
+if (prim || 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 (prim) {
+ let r = load('prim.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));
+ }
+
+ 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(args.map(bqn));
+}