You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.9 KiB
43 lines
1.9 KiB
const mod = await import('node:module'); |
|
const require = mod.createRequire(import.meta.url); |
|
const parser = require('../content/parser.js'); |
|
|
|
const L = String.fromCharCode(10214); |
|
const R = String.fromCharCode(10215); |
|
const LF = String.fromCharCode(10); |
|
const Q = String.fromCharCode(34); |
|
const LB = String.fromCharCode(123); |
|
const RB = String.fromCharCode(125); |
|
const BS = String.fromCharCode(92); |
|
const LT = String.fromCharCode(60); |
|
|
|
let pass = 0; |
|
let fail = 0; |
|
const ok = (name, cond) => cond ? (pass++, console.log('OK ' + name)) : (fail++, console.log('FAIL ' + name)); |
|
|
|
// Test 1: DSH JSON |
|
const json1 = LB + Q + 'tool' + Q + ':' + Q + 'dsh_read' + Q + ',' + Q + 'args' + Q + ':' + LB + Q + 'path' + Q + ':' + Q + 'README.md' + Q + RB + RB; |
|
const t1 = L + 'DSH' + R + json1 + L + '/DSH' + R; |
|
const r1 = parser.extractCalls(t1, 3); |
|
ok('DSH count', r1.calls.length === 1); |
|
ok('DSH tool', !!r1.calls[0] ? r1.calls[0].tool === 'dsh_read' : false); |
|
ok('DSH path', !!r1.calls[0] ? r1.calls[0].args.path === 'README.md' : false); |
|
|
|
// Test 2: DSH_B64 |
|
const b64 = 'eyJ0b29sIjoiZHNoX3RyZWUiLCJhcmdzIjp7InBhdGgiOiIuIn19'; |
|
const t2 = L + 'DSH_B64' + R + b64 + L + '/DSH_B64' + R; |
|
const r2 = parser.extractCalls(t2, 3); |
|
ok('B64 count', r2.calls.length === 1); |
|
ok('B64 tool', !!r2.calls[0] ? r2.calls[0].tool === 'dsh_tree' : false); |
|
|
|
// Test 3: DSH_FILE |
|
const phpBody = LT + '?php' + LF + 'namespace app' + BS + 'models;' + LF; |
|
const t3 = L + 'DSH_FILE path=' + Q + 't.php' + Q + R + LF + phpBody + L + '/DSH_FILE' + R; |
|
const r3 = parser.extractCalls(t3, 3); |
|
ok('FILE count', r3.calls.length === 1); |
|
ok('FILE path', !!r3.calls[0] ? r3.calls[0].args.path === 't.php' : false); |
|
ok('FILE tool', !!r3.calls[0] ? r3.calls[0].tool === 'dsh_write' : false); |
|
ok('FILE content', !!r3.calls[0] ? r3.calls[0].args.content.indexOf('namespace app' + BS + 'models') !== -1 : false); |
|
|
|
console.log('passed ' + pass + ', failed ' + fail); |
|
if (fail > 0) process.exit(1);
|
|
|