mirror of
https://github.com/scratchfoundation/scratch-blocks.git
synced 2025-07-22 11:49:29 -04:00
202 lines
6.5 KiB
JavaScript
202 lines
6.5 KiB
JavaScript
|
/**
|
||
|
* @license
|
||
|
* Visual Blocks Editor
|
||
|
*
|
||
|
* Copyright 2017 Google Inc.
|
||
|
* https://developers.google.com/blockly/
|
||
|
*
|
||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||
|
* you may not use this file except in compliance with the License.
|
||
|
* You may obtain a copy of the License at
|
||
|
*
|
||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||
|
*
|
||
|
* Unless required by applicable law or agreed to in writing, software
|
||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||
|
* See the License for the specific language governing permissions and
|
||
|
* limitations under the License.
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @fileoverview Tests for Blockly.Input
|
||
|
*/
|
||
|
'use strict';
|
||
|
|
||
|
function test_appendField_simple() {
|
||
|
var ws = new Blockly.Workspace();
|
||
|
var block = new Blockly.Block(ws);
|
||
|
var input = new Blockly.Input(Blockly.DUMMY_INPUT, 'INPUT', block);
|
||
|
var field1 = new Blockly.FieldLabel('#1');
|
||
|
var field2 = new Blockly.FieldLabel('#2');
|
||
|
|
||
|
// Preconditions
|
||
|
assertEquals(0, input.fieldRow.length);
|
||
|
|
||
|
// Actual Tests
|
||
|
input.appendField(field1, 'first');
|
||
|
assertEquals(1, input.fieldRow.length);
|
||
|
assertEquals(field1, input.fieldRow[0]);
|
||
|
assertEquals('first', input.fieldRow[0].name);
|
||
|
assertEquals(block, field1.sourceBlock_);
|
||
|
|
||
|
input.appendField(field2, 'second');
|
||
|
assertEquals(2, input.fieldRow.length);
|
||
|
assertEquals(field2, input.fieldRow[1]);
|
||
|
assertEquals('second', input.fieldRow[1].name);
|
||
|
assertEquals(block, field2.sourceBlock_);
|
||
|
}
|
||
|
|
||
|
function test_appendField_string() {
|
||
|
var ws = new Blockly.Workspace();
|
||
|
var block = new Blockly.Block(ws);
|
||
|
var input = new Blockly.Input(Blockly.DUMMY_INPUT, 'INPUT', block);
|
||
|
var labelText = 'label';
|
||
|
|
||
|
// Preconditions
|
||
|
assertEquals(0, input.fieldRow.length);
|
||
|
|
||
|
// Actual Tests
|
||
|
input.appendField(labelText, 'name');
|
||
|
assertEquals(1, input.fieldRow.length);
|
||
|
assertEquals(Blockly.FieldLabel, input.fieldRow[0].constructor);
|
||
|
assertEquals(labelText, input.fieldRow[0].getValue());
|
||
|
assertEquals('name', input.fieldRow[0].name);
|
||
|
}
|
||
|
|
||
|
function test_appendField_prefix() {
|
||
|
var ws = new Blockly.Workspace();
|
||
|
var block = new Blockly.Block(ws);
|
||
|
var input = new Blockly.Input(Blockly.DUMMY_INPUT, 'INPUT', block);
|
||
|
var prefix = new Blockly.FieldLabel('prefix');
|
||
|
var field = new Blockly.FieldLabel('field');
|
||
|
field.prefixField = prefix;
|
||
|
|
||
|
// Preconditions
|
||
|
assertEquals(0, input.fieldRow.length);
|
||
|
|
||
|
// Actual Tests
|
||
|
input.appendField(field);
|
||
|
assertEquals(2, input.fieldRow.length);
|
||
|
assertEquals(prefix, input.fieldRow[0]);
|
||
|
assertEquals(field, input.fieldRow[1]);
|
||
|
}
|
||
|
|
||
|
function test_appendField_suffix() {
|
||
|
var ws = new Blockly.Workspace();
|
||
|
var block = new Blockly.Block(ws);
|
||
|
var input = new Blockly.Input(Blockly.DUMMY_INPUT, 'INPUT', block);
|
||
|
var suffix = new Blockly.FieldLabel('suffix');
|
||
|
var field = new Blockly.FieldLabel('field');
|
||
|
field.suffixField = suffix;
|
||
|
|
||
|
// Preconditions
|
||
|
assertEquals(0, input.fieldRow.length);
|
||
|
|
||
|
// Actual Tests
|
||
|
input.appendField(field);
|
||
|
assertEquals(2, input.fieldRow.length);
|
||
|
assertEquals(field, input.fieldRow[0]);
|
||
|
assertEquals(suffix, input.fieldRow[1]);
|
||
|
}
|
||
|
|
||
|
function test_insertFieldAt_simple() {
|
||
|
var ws = new Blockly.Workspace();
|
||
|
var block = new Blockly.Block(ws);
|
||
|
var input = new Blockly.Input(Blockly.DUMMY_INPUT, 'INPUT', block);
|
||
|
var before = new Blockly.FieldLabel('before');
|
||
|
var after = new Blockly.FieldLabel('after');
|
||
|
var between = new Blockly.FieldLabel('between');
|
||
|
input.appendField(before);
|
||
|
input.appendField(after);
|
||
|
|
||
|
// Preconditions
|
||
|
assertEquals(2, input.fieldRow.length);
|
||
|
assertEquals(before, input.fieldRow[0]);
|
||
|
assertEquals(after, input.fieldRow[1]);
|
||
|
|
||
|
// Actual Tests
|
||
|
input.insertFieldAt(1, between, 'name');
|
||
|
assertEquals(3, input.fieldRow.length);
|
||
|
assertEquals(before, input.fieldRow[0]);
|
||
|
assertEquals(between, input.fieldRow[1]);
|
||
|
assertEquals('name', input.fieldRow[1].name);
|
||
|
assertEquals(after, input.fieldRow[2]);
|
||
|
}
|
||
|
|
||
|
function test_insertFieldAt_string() {
|
||
|
var ws = new Blockly.Workspace();
|
||
|
var block = new Blockly.Block(ws);
|
||
|
var input = new Blockly.Input(Blockly.DUMMY_INPUT, 'INPUT', block);
|
||
|
var before = new Blockly.FieldLabel('before');
|
||
|
var after = new Blockly.FieldLabel('after');
|
||
|
var labelText = 'label';
|
||
|
input.appendField(before);
|
||
|
input.appendField(after);
|
||
|
|
||
|
// Preconditions
|
||
|
assertEquals(2, input.fieldRow.length);
|
||
|
assertEquals(before, input.fieldRow[0]);
|
||
|
assertEquals(after, input.fieldRow[1]);
|
||
|
|
||
|
// Actual Tests
|
||
|
input.insertFieldAt(1, labelText, 'name');
|
||
|
assertEquals(3, input.fieldRow.length);
|
||
|
assertEquals(before, input.fieldRow[0]);
|
||
|
assertEquals(Blockly.FieldLabel, input.fieldRow[1].constructor);
|
||
|
assertEquals(labelText, input.fieldRow[1].getValue());
|
||
|
assertEquals('name', input.fieldRow[1].name);
|
||
|
assertEquals(after, input.fieldRow[2]);
|
||
|
}
|
||
|
|
||
|
function test_insertFieldAt_prefix() {
|
||
|
var ws = new Blockly.Workspace();
|
||
|
var block = new Blockly.Block(ws);
|
||
|
var input = new Blockly.Input(Blockly.DUMMY_INPUT, 'INPUT', block);
|
||
|
var before = new Blockly.FieldLabel('before');
|
||
|
var after = new Blockly.FieldLabel('after');
|
||
|
var prefix = new Blockly.FieldLabel('prefix');
|
||
|
var between = new Blockly.FieldLabel('between');
|
||
|
between.prefixField = prefix
|
||
|
input.appendField(before);
|
||
|
input.appendField(after);
|
||
|
|
||
|
// Preconditions
|
||
|
assertEquals(2, input.fieldRow.length);
|
||
|
assertEquals(before, input.fieldRow[0]);
|
||
|
assertEquals(after, input.fieldRow[1]);
|
||
|
|
||
|
// Actual Tests
|
||
|
input.insertFieldAt(1, between);
|
||
|
assertEquals(4, input.fieldRow.length);
|
||
|
assertEquals(before, input.fieldRow[0]);
|
||
|
assertEquals(prefix, input.fieldRow[1]);
|
||
|
assertEquals(between, input.fieldRow[2]);
|
||
|
assertEquals(after, input.fieldRow[3]);
|
||
|
}
|
||
|
|
||
|
function test_insertFieldAt_prefix() {
|
||
|
var ws = new Blockly.Workspace();
|
||
|
var block = new Blockly.Block(ws);
|
||
|
var input = new Blockly.Input(Blockly.DUMMY_INPUT, 'INPUT', block);
|
||
|
var before = new Blockly.FieldLabel('before');
|
||
|
var after = new Blockly.FieldLabel('after');
|
||
|
var suffix = new Blockly.FieldLabel('suffix');
|
||
|
var between = new Blockly.FieldLabel('between');
|
||
|
between.suffixField = suffix
|
||
|
input.appendField(before);
|
||
|
input.appendField(after);
|
||
|
|
||
|
// Preconditions
|
||
|
assertEquals(2, input.fieldRow.length);
|
||
|
assertEquals(before, input.fieldRow[0]);
|
||
|
assertEquals(after, input.fieldRow[1]);
|
||
|
|
||
|
// Actual Tests
|
||
|
input.insertFieldAt(1, between);
|
||
|
assertEquals(4, input.fieldRow.length);
|
||
|
assertEquals(before, input.fieldRow[0]);
|
||
|
assertEquals(between, input.fieldRow[1]);
|
||
|
assertEquals(suffix, input.fieldRow[2]);
|
||
|
assertEquals(after, input.fieldRow[3]);
|
||
|
}
|