author | Alan Dipert
<alan@dipert.org> 2020-01-17 05:04:13 UTC |
committer | Alan Dipert
<alan@dipert.org> 2020-01-17 05:04:13 UTC |
parent | a96e4864c0502f1a50efdea51231d7513e508fd6 |
jacl-tests.js | +2 | -24 |
jacl.js | +3 | -13 |
diff --git a/jacl-tests.js b/jacl-tests.js index 48370fc..7e15431 100644 --- a/jacl-tests.js +++ b/jacl-tests.js @@ -3,24 +3,11 @@ QUnit.config.autostart = false; QUnit.module('Reader'); -const makeRead1 = (rdr, it) => { - return async (str, timeout = true) => { - const done = timeout ? it.async() : null; - rdr.stream.writeEach(str); - const obj = await rdr.read(); - if (done) done(); - return obj; - } -}; - -const freshRdr = (is) => { - const rdr = new Reader(new BufferedStream()); - return [rdr, makeRead1(rdr, is)]; +const read1 = async s => { + return (new Reader(new StringStream(s))).read(); } QUnit.test('Integers', async is => { - var [rdr, read1] = freshRdr(is); - is.strictEqual(await read1('123 '), 123, 'single integer'); is.strictEqual(await read1('+9912 '), 9912, 'integer with leading +'); is.strictEqual(await read1('0 '), 0, 'zero'); @@ -29,7 +16,6 @@ QUnit.test('Integers', async is => { }); QUnit.test('Symbols', async is => { - var [rdr, read1] = freshRdr(is); var sym; sym = await read1('somesym '); @@ -55,7 +41,6 @@ QUnit.test('Symbols', async is => { /Symbol 'OMG' not found in package 'TEST-PACKAGE1'/, 'non-existent symbol not found' ); - [rdr, read1] = freshRdr(is); testPkg1.intern("some symbol") sym = await read1('|TEST-PACKAGE1::some symbol| '); @@ -79,14 +64,12 @@ QUnit.test('Symbols', async is => { /Symbol 'some symbol' not external in package 'TEST-PACKAGE1'/, 'private symbol reference throws' ); - [rdr, read1] = freshRdr(is); is.rejects( read1('test-package1:sym123 ', false), /Symbol 'SYM123' not found in package 'TEST-PACKAGE1'/, 'non-existent qualified symbol throws' ); - [rdr, read1] = freshRdr(is); sym = await read1(':some-lil-kw '); is.strictEqual(sym.name, 'SOME-LIL-KW', 'kw name'); @@ -115,7 +98,6 @@ QUnit.test('Symbols', async is => { }); QUnit.test('Sharpsign', async is => { - var [rdr, read1] = freshRdr(is); var sym; sym = await read1('#:foop '); @@ -127,7 +109,6 @@ QUnit.test('Sharpsign', async is => { }); QUnit.test('Conses', async is => { - var [rdr, read1] = freshRdr(is); var cons; cons = await read1('()'); @@ -146,21 +127,18 @@ QUnit.test('Conses', async is => { /Nothing after . in list/, 'nothing after dot' ); - [rdr, read1] = freshRdr(is); is.rejects( read1('( . t)', false), /Nothing before . in list/, 'nothing before dot' ); - [rdr, read1] = freshRdr(is); is.rejects( read1('(1 . 2 3)', false), /More than one object after . in list/, 'more than one object after dot' ); - [rdr, read1] = freshRdr(is); cons = await read1('(1 2 3 4)'); is.deepEqual(Array.from(cons), [1,2,3,4], 'convert to array'); diff --git a/jacl.js b/jacl.js index 1008225..f85a1fe 100644 --- a/jacl.js +++ b/jacl.js @@ -403,7 +403,6 @@ class StringStream { class BufferedStream { constructor() { - console.log("omg"); this.buf = []; this.resolveQueue = []; } @@ -1960,22 +1959,14 @@ const startRepl = async () => { } }; -const loadLispScripts = async (profile = false) => { +const loadLispScripts = async () => { for (let i = 0; i < document.head.childNodes.length; i++) { const child = document.head.childNodes[i]; if (child.nodeName === 'SCRIPT' && child.src.endsWith('.lisp')) { const code = await (await fetch(child.src)).text(); const start = new Date(); - if (profile) console.profile(child.src); - const ss = new StringStream(code); const rdr = new Reader(ss); - - //const ss = new BufferedStream(); - //const rdr = new Reader(ss); - //ss.writeEach(code); - //ss.write(EOF); - for await(const obj of rdr) { if (obj === EOF) break; const node = analyze(emptyEnv, null, obj); @@ -1984,14 +1975,13 @@ const loadLispScripts = async (profile = false) => { eval(sb.toString()); } console.log(`;Loaded ${child.src} in ${(new Date())-start} ms`); - if (profile) console.profileEnd(child.src); } } }; window.addEventListener('load', async () => { - await loadLispScripts(false); - //QUnit.start(); + await loadLispScripts(); + QUnit.start(); startRepl(); });