Files
blockly/tests/mocha/cursor_test.js
alschmiedt 6516363469 Change setLocation to setCurNode (#3051)
* Change setLocation to setCurNode
2019-09-19 15:15:14 -07:00

108 lines
3.2 KiB
JavaScript

suite('Cursor', function() {
setup(function() {
Blockly.defineBlocksWithJsonArray([{
"type": "input_statement",
"message0": "%1 %2 %3 %4",
"args0": [
{
"type": "field_input",
"name": "NAME",
"text": "default"
},
{
"type": "field_input",
"name": "NAME",
"text": "default"
},
{
"type": "input_value",
"name": "NAME"
},
{
"type": "input_statement",
"name": "NAME"
}
],
"previousStatement": null,
"nextStatement": null,
"colour": 230,
"tooltip": "",
"helpUrl": ""
},
{
"type": "field_input",
"message0": "%1",
"args0": [
{
"type": "field_input",
"name": "NAME",
"text": "default"
}
],
"output": null,
"colour": 230,
"tooltip": "",
"helpUrl": ""
}
]);
this.workspace = new Blockly.Workspace();
this.workspace.setCursor(new Blockly.Cursor());
this.cursor = this.workspace.getCursor();
var blockA = this.workspace.newBlock('input_statement');
var blockB = this.workspace.newBlock('input_statement');
var blockC = this.workspace.newBlock('input_statement');
var blockD = this.workspace.newBlock('input_statement');
var blockE = this.workspace.newBlock('field_input');
blockA.nextConnection.connect(blockB.previousConnection);
blockA.inputList[0].connection.connect(blockE.outputConnection);
blockB.inputList[1].connection.connect(blockC.previousConnection);
this.blocks = {
A: blockA,
B: blockB,
C: blockC,
D: blockD,
E: blockE
};
});
teardown(function() {
delete Blockly.Blocks['input_statement'];
delete Blockly.Blocks['field_input'];
this.workspace.dispose();
});
test('Next - From a block skip over next connection', function() {
var blockNode = Blockly.ASTNode.createBlockNode(this.blocks.A);
this.cursor.setCurNode(blockNode);
this.cursor.next();
var curNode = this.cursor.getCurNode();
assertEquals(curNode.getLocation(), this.blocks.B.previousConnection);
});
test('Next - From last block in a stack go to next connection', function() {
var blockNode = Blockly.ASTNode.createBlockNode(this.blocks.B);
this.cursor.setCurNode(blockNode);
this.cursor.next();
var curNode = this.cursor.getCurNode();
assertEquals(curNode.getLocation(), this.blocks.B.nextConnection);
});
test('In - From input skip over output connection', function() {
var inputNode = Blockly.ASTNode.createInputNode(this.blocks.A.inputList[0]);
this.cursor.setCurNode(inputNode);
this.cursor.in();
var curNode = this.cursor.getCurNode();
assertEquals(curNode.getLocation(), this.blocks.E);
});
test('Prev - From previous connection skip over next connection', function() {
var prevConnection = this.blocks.B.previousConnection;
var prevConnectionNode = Blockly.ASTNode.createConnectionNode(prevConnection);
this.cursor.setCurNode(prevConnectionNode);
this.cursor.prev();
var curNode = this.cursor.getCurNode();
assertEquals(curNode.getLocation(), this.blocks.A.previousConnection);
});
});