From d35b3659c878d43e2dead3c06b0cb60f60ea36a1 Mon Sep 17 00:00:00 2001 From: Monica Kozbial Date: Mon, 13 Apr 2020 15:52:44 -0700 Subject: [PATCH] Removed duplicate block tests and renamed tests. (#3812) * Removed duplicate block tests and renamed tests. * Refactor shared code and add comment about parent/middle/child. --- tests/jsunit/block_test.js | 243 ------------------------------------- tests/jsunit/index.html | 1 - tests/mocha/block_test.js | 103 ++++++---------- 3 files changed, 37 insertions(+), 310 deletions(-) delete mode 100644 tests/jsunit/block_test.js 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);