From 13740f4c84d17e47fa3b41116a4bfdd3846928e8 Mon Sep 17 00:00:00 2001 From: Rachel Fenichel Date: Mon, 19 Nov 2018 14:50:00 -0800 Subject: [PATCH] Add tests for canConnectToPrevious --- tests/jsunit/connection_test.js | 106 ++++++++++++++++++++++++++++++++ 1 file changed, 106 insertions(+) diff --git a/tests/jsunit/connection_test.js b/tests/jsunit/connection_test.js index 0d10e63ea..1f7e5cdab 100644 --- a/tests/jsunit/connection_test.js +++ b/tests/jsunit/connection_test.js @@ -313,6 +313,112 @@ function test_isConnectionAllowed_NoNext() { assertTrue(two.isConnectionAllowed(one)); } +function test_canConnectToPrevious_alreadyConnected() { + var sharedWorkspace = {}; + var one = helper_createConnection(0, 0, Blockly.NEXT_STATEMENT); + one.sourceBlock_ = helper_makeSourceBlock(sharedWorkspace); + one.sourceBlock_.nextConnection = one; + + var two = helper_createConnection(0, 0, Blockly.PREVIOUS_STATEMENT); + two.sourceBlock_ = helper_makeSourceBlock(sharedWorkspace); + two.sourceBlock_.previousConnection = two; + + Blockly.Connection.connectReciprocally_(one, two); + + var three = helper_createConnection(0, 0, Blockly.PREVIOUS_STATEMENT); + three.sourceBlock_ = helper_makeSourceBlock(sharedWorkspace); + three.sourceBlock_.previousConnection = three; + + // The next connection is already occupied and cannot disconnect itself + // mid-drag. + assertFalse(one.canConnectToPrevious_(three)); +} + +function test_canConnect_dragging() { + var sharedWorkspace = {}; + var one = helper_createConnection(0, 0, Blockly.NEXT_STATEMENT); + one.sourceBlock_ = helper_makeSourceBlock(sharedWorkspace); + one.sourceBlock_.nextConnection = one; + + var two = helper_createConnection(0, 0, Blockly.PREVIOUS_STATEMENT); + two.sourceBlock_ = helper_makeSourceBlock(sharedWorkspace); + two.sourceBlock_.previousConnection = two; + + Blockly.Connection.connectReciprocally_(one, two); + + Blockly.draggingConnections_.push(one); + Blockly.draggingConnections_.push(two); + + assertFalse(two.isConnectionAllowed(one)); + assertFalse(one.isConnectionAllowed(two)); +} + +function test_canConnect_stackStart() { + var sharedWorkspace = {}; + var block1Next = helper_createConnection(0, 0, Blockly.NEXT_STATEMENT); + var block1 = helper_makeSourceBlock(sharedWorkspace); + block1Next.sourceBlock_ = block1 + block1.nextConnection = block1Next; + + var block1Prev = helper_createConnection(0, 0, Blockly.PREVIOUS_STATEMENT); + block1Prev.sourceBlock_ = block1; + block1.previousConnection = block1Prev + + var block2Prev = helper_createConnection(0, 0, Blockly.PREVIOUS_STATEMENT); + block2Prev.sourceBlock_ = helper_makeSourceBlock(sharedWorkspace); + block2Prev.sourceBlock_.previousConnection = block2Prev; + + Blockly.Connection.connectReciprocally_(block1Next, block2Prev); + + var three = helper_createConnection(0, 0, Blockly.NEXT_STATEMENT); + three.sourceBlock_ = helper_makeSourceBlock(sharedWorkspace); + three.sourceBlock_.nextConnection = three; + + // Can connect at the beginning of the stack. + assertTrue(three.canConnectToPrevious_(block1Prev)); + // But not in the middle of the stack. + assertFalse(three.canConnectToPrevious_(block2Prev)); +} + +function test_canConnect_stackStart_insertionMarker() { + var sharedWorkspace = {}; + var block1Next = helper_createConnection(0, 0, Blockly.NEXT_STATEMENT); + var block1 = helper_makeSourceBlock(sharedWorkspace); + block1.isInsertionMarker = function() { + return true; + } + block1.getPreviousBlock = function() { + return false; + } + block1Next.sourceBlock_ = block1 + block1.nextConnection = block1Next; + + var block1Prev = helper_createConnection(0, 0, Blockly.PREVIOUS_STATEMENT); + block1Prev.sourceBlock_ = block1; + block1.previousConnection = block1Prev + + var block2Prev = helper_createConnection(0, 0, Blockly.PREVIOUS_STATEMENT); + var block2 = helper_makeSourceBlock(sharedWorkspace); + block2Prev.sourceBlock_ = block2; + block2.previousConnection = block2Prev; + block2.getPreviousBlock = function() { + return block1; + } + + + Blockly.Connection.connectReciprocally_(block1Next, block2Prev); + + var three = helper_createConnection(0, 0, Blockly.NEXT_STATEMENT); + three.sourceBlock_ = helper_makeSourceBlock(sharedWorkspace); + three.sourceBlock_.nextConnection = three; + + // Can't connect to the previous connection of an insertion marker. + assertFalse(three.isConnectionAllowed(block1Prev)); + // But can connect to a previous connection that is already connected to an + // insertion marker. + assertTrue(three.isConnectionAllowed(block2Prev)); +} + function testCheckConnection_Okay() { connectionTest_setUp(); previous.checkConnection_(next);