mirror of
https://github.com/scratchfoundation/scratch-analysis.git
synced 2025-05-15 15:20:27 -04:00
Clean up tests
This commit is contained in:
parent
bc9c3e0ab3
commit
b164232b3f
5 changed files with 115 additions and 130 deletions
21
lib/sb2.js
21
lib/sb2.js
|
@ -1,3 +1,5 @@
|
|||
const utility = require('./utility');
|
||||
|
||||
/**
|
||||
* Returns an array of items matching the specified attribute.
|
||||
* @param {object} project Project object (SB2 format)
|
||||
|
@ -81,23 +83,6 @@ const sprites = function (input) {
|
|||
return {count: result};
|
||||
};
|
||||
|
||||
/**
|
||||
* Tallys term frequency from an array of strings.
|
||||
* @param {array} input Array of strings
|
||||
* @return {object} Frequency information
|
||||
*/
|
||||
const frequency = function (input) {
|
||||
const result = Object.create(null);
|
||||
|
||||
for (let i in input) {
|
||||
var term = input[i];
|
||||
if (typeof result[term] === 'undefined') result[term] = 0;
|
||||
result[term]++;
|
||||
}
|
||||
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* Extracts all blocks and generates a frequency count.
|
||||
* @param {object} project Project object (SB2 format)
|
||||
|
@ -136,7 +121,7 @@ const blocks = function (project) {
|
|||
walk(flatten(project, 'scripts'));
|
||||
|
||||
// Generate frequency count
|
||||
const freq = frequency(result);
|
||||
const freq = utility.frequency(result);
|
||||
|
||||
// Build result and return
|
||||
return {
|
||||
|
|
14
lib/sb3.js
14
lib/sb3.js
|
@ -9,7 +9,7 @@ const scripts = function (targets) {
|
|||
for (let b in targets[t].blocks) {
|
||||
if (targets[t].blocks[b].topLevel) occurances++;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
count: occurances
|
||||
|
@ -27,7 +27,7 @@ const variables = function (targets, attribute) {
|
|||
occurances++;
|
||||
idList.push(variable[0]);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
count: occurances,
|
||||
|
@ -49,7 +49,7 @@ const extract = function (targets, attribute, id, hash) {
|
|||
if (typeof id !== 'undefined') idList.push(asset[id]);
|
||||
if (typeof hash !== 'undefined') hashList.push(asset[hash]);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
const result = {count: occurances};
|
||||
if (typeof id !== 'undefined') result.id = idList;
|
||||
|
@ -61,7 +61,7 @@ const sprites = function (targets) {
|
|||
return {
|
||||
count: targets.length - 1
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
const blocks = function (targets) {
|
||||
// Storage object
|
||||
|
@ -86,10 +86,10 @@ const blocks = function (targets) {
|
|||
};
|
||||
};
|
||||
|
||||
const extensions = function (extensions) {
|
||||
const extensions = function (list) {
|
||||
return {
|
||||
count: extensions.length,
|
||||
id: extensions
|
||||
count: list.length,
|
||||
id: list
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ class Utility {
|
|||
}
|
||||
|
||||
return result;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Utility;
|
||||
|
|
104
test/unit/sb2.js
104
test/unit/sb2.js
|
@ -189,60 +189,60 @@ test('complex (binary)', t => {
|
|||
t.equal(result.blocks.count, 34);
|
||||
t.equal(result.blocks.unique, 18);
|
||||
t.deepEqual(result.blocks.id, [
|
||||
"whenGreenFlag",
|
||||
"doForever",
|
||||
"changeGraphicEffect:by:",
|
||||
"whenGreenFlag",
|
||||
"deleteLine:ofList:",
|
||||
"deleteLine:ofList:",
|
||||
"doForever",
|
||||
"forward:",
|
||||
"turnRight:",
|
||||
"randomFrom:to:",
|
||||
"bounceOffEdge",
|
||||
"whenGreenFlag",
|
||||
"doForever",
|
||||
"setGraphicEffect:to:",
|
||||
"xpos",
|
||||
"whenGreenFlag",
|
||||
"doForever",
|
||||
"call",
|
||||
"randomFrom:to:",
|
||||
"heading",
|
||||
"randomFrom:to:",
|
||||
"heading",
|
||||
"procDef",
|
||||
"setVar:to:",
|
||||
"getParam",
|
||||
"setVar:to:",
|
||||
"getParam",
|
||||
"append:toList:",
|
||||
"getParam",
|
||||
"append:toList:",
|
||||
"getParam",
|
||||
"LEGO WeDo 2.0\u001FwhenTilted",
|
||||
"LEGO WeDo 2.0\u001FsetLED",
|
||||
"randomFrom:to:"
|
||||
'whenGreenFlag',
|
||||
'doForever',
|
||||
'changeGraphicEffect:by:',
|
||||
'whenGreenFlag',
|
||||
'deleteLine:ofList:',
|
||||
'deleteLine:ofList:',
|
||||
'doForever',
|
||||
'forward:',
|
||||
'turnRight:',
|
||||
'randomFrom:to:',
|
||||
'bounceOffEdge',
|
||||
'whenGreenFlag',
|
||||
'doForever',
|
||||
'setGraphicEffect:to:',
|
||||
'xpos',
|
||||
'whenGreenFlag',
|
||||
'doForever',
|
||||
'call',
|
||||
'randomFrom:to:',
|
||||
'heading',
|
||||
'randomFrom:to:',
|
||||
'heading',
|
||||
'procDef',
|
||||
'setVar:to:',
|
||||
'getParam',
|
||||
'setVar:to:',
|
||||
'getParam',
|
||||
'append:toList:',
|
||||
'getParam',
|
||||
'append:toList:',
|
||||
'getParam',
|
||||
'LEGO WeDo 2.0\u001FwhenTilted',
|
||||
'LEGO WeDo 2.0\u001FsetLED',
|
||||
'randomFrom:to:'
|
||||
]);
|
||||
t.deepEqual(result.blocks.frequency, {
|
||||
"LEGO WeDo 2.0\u001FsetLED": 1,
|
||||
"LEGO WeDo 2.0\u001FwhenTilted": 1,
|
||||
"bounceOffEdge": 1,
|
||||
"call": 1,
|
||||
"changeGraphicEffect:by:": 1,
|
||||
"doForever": 4,
|
||||
"deleteLine:ofList:": 2,
|
||||
"forward:": 1,
|
||||
"getParam": 4,
|
||||
"heading": 2,
|
||||
"procDef": 1,
|
||||
"append:toList:": 2,
|
||||
"randomFrom:to:": 4,
|
||||
"setGraphicEffect:to:": 1,
|
||||
"setVar:to:": 2,
|
||||
"turnRight:": 1,
|
||||
"whenGreenFlag": 4,
|
||||
"xpos": 1
|
||||
'LEGO WeDo 2.0\u001FsetLED': 1,
|
||||
'LEGO WeDo 2.0\u001FwhenTilted': 1,
|
||||
'bounceOffEdge': 1,
|
||||
'call': 1,
|
||||
'changeGraphicEffect:by:': 1,
|
||||
'doForever': 4,
|
||||
'deleteLine:ofList:': 2,
|
||||
'forward:': 1,
|
||||
'getParam': 4,
|
||||
'heading': 2,
|
||||
'procDef': 1,
|
||||
'append:toList:': 2,
|
||||
'randomFrom:to:': 4,
|
||||
'setGraphicEffect:to:': 1,
|
||||
'setVar:to:': 2,
|
||||
'turnRight:': 1,
|
||||
'whenGreenFlag': 4,
|
||||
'xpos': 1
|
||||
});
|
||||
|
||||
t.type(result.extensions, 'object');
|
||||
|
|
104
test/unit/sb3.js
104
test/unit/sb3.js
|
@ -193,60 +193,60 @@ test('complex (binary)', t => {
|
|||
t.equal(result.blocks.count, 34);
|
||||
t.equal(result.blocks.unique, 18);
|
||||
t.deepEqual(result.blocks.id, [
|
||||
"event_whenflagclicked",
|
||||
"control_forever",
|
||||
"looks_changeeffectby",
|
||||
"event_whenflagclicked",
|
||||
"data_deleteoflist",
|
||||
"data_deleteoflist",
|
||||
"control_forever",
|
||||
"motion_movesteps",
|
||||
"motion_turnright",
|
||||
"operator_random",
|
||||
"motion_ifonedgebounce",
|
||||
"event_whenflagclicked",
|
||||
"control_forever",
|
||||
"looks_seteffectto",
|
||||
"motion_xposition",
|
||||
"event_whenflagclicked",
|
||||
"control_forever",
|
||||
"procedures_call",
|
||||
"operator_random",
|
||||
"motion_direction",
|
||||
"operator_random",
|
||||
"motion_direction",
|
||||
"procedures_definition",
|
||||
"data_setvariableto",
|
||||
"argument_reporter_string_number",
|
||||
"data_setvariableto",
|
||||
"argument_reporter_string_number",
|
||||
"data_addtolist",
|
||||
"argument_reporter_string_number",
|
||||
"data_addtolist",
|
||||
"argument_reporter_string_number",
|
||||
"wedo2_whenTilted",
|
||||
"wedo2_setLightHue",
|
||||
"operator_random"
|
||||
'event_whenflagclicked',
|
||||
'control_forever',
|
||||
'looks_changeeffectby',
|
||||
'event_whenflagclicked',
|
||||
'data_deleteoflist',
|
||||
'data_deleteoflist',
|
||||
'control_forever',
|
||||
'motion_movesteps',
|
||||
'motion_turnright',
|
||||
'operator_random',
|
||||
'motion_ifonedgebounce',
|
||||
'event_whenflagclicked',
|
||||
'control_forever',
|
||||
'looks_seteffectto',
|
||||
'motion_xposition',
|
||||
'event_whenflagclicked',
|
||||
'control_forever',
|
||||
'procedures_call',
|
||||
'operator_random',
|
||||
'motion_direction',
|
||||
'operator_random',
|
||||
'motion_direction',
|
||||
'procedures_definition',
|
||||
'data_setvariableto',
|
||||
'argument_reporter_string_number',
|
||||
'data_setvariableto',
|
||||
'argument_reporter_string_number',
|
||||
'data_addtolist',
|
||||
'argument_reporter_string_number',
|
||||
'data_addtolist',
|
||||
'argument_reporter_string_number',
|
||||
'wedo2_whenTilted',
|
||||
'wedo2_setLightHue',
|
||||
'operator_random'
|
||||
]);
|
||||
t.deepEqual(result.blocks.frequency, {
|
||||
"argument_reporter_string_number": 4,
|
||||
"control_forever": 4,
|
||||
"data_addtolist": 2,
|
||||
"data_deleteoflist": 2,
|
||||
"data_setvariableto": 2,
|
||||
"event_whenflagclicked": 4,
|
||||
"looks_changeeffectby": 1,
|
||||
"looks_seteffectto": 1,
|
||||
"motion_direction": 2,
|
||||
"motion_ifonedgebounce": 1,
|
||||
"motion_movesteps": 1,
|
||||
"motion_turnright": 1,
|
||||
"motion_xposition": 1,
|
||||
"operator_random": 4,
|
||||
"procedures_call": 1,
|
||||
"procedures_definition": 1,
|
||||
"wedo2_setLightHue": 1,
|
||||
"wedo2_whenTilted": 1
|
||||
argument_reporter_string_number: 4,
|
||||
control_forever: 4,
|
||||
data_addtolist: 2,
|
||||
data_deleteoflist: 2,
|
||||
data_setvariableto: 2,
|
||||
event_whenflagclicked: 4,
|
||||
looks_changeeffectby: 1,
|
||||
looks_seteffectto: 1,
|
||||
motion_direction: 2,
|
||||
motion_ifonedgebounce: 1,
|
||||
motion_movesteps: 1,
|
||||
motion_turnright: 1,
|
||||
motion_xposition: 1,
|
||||
operator_random: 4,
|
||||
procedures_call: 1,
|
||||
procedures_definition: 1,
|
||||
wedo2_setLightHue: 1,
|
||||
wedo2_whenTilted: 1
|
||||
});
|
||||
|
||||
t.type(result.extensions, 'object');
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue