From 95dafb43c4183abddc208c01d265ac9830c6d8bf Mon Sep 17 00:00:00 2001 From: Karishma Chadha Date: Wed, 12 Dec 2018 18:51:36 -0500 Subject: [PATCH] Serialize x and y for topLevel blocks even if one or both of the values is 0. --- src/serialization/sb3.js | 12 ++++------ test/fixtures/top-level-reporters.sb3 | Bin 0 -> 42049 bytes test/unit/serialization_sb3.js | 33 ++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 7 deletions(-) create mode 100644 test/fixtures/top-level-reporters.sb3 diff --git a/src/serialization/sb3.js b/src/serialization/sb3.js index 6b3b47e40..a87d566d5 100644 --- a/src/serialization/sb3.js +++ b/src/serialization/sb3.js @@ -200,15 +200,13 @@ const serializeBlock = function (block) { obj.parent = block.parent; obj.inputs = serializeInputs(block.inputs); obj.fields = serializeFields(block.fields); - obj.topLevel = block.topLevel ? block.topLevel : false; obj.shadow = block.shadow; if (block.topLevel) { - if (block.x) { - obj.x = Math.round(block.x); - } - if (block.y) { - obj.y = Math.round(block.y); - } + obj.topLevel = true; + obj.x = block.x ? Math.round(block.x) : 0; + obj.y = block.y ? Math.round(block.y) : 0; + } else { + obj.topLevel = false; } if (block.mutation) { obj.mutation = block.mutation; diff --git a/test/fixtures/top-level-reporters.sb3 b/test/fixtures/top-level-reporters.sb3 new file mode 100644 index 0000000000000000000000000000000000000000..7e66deef10343d84721f4aab17c960ba726c9ef1 GIT binary patch literal 42049 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 BbfN$N literal 0 HcmV?d00001 diff --git a/test/unit/serialization_sb3.js b/test/unit/serialization_sb3.js index ec75c80b6..74f146db3 100644 --- a/test/unit/serialization_sb3.js +++ b/test/unit/serialization_sb3.js @@ -8,6 +8,7 @@ const commentsSB2ProjectPath = path.resolve(__dirname, '../fixtures/comments.sb2 const commentsSB3ProjectPath = path.resolve(__dirname, '../fixtures/comments.sb3'); const commentsSB3NoDupeIds = path.resolve(__dirname, '../fixtures/comments_no_duplicate_id_serialization.sb3'); const variableReporterSB2ProjectPath = path.resolve(__dirname, '../fixtures/top-level-variable-reporter.sb2'); +const topLevelReportersProjectPath = path.resolve(__dirname, '../fixtures/top-level-reporters.sb3'); const FakeRenderer = require('../fixtures/fake-renderer'); test('serialize', t => { @@ -198,6 +199,38 @@ test('serializeBlocks', t => { }); }); +test('serializeBlocks serializes x and y for topLevel blocks with x,y of 0,0', t => { + const vm = new VirtualMachine(); + vm.loadProject(readFileToBuffer(topLevelReportersProjectPath)) + .then(() => { + // Verify that there are 2 blocks and they are both top level + const blocks = vm.runtime.targets[1].blocks._blocks; + const blockIds = Object.keys(blocks); + t.equal(blockIds.length, 2); + const blocksArray = blockIds.map(key => blocks[key]); + t.equal(blocksArray.every(b => b.topLevel), true); + // Simulate cleaning up the blocks by resetting x and y positions to 0 + blockIds.forEach(blockId => { + blocks[blockId].x = 0; + blocks[blockId].y = 0; + }); + const result = sb3.serializeBlocks(blocks); + const serializedBlocks = result[0]; + + t.type(serializedBlocks, 'object'); + const serializedBlockIds = Object.keys(serializedBlocks); + t.equal(serializedBlockIds.length, 2); + const firstBlock = serializedBlocks[serializedBlockIds[0]]; + const secondBlock = serializedBlocks[serializedBlockIds[1]]; + t.equal(firstBlock.x, 0); + t.equal(firstBlock.y, 0); + t.equal(secondBlock.x, 0); + t.equal(secondBlock.y, 0); + + t.end(); + }); +}); + test('deserializeBlocks', t => { const vm = new VirtualMachine(); vm.loadProject(readFileToBuffer(commentsSB3ProjectPath))