aboutsummaryrefslogtreecommitdiff
path: root/test/js
blob: da099417f9ef0e242c118f2c9e7e5b778ec03b2b (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
26
27
28
29
30
31
32
33
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));
}