62 lines
1.7 KiB
JavaScript
62 lines
1.7 KiB
JavaScript
const {test} = require('node:test');
|
|
const assert = require('node:assert');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
const VirtualMachine = require('../../src/virtual-machine');
|
|
|
|
const fixtureData = fs.readFileSync(path.join(__dirname, '../fixtures/tw-slow-custom-reporter-stack-click.sb3'));
|
|
|
|
// After starting this block, first step will yield, second step will report value
|
|
const procedureCallBlockId = 'e';
|
|
|
|
test('when thread target is editing target', async () => {
|
|
const vm = new VirtualMachine();
|
|
await vm.loadProject(fixtureData);
|
|
const visualReports = [];
|
|
vm.on('VISUAL_REPORT', visualReport => {
|
|
visualReports.push(visualReport);
|
|
});
|
|
|
|
vm.setEditingTarget(vm.runtime.getSpriteTargetByName('Sprite1').id);
|
|
vm.runtime.toggleScript(procedureCallBlockId, {
|
|
stackClick: true
|
|
});
|
|
|
|
assert.deepEqual(visualReports, []);
|
|
|
|
vm.runtime._step();
|
|
assert.deepEqual(visualReports, []);
|
|
|
|
vm.runtime._step();
|
|
assert.deepEqual(visualReports, [
|
|
{
|
|
id: 'e',
|
|
value: 'return value'
|
|
}
|
|
]);
|
|
});
|
|
|
|
test('when thread target is not editing target', async () => {
|
|
const vm = new VirtualMachine();
|
|
await vm.loadProject(fixtureData);
|
|
const visualReports = [];
|
|
vm.on('VISUAL_REPORT', visualReport => {
|
|
visualReports.push(visualReport);
|
|
});
|
|
|
|
vm.setEditingTarget(vm.runtime.getSpriteTargetByName('Sprite1').id);
|
|
vm.runtime.toggleScript(procedureCallBlockId, {
|
|
stackClick: true
|
|
});
|
|
|
|
assert.deepEqual(visualReports, []);
|
|
|
|
vm.runtime._step();
|
|
assert.deepEqual(visualReports, []);
|
|
|
|
vm.setEditingTarget(vm.runtime.getSpriteTargetByName('Sprite2').id);
|
|
|
|
vm.runtime._step();
|
|
assert.deepEqual(visualReports, []);
|
|
});
|