Tests for blocks.js getters

This commit is contained in:
Tim Mickel 2016-06-07 11:34:01 -04:00
parent 3b4a00ce46
commit 6e087475f6

View file

@ -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({