syndicate-js/packages/core/test/dataspace.test.ts

49 lines
1.6 KiB
TypeScript

/// SPDX-License-Identifier: GPL-3.0-or-later
/// SPDX-FileCopyrightText: Copyright © 2016-2021 Tony Garnock-Jones <tonyg@leastfixedpoint.com>
"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 ---');
});
});