scratch-vm/test/unit/blocks_looks.js

74 lines
2.2 KiB
JavaScript
Raw Normal View History

const test = require('tap').test;
const Looks = require('../../src/blocks/scratch3_looks');
2018-02-07 18:49:18 -05:00
const Runtime = require('../../src/engine/runtime');
const util = {
target: {
currentCostume: 0, // Internally, current costume is 0 indexed
2018-02-22 15:42:35 -05:00
getCostumes: function () {
return this.sprite.costumes;
},
sprite: {
costumes: [
{name: 'first name'},
{name: 'second name'},
{name: 'third name'}
]
}
}
};
const fakeRuntime = {
getTargetForStage: () => util.target, // Just return the dummy target above.
on: () => {} // Stub out listener methods used in constructor.
};
const blocks = new Looks(fakeRuntime);
test('getCostumeNumberName returns 1-indexed costume number', t => {
util.target.currentCostume = 0; // This is 0-indexed.
const args = {NUMBER_NAME: 'number'};
const number = blocks.getCostumeNumberName(args, util);
t.strictEqual(number, 1);
t.end();
});
test('getCostumeNumberName can return costume name', t => {
util.target.currentCostume = 0; // This is 0-indexed.
const args = {NUMBER_NAME: 'name'};
2018-06-09 20:52:46 -04:00
const name = blocks.getCostumeNumberName(args, util);
t.strictEqual(name, 'first name');
t.end();
});
test('getBackdropNumberName returns 1-indexed costume number', t => {
util.target.currentCostume = 2; // This is 0-indexed.
const args = {NUMBER_NAME: 'number'};
const number = blocks.getBackdropNumberName(args, util);
t.strictEqual(number, 3);
t.end();
});
test('getBackdropNumberName can return costume name', t => {
util.target.currentCostume = 2; // This is 0-indexed.
const args = {NUMBER_NAME: 'name'};
const number = blocks.getBackdropNumberName(args, util);
t.strictEqual(number, 'third name');
t.end();
});
2018-01-31 09:23:08 -05:00
test('numbers should be rounded to two decimals in say', t => {
2018-02-07 18:49:18 -05:00
const rt = new Runtime();
const looks = new Looks(rt);
2018-01-31 09:23:08 -05:00
const args = {MESSAGE: 3.14159};
2018-02-07 18:49:18 -05:00
const expectedSayString = '3.14';
rt.removeAllListeners('SAY'); // Prevent say blocks from executing
rt.addListener('SAY', (target, type, sayString) => {
t.strictEqual(sayString, expectedSayString);
t.end();
});
looks.say(args, util);
2018-01-31 09:23:08 -05:00
});