/ simulated_instruments / bass
Sign in
simulated_instruments / bass
bass / webapp / src / selftest.ts
26 lines · 1.1 KBBlameHistoryRaw
1// Runs the MATLAB validation script (../matlab/bass_validate.m) through
2// numbl in Node: closed-form identities, the coupled eigensolve identities,
3// exact reproducibility of the seeded walking line, and the pinned
4// end-to-end diagnostics.
5// Run with: npm run selftest
7import { readFileSync, readdirSync } from 'fs';
8import { join, dirname } from 'path';
9import { fileURLToPath } from 'url';
10import { executeCode } from 'numbl';
12const matlabDir = join(dirname(fileURLToPath(import.meta.url)), '..', '..', 'matlab');
13const workspaceFiles = readdirSync(matlabDir)
14 .filter((f) => f.endsWith('.m'))
15 .map((f) => ({ name: f, source: readFileSync(join(matlabDir, f), 'utf8') }));
17const main = workspaceFiles.find((f) => f.name === 'bass_validate.m')!;
18const t0 = performance.now();
19const result = executeCode(main.source, { displayResults: false }, workspaceFiles, 'bass_validate.m');
20const text = result.output.join('');
21process.stdout.write(text);
22console.log(`total time : ${((performance.now() - t0) / 1000).toFixed(2)} s`);
24if (text.includes('MISMATCH') || text.includes('FAILED')) {
25 process.exit(1);
↑↓ move↵openescclose