mirror of
https://github.com/scratchfoundation/scratch-vm.git
synced 2024-12-23 14:32:59 -05:00
57e73a68a6
* Add costume dataURI to costumes from storage Towards #515, LLK/scratch-gui#279 * Fix tests * Load costumes incrementally Some of our tests assume that at least some of our costume data is available before the costume data is loaded. So, provide as much costume data as is available. * Remove unnecessary filter for null costumes Resolved when we updated to load costumes incrementally. /ht @cwillisf
97 lines
2.8 KiB
JavaScript
97 lines
2.8 KiB
JavaScript
var fs = require('fs');
|
|
var path = require('path');
|
|
var test = require('tap').test;
|
|
var attachTestStorage = require('../fixtures/attach-test-storage');
|
|
var extract = require('../fixtures/extract');
|
|
var VirtualMachine = require('../../src/index');
|
|
|
|
var projectUri = path.resolve(__dirname, '../fixtures/complex.sb2');
|
|
var project = extract(projectUri);
|
|
|
|
var spriteUri = path.resolve(__dirname, '../fixtures/sprite.json');
|
|
var sprite = fs.readFileSync(spriteUri, 'utf8');
|
|
|
|
test('complex', function (t) {
|
|
var vm = new VirtualMachine();
|
|
attachTestStorage(vm);
|
|
|
|
// Evaluate playground data and exit
|
|
vm.on('playgroundData', function (e) {
|
|
var threads = JSON.parse(e.threads);
|
|
t.ok(threads.length === 0);
|
|
t.end();
|
|
process.nextTick(process.exit);
|
|
});
|
|
|
|
// Manipulate each target
|
|
vm.on('targetsUpdate', function (data) {
|
|
var targets = data.targetList;
|
|
for (var i in targets) {
|
|
if (targets[i].isStage === true) continue;
|
|
if (targets[i].name.match(/test/)) continue;
|
|
|
|
vm.setEditingTarget(targets[i].id);
|
|
vm.renameSprite(targets[i].id, 'test');
|
|
vm.postSpriteInfo({
|
|
x: 0,
|
|
y: 10,
|
|
direction: 90,
|
|
draggable: true,
|
|
rotationStyle: 'all around',
|
|
visible: true
|
|
});
|
|
vm.addCostume(
|
|
'f9a1c175dbe2e5dee472858dd30d16bb.svg',
|
|
{
|
|
costumeName: 'costume1',
|
|
baseLayerID: 0,
|
|
baseLayerMD5: 'f9a1c175dbe2e5dee472858dd30d16bb.svg',
|
|
bitmapResolution: 1,
|
|
rotationCenterX: 47,
|
|
rotationCenterY: 55
|
|
}
|
|
);
|
|
}
|
|
});
|
|
|
|
// Start VM, load project, and run
|
|
t.doesNotThrow(function () {
|
|
vm.start();
|
|
vm.clear();
|
|
vm.setCompatibilityMode(false);
|
|
vm.setTurboMode(false);
|
|
vm.loadProject(project);
|
|
vm.greenFlag();
|
|
|
|
// Post IO data
|
|
vm.postIOData('mouse', {
|
|
isDown: true,
|
|
x: 0,
|
|
y: 10,
|
|
canvasWidth: 100,
|
|
canvasHeight: 100
|
|
});
|
|
|
|
// Add sprite
|
|
vm.addSprite2(sprite);
|
|
|
|
// Add backdrop
|
|
vm.addBackdrop(
|
|
'6b3d87ba2a7f89be703163b6c1d4c964.png',
|
|
{
|
|
costumeName: 'baseball-field',
|
|
baseLayerID: 26,
|
|
baseLayerMD5: '6b3d87ba2a7f89be703163b6c1d4c964.png',
|
|
bitmapResolution: 2,
|
|
rotationCenterX: 480,
|
|
rotationCenterY: 360
|
|
}
|
|
);
|
|
});
|
|
|
|
// After two seconds, get playground data and stop
|
|
setTimeout(function () {
|
|
vm.getPlaygroundData();
|
|
vm.stopAll();
|
|
}, 2000);
|
|
});
|