test: Added connection test blocks. (#3525)

* test: Added connection test blocks.
This commit is contained in:
Beka Westberg
2020-01-13 15:51:42 -08:00
committed by Sam El-Husseini
parent 4f80bd6cbf
commit 1278cd95ea
2 changed files with 517 additions and 4 deletions

View File

@@ -205,6 +205,369 @@ Blockly.defineBlocksWithJsonArray([ // BEGIN JSON EXTRACT
"inputsInline": false,
"style": "math_blocks"
},
{
"type": "test_connections_row_input",
"message0": "%1",
"args0": [
{
"type": "input_value",
"name": "NAME",
}
],
"colour": '#aaaaaa',
"tooltip": "No Checks\n" +
"Can connect to any output connection."
},
{
"type": "test_connections_row_blue",
"message0": "%1",
"args0": [
{
"type": "input_value",
"name": "NAME",
"check": "greenRel"
}
],
"output": "noneOut",
"colour": 230,
"tooltip": "Output: noneOut\n" +
"Input: greenRel\n" +
"Input connection can accept yellow blocks but not red blocks."
},
{
"type": "test_connections_row_yellow",
"message0": "%1",
"args0": [
{
"type": "input_value",
"name": "NAME",
"check": [
"orangeRel",
"yellowRel"
]
}
],
"output": [
"yellowRel",
"greenRel"
],
"colour": 60,
"tooltip": "Output: yellowRel, greenRel\n" +
"Input: yellowRel, orangeRel\n" +
"Output can connect to yellow blocks and blue blocks, but not red blocks.\n" +
"Input can connect to yellow blocks and red blocks, but not blue blocks."
},
{
"type": "test_connections_row_red",
"message0": "%1",
"args0": [
{
"type": "input_value",
"name": "NAME",
"check": "noneIn"
}
],
"output": "orangeRel",
"colour": 0,
"tooltip": "Output: orangeRel\n" +
"Input: noneIn\n" +
"Output can connect to yellow blocks, but not blue blocks."
},
{
"type": "test_connections_row_output",
"message0": "",
"output": null,
"colour": '#aaaaaa',
"tooltip": "No Checks\n" +
"Can connect to any input connection."
},
{
"type": "test_connections_multivalue_1valid",
"message0": "none %1 both %2",
"args0": [
{
"type": "input_value",
"name": "NAME1",
"align": "RIGHT",
"check": "noneIn"
},
{
"type": "input_value",
"name": "NAME2",
"align": "RIGHT",
"check": [
"yellowRel",
"orangeRel"
]
}
],
"output": [
"yellowRel",
"greenRel"
],
"colour": 60,
"tooltip": "Output: yellowRel, greenRel\n" +
"Input Top: noneIn\n" +
"Input Bottom: yellowRel, orangeRel\n" +
"Output can connect to yellow blocks and blue blocks, but not red blocks.\n" +
"Top Input can connect to nothing, except grey blocks.\n" +
"Bottom Input can connect to yellow blocks and red blocks, but not blue" +
" blocks."
},
{
"type": "test_connections_multivalue_2valid",
"message0": "both %1 both %2",
"args0": [
{
"type": "input_value",
"name": "NAME1",
"align": "RIGHT",
"check": [
"yellowRel",
"orangeRel"
]
},
{
"type": "input_value",
"name": "NAME2",
"align": "RIGHT",
"check": [
"yellowRel",
"orangeRel"
]
}
],
"output": [
"yellowRel",
"greenRel"
],
"colour": 60,
"tooltip": "Output: yellowRel, greenRel\n" +
"Input Top: yellowRel, orangeRel\n" +
"Input Bottom: yellowRel, orangeRel\n" +
"Output can connect to yellow blocks and blue blocks, but not red blocks.\n" +
"Top Input can connect to yellow blocks and red blocks, but not blue" +
" blocks.\n" +
"Bottom Input can connect to yellow blocks and red blocks, but not blue" +
" blocks."
},
{
"type": "test_connections_stack_next",
"message0": "",
"nextStatement": null,
"colour": '#aaaaaa',
"tooltip": "No Checks\n" +
"Can connect to any previous connection."
},
{
"type": "test_connections_stack_blue",
"message0": "",
"previousStatement": "nonePrev",
"nextStatement": "greenRel",
"colour": 230,
"tooltip": "Prev: nonePrev\n" +
"Next: greenRel\n" +
"Next connection can accept yellow blocks but not red blocks."
},
{
"type": "test_connections_stack_yellow",
"message0": "",
"previousStatement": [
"greenRel",
"yellowRel"
],
"nextStatement": [
"yellowRel",
"orangeRel"
],
"colour": 60,
"tooltip": "Prev: yellowRel, greenRel\n" +
"Next: yellowRel, orangeRel\n" +
"Prev can connect to yellow blocks and blue blocks, but not red blocks.\n" +
"Next can connect to yellow blocks and red blocks, but not blue blocks."
},
{
"type": "test_connections_stack_red",
"message0": "",
"previousStatement": "orangeRel",
"nextStatement": "noneNext",
"colour": 0,
"tooltip": "Prev: orangeRel\n" +
"Next: noneNext\n" +
"Prev can connect to yellow blocks, but not blue blocks."
},
{
"type": "test_connections_stack_prev",
"message0": "",
"previousStatement": null,
"colour": '#aaaaaa',
"tooltip": "No Checks\n" +
"Can connect to any input connection."
},
{
"type": "test_connections_statement_blue",
"message0": "%1",
"args0": [
{
"type": "input_statement",
"name": "NAME",
"check": "greenRel"
}
],
"previousStatement": "nonePrev",
"nextStatement": "greenRel",
"colour": 230,
"tooltip": "Prev: nonePrev\n" +
"Next: greenRel\n" +
"Statement: greenRel\n" +
"Next connection can accept yellow blocks but not red blocks.\n" +
"Statement connection can accept yellow blocks but not red blocks."
},
{
"type": "test_connections_statement_yellow",
"message0": "%1",
"args0": [
{
"type": "input_statement",
"name": "NAME",
"check": [
"yellowRel",
"orangeRel"
]
}
],
"previousStatement": [
"greenRel",
"yellowRel"
],
"nextStatement": [
"yellowRel",
"orangeRel"
],
"colour": 60,
"tooltip": "Prev: yellowRel, greenRel\n" +
"Next: yellowRel, orangeRel\n" +
"Statement: orangeRel\n" +
"Prev can connect to yellow blocks and blue blocks, but not red" +
" blocks.\n" +
"Next can connect to yellow blocks and red blocks, but not blue" +
" blocks.\n" +
"Statement connection can accept yellow blocks and red blocks but not" +
" blue blocks.\n"
},
{
"type": "test_connections_statement_red",
"message0": "%1",
"args0": [
{
"type": "input_statement",
"name": "NAME",
"check": "noneNext"
}
],
"previousStatement": "orangeRel",
"nextStatement": "noneNext",
"colour": 0,
"tooltip": "Prev: orangeRel\n" +
"Next: noneNext\n" +
"Statement: noneNext\n" +
"Prev connection can accept yellow blocks but not blue blocks.\n" +
"Statement connection accepts none."
},
{
"type": "test_connections_statement_nonext",
"message0": "%1",
"args0": [
{
"type": "input_statement",
"name": "NAME",
"check": [
"yellowRel",
"orangeRel"
]
}
],
"previousStatement": [
"greenRel",
"yellowRel"
],
"colour": 60,
"tooltip": "Prev: yellowRel, greenRel\n" +
"Next: yellowRel, orangeRel\n" +
"Statement: orangeRel\n" +
"Prev can connect to yellow blocks and blue blocks, but not red" +
" blocks.\n" +
"Statement connection can accept yellow blocks and red blocks but not" +
" blue blocks.\n"
},
{
"type": "test_connections_multistatement_1valid",
"message0": "none %1 both %2",
"args0": [
{
"type": "input_statement",
"name": "NAME",
"check": "noneNext"
},
{
"type": "input_statement",
"name": "NAME",
"check": [
"yellowRel",
"orangeRel"
]
}
],
"previousStatement": [
"greenRel",
"yellowRel"
],
"colour": 60,
"tooltip": "Prev: yellowRel, greenRel\n" +
"Next: yellowRel, orangeRel\n" +
"Statement: orangeRel\n" +
"Prev can connect to yellow blocks and blue blocks, but not red" +
" blocks.\n" +
"Top Statement cannot connect to anything, except grey blocks.\n" +
"Bottom Statement connection can accept yellow blocks and red blocks" +
" but not blue blocks.\n"
},
{
"type": "test_connections_multistatement_2valid",
"message0": "both %1 both %2",
"args0": [
{
"type": "input_statement",
"name": "NAME",
"check": [
"yellowRel",
"orangeRel"
]
},
{
"type": "input_statement",
"name": "NAME",
"check": [
"yellowRel",
"orangeRel"
]
}
],
"previousStatement": [
"greenRel",
"yellowRel"
],
"colour": 60,
"tooltip": "Prev: yellowRel, greenRel\n" +
"Next: yellowRel, orangeRel\n" +
"Statement: orangeRel\n" +
"Prev can connect to yellow blocks and blue blocks, but not red" +
" blocks.\n" +
"Top Statement connection can accept yellow blocks and red blocks but" +
" not blue blocks.\n" +
"Bottom Statement connection can accept yellow blocks and red blocks" +
" but not blue blocks.\n"
},
{
"type": "test_dropdowns_long",
"message0": "long: %1",

View File

@@ -249,6 +249,82 @@ function addToolboxButtonCallbacks() {
workspace.createVariable('2b', '', '2B');
workspace.createVariable('2c', '', '2C');
};
var insertConnectionRows = function(button) {
var workspace = button.getTargetWorkspace();
Blockly.Xml.domToWorkspace(Blockly.Xml.textToDom(
'<xml xmlns="https://developers.google.com/blockly/xml">\n' +
' <block type="test_connections_row_input">\n' +
' <value name="NAME">\n' +
' <block type="test_connections_row_blue">\n' +
' <value name="NAME">\n' +
' <block type="test_connections_row_yellow">\n' +
' <value name="NAME">\n' +
' <block type="test_connections_row_yellow">\n' +
' <value name="NAME">\n' +
' <block type="test_connections_row_red">\n' +
' <value name="NAME">\n' +
' <block type="test_connections_row_output"/>\n' +
' </value>\n' +
' </block>\n' +
' </value>\n' +
' </block>\n' +
' </value>\n' +
' </block>\n' +
' </value>\n' +
' </block>\n' +
' </value>\n' +
' </block>\n' +
'</xml>'
), workspace)
};
var insertConnectionStacks = function(button) {
var workspace = button.getTargetWorkspace();
Blockly.Xml.domToWorkspace(Blockly.Xml.textToDom(
'<xml xmlns="https://developers.google.com/blockly/xml">\n' +
' <block type="test_connections_stack_next">\n' +
' <next>\n' +
' <block type="test_connections_stack_blue">\n' +
' <next>\n' +
' <block type="test_connections_stack_yellow">\n' +
' <next>\n' +
' <block type="test_connections_stack_yellow">\n' +
' <next>\n' +
' <block type="test_connections_stack_red">\n' +
' <next>\n' +
' <block type="test_connections_stack_prev"/>\n' +
' </next>\n' +
' </block>\n' +
' </next>\n' +
' </block>\n' +
' </next>\n' +
' </block>\n' +
' </next>\n' +
' </block>\n' +
' </next>\n' +
' </block>\n' +
'</xml>'
), workspace);
};
var insertConnectionStatements = function(button) {
var workspace = button.getTargetWorkspace();
Blockly.Xml.domToWorkspace(Blockly.Xml.textToDom(
'<xml xmlns="https://developers.google.com/blockly/xml">\n' +
' <block type="test_connections_statement_blue">\n' +
' <statement name="NAME">\n' +
' <block type="test_connections_statement_yellow">\n' +
' <statement name="NAME">\n' +
' <block type="test_connections_statement_yellow">\n' +
' <statement name="NAME">\n' +
' <block type="test_connections_statement_red"/>\n' +
' </statement>\n' +
' </block>\n' +
' </statement>\n' +
' </block>\n' +
' </statement>\n' +
' </block>\n' +
'</xml>'
), workspace);
};
workspace.registerButtonCallback(
'addVariables', addVariables);
@@ -272,6 +348,12 @@ function addToolboxButtonCallbacks() {
'addDynamicOption', Blockly.TestBlocks.addDynamicDropdownOption_);
workspace.registerButtonCallback(
'removeDynamicOption', Blockly.TestBlocks.removeDynamicDropdownOption_);
workspace.registerButtonCallback(
'insertConnectionRows', insertConnectionRows);
workspace.registerButtonCallback(
'insertConnectionStacks', insertConnectionStacks);
workspace.registerButtonCallback(
'insertConnectionStatements', insertConnectionStatements);
}
function setRenderDebugOptionCheckboxState(overrideOptions) {
@@ -1361,6 +1443,11 @@ var spaghettiXml = [
the standard predefined blocks, and so test alternative block rendering
code paths. -->
<xml xmlns="https://developers.google.com/blockly/xml" id="toolbox-test-blocks" style="display: none">
<category name="Align">
<block type="test_align_dummy_right"></block>
<block type="test_align_all"></block>
<block type="test_align_with_external_input"></block>
</category>
<category name="Basic">
<block type="test_basic_empty"></block>
<block type="test_basic_empty_with_mutator"></block>
@@ -1374,10 +1461,73 @@ var spaghettiXml = [
<block type="test_basic_tooltips"></block>
<block type="test_basic_javascript"></block>
</category>
<category name="Align">
<block type="test_align_dummy_right"></block>
<block type="test_align_all"></block>
<block type="test_align_with_external_input"></block>
<category name="Connections" expanded="true">
<category name="Row">
<label text="blocks have"></label>
<sep gap="-1"></sep>
<label text="tooltips"></label>
<button text="insert" callbackkey="insertConnectionRows"></button>
<sep gap="7"></sep>
<block type="test_connections_row_input"></block>
<sep gap="7"></sep>
<block type="test_connections_row_blue"></block>
<sep gap="7"></sep>
<block type="test_connections_row_yellow"></block>
<sep gap="7"></sep>
<block type="test_connections_row_red"></block>
<sep gap="7"></sep>
<block type="test_connections_row_output"></block>
<block type="test_connections_row_yellow">
<value name="NAME">
<block type="test_connections_row_yellow" movable="false"></block>
</value>
</block>
<sep gap="7"></sep>
<block type="test_connections_multivalue_1valid"></block>
<sep gap="7"></sep>
<block type="test_connections_multivalue_2valid"></block>
</category>
<category name="Stack">
<label text="blocks have"></label>
<sep gap="-1"></sep>
<label text="tooltips"></label>
<button text="insert" callbackkey="insertConnectionStacks"></button>
<sep gap="7"></sep>
<block type="test_connections_stack_next"></block>
<sep gap="7"></sep>
<block type="test_connections_stack_blue"></block>
<sep gap="7"></sep>
<block type="test_connections_stack_yellow"></block>
<sep gap="7"></sep>
<block type="test_connections_stack_red"></block>
<sep gap="7"></sep>
<block type="test_connections_stack_prev"></block>
<block type="test_connections_stack_yellow">
<next>
<block type="test_connections_stack_yellow" movable="false"></block>
</next>
</block>
</category>
<category name="Statement">
<label text="blocks have"></label>
<sep gap="-1"></sep>
<label text="tooltips"></label>
<button text="insert" callbackkey="insertConnectionStatements"></button>
<sep gap="7"></sep>
<block type="test_connections_statement_blue"></block>
<sep gap="7"></sep>
<block type="test_connections_statement_yellow"></block>
<sep gap="7"></sep>
<block type="test_connections_statement_red"></block>
<block type="test_connections_statement_nonext"></block>
<sep gap="7"></sep>
<block type="test_connections_multistatement_1valid"></block>
<sep gap="7"></sep>
<block type="test_connections_multistatement_2valid"></block>
</category>
</category>
<category name="Drag">
<label text="Drag each to the workspace"></label>