Inject can now take an ID. Also, fix unit tests.

This commit is contained in:
Neil Fraser
2015-04-29 20:26:04 -07:00
parent 9924498485
commit 3ff69d47fe
17 changed files with 57 additions and 58 deletions

View File

@@ -47,10 +47,11 @@
<script>
'use strict';
var workspace = null;
function start() {
var toolbox = document.getElementById('toolbox');
Blockly.inject(document.getElementById('svg'),
{media: '../../media/', toolbox: toolbox});
workspace = Blockly.inject('blocklyDiv',
{media: '../../media/', toolbox: document.getElementById('toolbox')});
}
function loadXml() {
@@ -91,14 +92,14 @@ function fetchFile(xmlUrl) {
function fromXml(xmlText) {
var output = document.getElementById('importExport');
output.value = xmlText;
Blockly.mainWorkspace.clear();
workspace.clear();
try {
var xmlDoc = Blockly.Xml.textToDom(xmlText);
} catch (e) {
alert('Error parsing XML:\n' + e);
return;
}
Blockly.Xml.domToWorkspace(Blockly.mainWorkspace, xmlDoc);
Blockly.Xml.domToWorkspace(workspace, xmlDoc);
}
function setOutput(text) {
@@ -109,24 +110,24 @@ function setOutput(text) {
}
function toXml() {
var xmlDom = Blockly.Xml.workspaceToDom(Blockly.mainWorkspace);
var xmlDom = Blockly.Xml.workspaceToDom(workspace);
var xmlText = Blockly.Xml.domToPrettyText(xmlDom);
setOutput(xmlText);
}
function toJavaScript() {
var code = '\'use strict\';\n\n'
code += Blockly.JavaScript.workspaceToCode();
code += Blockly.JavaScript.workspaceToCode(workspace);
setOutput(code);
}
function toPython() {
var code = Blockly.Python.workspaceToCode();
var code = Blockly.Python.workspaceToCode(workspace);
setOutput(code);
}
function toDart() {
var code = Blockly.Dart.workspaceToCode();
var code = Blockly.Dart.workspaceToCode(workspace);
setOutput(code);
}
</script>
@@ -145,15 +146,12 @@ h1 {
font-weight: normal;
font-size: 140%;
}
#svg {
#blocklyDiv {
float: right;
height: 95%;
width: 69%;
margin-top: 5px;
}
.blocklySvg {
border: 1px solid #000;
}
#importExport {
height: 100%;
width: 100%;
@@ -162,7 +160,7 @@ h1 {
</head>
<body onload="start()">
<div id="svg"></div>
<div id="blocklyDiv"></div>
<xml id="toolbox" style="display: none">
<category name="Unit test">

View File

@@ -38,35 +38,35 @@ function verify_DB_(msg, expected, db) {
function test_DB_addConnection() {
var db = new Blockly.ConnectionDB();
var o2 = {y_: 2};
var o2 = {y_: 2, sourceBlock_: {}};
db.addConnection_(o2);
verify_DB_('Adding connection #2', [o2], db);
var o4 = {y_: 4};
var o4 = {y_: 4, sourceBlock_: {}};
db.addConnection_(o4);
verify_DB_('Adding connection #4', [o2, o4], db);
var o1 = {y_: 1};
var o1 = {y_: 1, sourceBlock_: {}};
db.addConnection_(o1);
verify_DB_('Adding connection #1', [o1, o2, o4], db);
var o3a = {y_: 3};
var o3a = {y_: 3, sourceBlock_: {}};
db.addConnection_(o3a);
verify_DB_('Adding connection #3a', [o1, o2, o3a, o4], db);
var o3b = {y_: 3};
var o3b = {y_: 3, sourceBlock_: {}};
db.addConnection_(o3b);
verify_DB_('Adding connection #3b', [o1, o2, o3b, o3a, o4], db);
}
function test_DB_removeConnection() {
var db = new Blockly.ConnectionDB();
var o1 = {y_: 1};
var o2 = {y_: 2};
var o3a = {y_: 3};
var o3b = {y_: 3};
var o3c = {y_: 3};
var o4 = {y_: 4};
var o1 = {y_: 1, sourceBlock_: {}};
var o2 = {y_: 2, sourceBlock_: {}};
var o3a = {y_: 3, sourceBlock_: {}};
var o3b = {y_: 3, sourceBlock_: {}};
var o3c = {y_: 3, sourceBlock_: {}};
var o4 = {y_: 4, sourceBlock_: {}};
db.addConnection_(o1);
db.addConnection_(o2);
db.addConnection_(o3c);

View File

@@ -55,13 +55,13 @@ function test_maxBlocksWorkspace() {
var blockA = Blockly.Block.obtain(workspace, '');
var blockB = Blockly.Block.obtain(workspace, '');
assertEquals('Infinite capacity.', Infinity, workspace.remainingCapacity());
workspace.maxBlocks = 3;
workspace.options.maxBlocks = 3;
assertEquals('Three capacity.', 1, workspace.remainingCapacity());
workspace.maxBlocks = 2;
workspace.options.maxBlocks = 2;
assertEquals('Two capacity.', 0, workspace.remainingCapacity());
workspace.maxBlocks = 1;
workspace.options.maxBlocks = 1;
assertEquals('One capacity.', -1, workspace.remainingCapacity());
workspace.maxBlocks = 0;
workspace.options.maxBlocks = 0;
assertEquals('Zero capacity.', -2, workspace.remainingCapacity());
workspace.clear();
assertEquals('Cleared capacity.', 0, workspace.remainingCapacity());

View File

@@ -46,7 +46,7 @@
'use strict';
// Depending on the URL argument, render as LTR or RTL.
var rtl = (document.location.search == '?rtl');
var block = null;
var workspace = null;
function enableRealtimeSpecificUi() {
var realtimeDiv = document.getElementById('realtime');
@@ -55,7 +55,7 @@ function enableRealtimeSpecificUi() {
function start() {
var toolbox = document.getElementById('toolbox');
Blockly.inject(document.getElementById('blocklyDiv'),
workspace = Blockly.inject('blocklyDiv',
{rtl: rtl,
media: '../media/',
toolbox: toolbox,
@@ -82,7 +82,7 @@ function start() {
function toXml() {
var output = document.getElementById('importExport');
var xml = Blockly.Xml.workspaceToDom(Blockly.mainWorkspace);
var xml = Blockly.Xml.workspaceToDom(workspace);
output.value = Blockly.Xml.domToPrettyText(xml);
output.focus();
output.select();
@@ -91,12 +91,12 @@ function toXml() {
function fromXml() {
var input = document.getElementById('importExport');
var xml = Blockly.Xml.textToDom(input.value);
Blockly.Xml.domToWorkspace(Blockly.mainWorkspace, xml);
Blockly.Xml.domToWorkspace(workspace, xml);
}
function toCode(lang) {
var output = document.getElementById('importExport');
output.value = Blockly[lang].workspaceToCode();
output.value = Blockly[lang].workspaceToCode(workspace);
}
function airstrike(n) {
@@ -108,7 +108,7 @@ function airstrike(n) {
}
for (var i = 0; i < n; i++) {
var prototype = prototypes[Math.floor(Math.random() * prototypes.length)];
var block = Blockly.Block.obtain(Blockly.mainWorkspace, prototype);
var block = Blockly.Block.obtain(workspace, prototype);
block.initSvg();
block.getSvgRoot().setAttribute('transform', 'translate(' +
Math.round(Math.random() * 450 + 40) + ', ' +
@@ -126,7 +126,7 @@ function spaghetti(n) {
xml = '<xml xmlns="http://www.w3.org/1999/xhtml">' + xml + '</xml>';
var dom = Blockly.Xml.textToDom(xml);
console.time('Spaghetti domToWorkspace');
Blockly.Xml.domToWorkspace(Blockly.mainWorkspace, dom);
Blockly.Xml.domToWorkspace(workspace, dom);
console.timeEnd('Spaghetti domToWorkspace');
}
var spaghettiXml = [
@@ -418,7 +418,7 @@ h1 {
<h1>Blockly Playground</h1>
<p><a href="javascript:void([document.getElementById('blocklyDiv').style.display = 'block', Blockly.mainWorkspace.render()])">Show</a>
<p><a href="javascript:void([document.getElementById('blocklyDiv').style.display = 'block', workspace.render()])">Show</a>
- <a href="javascript:void(document.getElementById('blocklyDiv').style.display = 'none')">Hide</a></p>
<script>