/// SPDX-License-Identifier: GPL-3.0-or-later /// SPDX-FileCopyrightText: Copyright © 2016-2021 Tony Garnock-Jones "use strict"; const Immutable = require('immutable'); const Syndicate = require('../src/index.js'); const { Skeleton, Dataspace, Observe, Capture, Discard } = Syndicate; describe('dataspace', () => { it('should boot and run', () => { // TODO: convert this into even a rudimentary somewhat-real test case // (change console.log into gathering a trace) let ds = new Dataspace(() => { // console.log('boot'); Dataspace.currentFacet().addEndpoint(() => { let handler = Skeleton.analyzeAssertion(Capture(Discard())); handler.callback = (evt, vs) => { if (Observe.isClassOf(vs.get(0))) { // console.log('OBSERVATION EVENT', // evt, // vs, // Immutable.is(vs.get(0).get(0), Capture(Discard()))); } else { // console.log('EVENT', evt, vs); } }; return [Observe(Capture(Discard())), handler]; }); Dataspace.currentFacet().addStartScript(() => { Dataspace.deferTurn(() => { // console.log('after defer'); Dataspace.send(1234); // console.log('after send'); Dataspace.spawn('secondproc', () => { // console.log('secondproc boot'); }); }); }); }); // console.log('--- starting ---'); while (ds.runScripts()) { // console.log('--- runScripts boundary ---'); } // console.log('--- done ---'); }); });