mirror of
https://github.com/scratchfoundation/scratch-vm.git
synced 2025-01-09 14:32:07 -05:00
Tests for blocks.js getters
This commit is contained in:
parent
3b4a00ce46
commit
6e087475f6
1 changed files with 211 additions and 0 deletions
|
@ -16,10 +16,221 @@ test('spec', function (t) {
|
|||
t.type(b.moveBlock, 'function');
|
||||
t.type(b.changeBlock, 'function');
|
||||
t.type(b.deleteBlock, 'function');
|
||||
t.type(b.getBlock, 'function');
|
||||
t.type(b.getStacks, 'function');
|
||||
t.type(b.getNextBlock, 'function');
|
||||
t.type(b.getSubstack, 'function');
|
||||
t.type(b.getOpcode, 'function');
|
||||
|
||||
|
||||
t.end();
|
||||
});
|
||||
|
||||
// Getter tests
|
||||
test('getBlock', function (t) {
|
||||
var b = new Blocks();
|
||||
b.createBlock({
|
||||
id: 'foo',
|
||||
opcode: 'TEST_BLOCK',
|
||||
next: null,
|
||||
fields: {},
|
||||
inputs: {},
|
||||
topLevel: true
|
||||
});
|
||||
var block = b.getBlock('foo');
|
||||
t.type(block, 'object');
|
||||
var notBlock = b.getBlock('?');
|
||||
t.type(notBlock, 'undefined');
|
||||
t.end();
|
||||
});
|
||||
|
||||
test('getStacks', function (t) {
|
||||
var b = new Blocks();
|
||||
var stacks = b.getStacks();
|
||||
t.type(stacks, 'object');
|
||||
t.equals(stacks.length, 0);
|
||||
// Create two top-level blocks and one not.
|
||||
b.createBlock({
|
||||
id: 'foo',
|
||||
opcode: 'TEST_BLOCK',
|
||||
next: null,
|
||||
fields: {},
|
||||
inputs: {},
|
||||
topLevel: true
|
||||
});
|
||||
b.createBlock({
|
||||
id: 'foo2',
|
||||
opcode: 'TEST_BLOCK',
|
||||
next: null,
|
||||
fields: {},
|
||||
inputs: {},
|
||||
topLevel: true
|
||||
});
|
||||
b.createBlock({
|
||||
id: 'foo3',
|
||||
opcode: 'TEST_BLOCK',
|
||||
next: null,
|
||||
fields: {},
|
||||
inputs: {},
|
||||
topLevel: false
|
||||
});
|
||||
|
||||
stacks = b.getStacks();
|
||||
t.type(stacks, 'object');
|
||||
t.equals(stacks.length, 2);
|
||||
t.ok(stacks.indexOf('foo') > -1);
|
||||
t.ok(stacks.indexOf('foo2') > -1);
|
||||
t.equals(stacks.indexOf('foo3'), -1);
|
||||
t.end();
|
||||
|
||||
});
|
||||
|
||||
test('getNextBlock', function (t) {
|
||||
var b = new Blocks();
|
||||
b.createBlock({
|
||||
id: 'foo',
|
||||
opcode: 'TEST_BLOCK',
|
||||
next: null,
|
||||
fields: {},
|
||||
inputs: {},
|
||||
topLevel: true
|
||||
});
|
||||
|
||||
var next = b.getNextBlock('foo');
|
||||
t.equals(next, null);
|
||||
|
||||
// Add a block with "foo" as its next.
|
||||
b.createBlock({
|
||||
id: 'foo2',
|
||||
opcode: 'TEST_BLOCK',
|
||||
next: 'foo',
|
||||
fields: {},
|
||||
inputs: {},
|
||||
topLevel: true
|
||||
});
|
||||
|
||||
next = b.getNextBlock('foo2');
|
||||
t.equals(next, 'foo');
|
||||
|
||||
// Block that doesn't exist.
|
||||
var noBlock = b.getNextBlock('?');
|
||||
t.equals(noBlock, null);
|
||||
|
||||
t.end();
|
||||
});
|
||||
|
||||
test('getSubstack', function (t) {
|
||||
var b = new Blocks();
|
||||
// Single substack
|
||||
b.createBlock({
|
||||
id: 'foo',
|
||||
opcode: 'TEST_BLOCK',
|
||||
next: null,
|
||||
fields: {},
|
||||
inputs: {
|
||||
SUBSTACK: {
|
||||
name: 'SUBSTACK',
|
||||
block: 'foo2'
|
||||
}
|
||||
},
|
||||
topLevel: true
|
||||
});
|
||||
b.createBlock({
|
||||
id: 'foo2',
|
||||
opcode: 'TEST_BLOCK',
|
||||
next: null,
|
||||
fields: {},
|
||||
inputs: {},
|
||||
topLevel: false
|
||||
});
|
||||
|
||||
var substack = b.getSubstack('foo');
|
||||
t.equals(substack, 'foo2');
|
||||
|
||||
var notSubstack = b.getSubstack('?');
|
||||
t.equals(notSubstack, null);
|
||||
|
||||
t.end();
|
||||
});
|
||||
|
||||
test('getSubstack2', function (t) {
|
||||
var b = new Blocks();
|
||||
// Second substack
|
||||
b.createBlock({
|
||||
id: 'foo',
|
||||
opcode: 'TEST_BLOCK',
|
||||
next: null,
|
||||
fields: {},
|
||||
inputs: {
|
||||
SUBSTACK: {
|
||||
name: 'SUBSTACK',
|
||||
block: 'foo2'
|
||||
},
|
||||
SUBSTACK2: {
|
||||
name: 'SUBSTACK2',
|
||||
block: 'foo3'
|
||||
}
|
||||
},
|
||||
topLevel: true
|
||||
});
|
||||
b.createBlock({
|
||||
id: 'foo2',
|
||||
opcode: 'TEST_BLOCK',
|
||||
next: null,
|
||||
fields: {},
|
||||
inputs: {},
|
||||
topLevel: false
|
||||
});
|
||||
b.createBlock({
|
||||
id: 'foo3',
|
||||
opcode: 'TEST_BLOCK',
|
||||
next: null,
|
||||
fields: {},
|
||||
inputs: {},
|
||||
topLevel: false
|
||||
});
|
||||
|
||||
var substack1 = b.getSubstack('foo', 1);
|
||||
var substack2 = b.getSubstack('foo', 2);
|
||||
t.equals(substack1, 'foo2');
|
||||
t.equals(substack2, 'foo3');
|
||||
|
||||
t.end();
|
||||
});
|
||||
|
||||
test('getSubstack with none', function (t) {
|
||||
var b = new Blocks();
|
||||
b.createBlock({
|
||||
id: 'foo',
|
||||
opcode: 'TEST_BLOCK',
|
||||
next: null,
|
||||
fields: {},
|
||||
inputs: {},
|
||||
topLevel: true
|
||||
});
|
||||
var noSubstack = b.getSubstack('foo');
|
||||
t.equals(noSubstack, null);
|
||||
t.end();
|
||||
});
|
||||
|
||||
test('getOpcode', function (t) {
|
||||
var b = new Blocks();
|
||||
b.createBlock({
|
||||
id: 'foo',
|
||||
opcode: 'TEST_BLOCK',
|
||||
next: null,
|
||||
fields: {},
|
||||
inputs: {},
|
||||
topLevel: true
|
||||
});
|
||||
var opcode = b.getOpcode('foo');
|
||||
t.equals(opcode, 'TEST_BLOCK');
|
||||
var notOpcode = b.getOpcode('?');
|
||||
t.equals(notOpcode, null);
|
||||
t.end();
|
||||
});
|
||||
|
||||
// Block events tests
|
||||
test('create', function (t) {
|
||||
var b = new Blocks();
|
||||
b.createBlock({
|
||||
|
|
Loading…
Reference in a new issue