diff --git a/tests/jsunit/block_test.js b/tests/jsunit/block_test.js
deleted file mode 100644
index 3dff5d20e..000000000
--- a/tests/jsunit/block_test.js
+++ /dev/null
@@ -1,243 +0,0 @@
-/**
- * @license
- * Copyright 2018 Google LLC
- * SPDX-License-Identifier: Apache-2.0
- */
-
- /**
- * @fileoverview Tests for Blockly.Block
- * @author fenichel@google.com (Rachel Fenichel)
- */
-
-'use strict';
-
-var workspace;
-var mockControl_;
-
-function defineTestBlocks() {
- Blockly.defineBlocksWithJsonArray([{
- "type": "stack_block",
- "message0": "",
- "previousStatement": null,
- "nextStatement": null
- },
- {
- "type": "row_block",
- "message0": "%1",
- "args0": [
- {
- "type": "input_value",
- "name": "INPUT"
- }
- ],
- "output": null
- }]);
-}
-
-function undefineTestBlocks() {
- delete Blockly.Blocks['stack_block'];
- delete Blockly.Blocks['row_block'];
-}
-
-function blockTest_setUp() {
- defineTestBlocks();
- workspace = new Blockly.Workspace();
-}
-
-function blockTest_tearDown() {
- undefineTestBlocks();
- workspace.dispose();
- if (mockControl_) {
- mockControl_.restore();
- }
-}
-
-function assertUnpluggedNoheal(blocks) {
- // A has nothing connected to it.
- assertEquals(0, blocks.A.getChildren().length);
- // B and C are still connected.
- assertEquals(blocks.B, blocks.C.getParent());
- // B is the top of its stack.
- assertNull(blocks.B.getParent());
-}
-
-function assertUnpluggedHealed(blocks) {
- // A and C are connected.
- assertEquals(1, blocks.A.getChildren().length);
- assertEquals(blocks.A, blocks.C.getParent());
- // B has nothing connected to it.
- assertEquals(0, blocks.B.getChildren().length);
- // B is the top of its stack.
- assertNull(blocks.B.getParent());
-}
-
-function assertUnpluggedHealFailed(blocks) {
- // A has nothing connected to it.
- assertEquals(0, blocks.A.getChildren().length);
- // B has nothing connected to it.
- assertEquals(0, blocks.B.getChildren().length);
- // B is the top of its stack.
- assertNull(blocks.B.getParent());
- // C is the top of its stack.
- assertNull(blocks.C.getParent());
-}
-
-function setUpRowBlocks() {
- var blockA = workspace.newBlock('row_block');
- var blockB = workspace.newBlock('row_block');
- var blockC = workspace.newBlock('row_block');
-
- blockA.inputList[0].connection.connect(blockB.outputConnection);
- blockB.inputList[0].connection.connect(blockC.outputConnection);
-
- assertEquals(blockB, blockC.getParent());
-
- return {
- A: blockA,
- B: blockB,
- C: blockC
- };
-}
-
-function setUpStackBlocks() {
- var blockA = workspace.newBlock('stack_block');
- var blockB = workspace.newBlock('stack_block');
- var blockC = workspace.newBlock('stack_block');
-
- blockA.nextConnection.connect(blockB.previousConnection);
- blockB.nextConnection.connect(blockC.previousConnection);
-
- assertEquals(blockB, blockC.getParent());
-
- return {
- A: blockA,
- B: blockB,
- C: blockC
- };
-}
-
-
-function test_block_stack_unplug_noheal() {
- blockTest_setUp();
- try {
- var blocks = setUpStackBlocks();
- blocks.B.unplug();
- assertUnpluggedNoheal(blocks);
- } finally {
- blockTest_tearDown();
- }
-}
-
-function test_block_stack_unplug_heal() {
- blockTest_setUp();
- try {
- var blocks = setUpStackBlocks();
- blocks.B.unplug(true);
- assertUnpluggedHealed(blocks);
- } finally {
- blockTest_tearDown();
- }
-}
-
-function test_block_stack_unplug_heal_bad_checks() {
- blockTest_setUp();
- try {
- var blocks = setUpStackBlocks();
-
- // A and C can't connect, but both can connect to B.
- blocks.A.nextConnection.setCheck('type1');
- blocks.C.previousConnection.setCheck('type2');
-
- // The types don't work.
- blocks.B.unplug(true);
-
- assertUnpluggedHealFailed(blocks);
- } finally {
- blockTest_tearDown();
- }
-}
-
-function test_block_row_unplug_noheal() {
- blockTest_setUp();
- try {
- var blocks = setUpRowBlocks();
- blocks.B.unplug(false);
- assertUnpluggedNoheal(blocks);
- } finally {
- blockTest_tearDown();
- }
-}
-
-function test_block_row_unplug_heal() {
- blockTest_setUp();
- try {
- var blocks = setUpRowBlocks();
- // Each block has only one input, and the types work.
- blocks.B.unplug(true);
- assertUnpluggedHealed(blocks);
- } finally {
- blockTest_tearDown();
- }
-}
-
-function test_block_row_unplug_heal_bad_checks() {
- blockTest_setUp();
- try {
- var blocks = setUpRowBlocks();
-
- // A and C can't connect, but both can connect to B.
- blocks.A.inputList[0].connection.setCheck('type1');
- blocks.C.outputConnection.setCheck('type2');
-
- // Each block has only one input, but the types don't work.
- blocks.B.unplug(true);
- assertUnpluggedHealFailed(blocks);
- } finally {
- blockTest_tearDown();
- }
-}
-
-function test_block_row_unplug_multi_inputs_parent() {
- blockTest_setUp();
- try {
- var blocks = setUpRowBlocks();
- // Add extra input to parent
- blocks.A.appendValueInput('INPUT').setCheck(null);
-
- // Parent block has multiple inputs.
- blocks.B.unplug(true);
- assertUnpluggedHealed(blocks);
- } finally {
- blockTest_tearDown();
- }
-}
-
-function test_block_row_unplug_multi_inputs_middle() {
- blockTest_setUp();
- try {
- var blocks = setUpRowBlocks();
- // Add extra input to middle block
- blocks.B.appendValueInput('INPUT').setCheck(null);
-
- // Middle block has multiple inputs.
- blocks.B.unplug(true);
- assertUnpluggedHealed(blocks);
- } finally {
- blockTest_tearDown();
- }
-}
-
-function test_block_row_unplug_multi_inputs_child() {
- blockTest_setUp();
- try {
- var blocks = setUpRowBlocks();
- // Add extra input to child block
- blocks.C.appendValueInput('INPUT').setCheck(null);
-
- // Child block input count doesn't matter.
- blocks.B.unplug(true);
- assertUnpluggedHealed(blocks);
- } finally {
- blockTest_tearDown();
- }
-}
diff --git a/tests/jsunit/index.html b/tests/jsunit/index.html
index d7d36a7d6..bbb0f24b6 100644
--- a/tests/jsunit/index.html
+++ b/tests/jsunit/index.html
@@ -17,7 +17,6 @@
-
diff --git a/tests/mocha/block_test.js b/tests/mocha/block_test.js
index 69a00b96e..dcdea6a61 100644
--- a/tests/mocha/block_test.js
+++ b/tests/mocha/block_test.js
@@ -49,6 +49,29 @@ suite('Blocks', function() {
delete Blockly.Blocks['statement_block'];
});
+ function createTestBlocks(workspace, isRow) {
+ var blockType = isRow ? 'row_block' : 'stack_block';
+ var blockA = workspace.newBlock(blockType);
+ var blockB = workspace.newBlock(blockType);
+ var blockC = workspace.newBlock(blockType);
+
+ if (isRow) {
+ blockA.inputList[0].connection.connect(blockB.outputConnection);
+ blockB.inputList[0].connection.connect(blockC.outputConnection);
+ } else {
+ blockA.nextConnection.connect(blockB.previousConnection);
+ blockB.nextConnection.connect(blockC.previousConnection);
+ }
+
+ assertEquals(blockB, blockC.getParent());
+
+ return {
+ A: blockA, /* Parent */
+ B: blockB, /* Middle */
+ C: blockC /* Child */
+ };
+ }
+
suite('Unplug', function() {
function assertUnpluggedNoheal(blocks) {
// A has nothing connected to it.
@@ -80,20 +103,7 @@ suite('Blocks', function() {
suite('Row', function() {
setup(function() {
- var blockA = this.workspace.newBlock('row_block');
- var blockB = this.workspace.newBlock('row_block');
- var blockC = this.workspace.newBlock('row_block');
-
- blockA.inputList[0].connection.connect(blockB.outputConnection);
- blockB.inputList[0].connection.connect(blockC.outputConnection);
-
- assertEquals(blockB, blockC.getParent());
-
- this.blocks = {
- A: blockA,
- B: blockB,
- C: blockC
- };
+ this.blocks = createTestBlocks(this.workspace, true);
});
test('Don\'t heal', function() {
@@ -116,21 +126,21 @@ suite('Blocks', function() {
blocks.B.unplug(true);
assertUnpluggedHealFailed(blocks);
});
- test('A has multiple inputs', function() {
+ test('Parent has multiple inputs', function() {
var blocks = this.blocks;
// Add extra input to parent
blocks.A.appendValueInput("INPUT").setCheck(null);
blocks.B.unplug(true);
assertUnpluggedHealed(blocks);
});
- test('B has multiple inputs', function() {
+ test('Middle has multiple inputs', function() {
var blocks = this.blocks;
// Add extra input to middle block
blocks.B.appendValueInput("INPUT").setCheck(null);
blocks.B.unplug(true);
assertUnpluggedHealed(blocks);
});
- test('C has multiple inputs', function() {
+ test('Child has multiple inputs', function() {
var blocks = this.blocks;
// Add extra input to child block
blocks.C.appendValueInput("INPUT").setCheck(null);
@@ -138,7 +148,7 @@ suite('Blocks', function() {
blocks.B.unplug(true);
assertUnpluggedHealed(blocks);
});
- test('C is Shadow', function() {
+ test('Child is shadow', function() {
var blocks = this.blocks;
blocks.C.setShadow(true);
blocks.B.unplug(true);
@@ -149,20 +159,7 @@ suite('Blocks', function() {
});
suite('Stack', function() {
setup(function() {
- var blockA = this.workspace.newBlock('stack_block');
- var blockB = this.workspace.newBlock('stack_block');
- var blockC = this.workspace.newBlock('stack_block');
-
- blockA.nextConnection.connect(blockB.previousConnection);
- blockB.nextConnection.connect(blockC.previousConnection);
-
- assertEquals(blockB, blockC.getParent());
-
- this.blocks = {
- A: blockA,
- B: blockB,
- C: blockC
- };
+ this.blocks = createTestBlocks(this.workspace, false);
});
test('Don\'t heal', function() {
@@ -184,7 +181,7 @@ suite('Blocks', function() {
assertUnpluggedHealFailed(blocks);
});
- test('C is Shadow', function() {
+ test('Child is shadow', function() {
var blocks = this.blocks;
blocks.C.setShadow(true);
blocks.B.unplug(true);
@@ -226,20 +223,7 @@ suite('Blocks', function() {
suite('Row', function() {
setup(function() {
- var blockA = this.workspace.newBlock('row_block');
- var blockB = this.workspace.newBlock('row_block');
- var blockC = this.workspace.newBlock('row_block');
-
- blockA.inputList[0].connection.connect(blockB.outputConnection);
- blockB.inputList[0].connection.connect(blockC.outputConnection);
-
- assertEquals(blockB, blockC.getParent());
-
- this.blocks = {
- A: blockA,
- B: blockB,
- C: blockC
- };
+ this.blocks = createTestBlocks(this.workspace, true);
});
test('Don\'t heal', function() {
@@ -262,21 +246,21 @@ suite('Blocks', function() {
blocks.B.dispose(true);
assertDisposedHealFailed(blocks);
});
- test('A has multiple inputs', function() {
+ test('Parent has multiple inputs', function() {
var blocks = this.blocks;
// Add extra input to parent
blocks.A.appendValueInput("INPUT").setCheck(null);
blocks.B.dispose(true);
assertDisposedHealed(blocks);
});
- test('B has multiple inputs', function() {
+ test('Middle has multiple inputs', function() {
var blocks = this.blocks;
// Add extra input to middle block
blocks.B.appendValueInput("INPUT").setCheck(null);
blocks.B.dispose(true);
assertDisposedHealed(blocks);
});
- test('C has multiple inputs', function() {
+ test('Child has multiple inputs', function() {
var blocks = this.blocks;
// Add extra input to child block
blocks.C.appendValueInput("INPUT").setCheck(null);
@@ -284,7 +268,7 @@ suite('Blocks', function() {
blocks.B.dispose(true);
assertDisposedHealed(blocks);
});
- test('C is Shadow', function() {
+ test('Child is shadow', function() {
var blocks = this.blocks;
blocks.C.setShadow(true);
blocks.B.dispose(true);
@@ -295,20 +279,7 @@ suite('Blocks', function() {
});
suite('Stack', function() {
setup(function() {
- var blockA = this.workspace.newBlock('stack_block');
- var blockB = this.workspace.newBlock('stack_block');
- var blockC = this.workspace.newBlock('stack_block');
-
- blockA.nextConnection.connect(blockB.previousConnection);
- blockB.nextConnection.connect(blockC.previousConnection);
-
- assertEquals(blockB, blockC.getParent());
-
- this.blocks = {
- A: blockA,
- B: blockB,
- C: blockC
- };
+ this.blocks = createTestBlocks(this.workspace, false);
});
test('Don\'t heal', function() {
@@ -330,7 +301,7 @@ suite('Blocks', function() {
assertDisposedHealFailed(blocks);
});
- test('C is Shadow', function() {
+ test('Child is shadow', function() {
var blocks = this.blocks;
blocks.C.setShadow(true);
blocks.B.dispose(true);