Skip to content

Commit 4645621

Browse files
committed
split up pick integration tests to avoid cached info
1 parent bd14d53 commit 4645621

File tree

1 file changed

+75
-36
lines changed

1 file changed

+75
-36
lines changed

test/integration/pick-tests.js

Lines changed: 75 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -7,55 +7,94 @@ const chromeless = new Chromeless();
77
const indexHTML = path.resolve(__dirname, 'index.html');
88
const testDir = (...args) => path.resolve(__dirname, 'pick-tests', ...args);
99

10-
const runFile = (file, script) =>
10+
const runFile = (file, action, script) =>
1111
// start each test by going to the index.html, and loading the scratch file
1212
chromeless.goto(`file://${indexHTML}`)
1313
.setFileInput('#file', testDir(file))
1414
// the index.html handler for file input will add a #loaded element when it
1515
// finishes.
1616
.wait('#loaded')
17-
.evaluate(script)
17+
.evaluate(`function () {return (${script})(${action});}`)
1818
;
1919

2020
// immediately invoked async function to let us wait for each test to finish before starting the next.
2121
(async () => {
2222

23-
await test('pick tests', async t => {
24-
25-
const results = await runFile('test-mouse-touch.sb2', () => {
26-
vm.greenFlag();
27-
const sendResults = [];
28-
29-
const idToTargetName = id => {
30-
const target = vm.runtime.targets.find(tar => tar.drawableID === id);
31-
if (!target) {
32-
return `[Unknown drawableID: ${id}]`;
33-
}
34-
return target.sprite.name;
35-
};
36-
const sprite = vm.runtime.targets.find(target => target.sprite.name === 'Sprite1');
37-
38-
sendResults.push(['center', idToTargetName(render.pick(240, 180))]);
39-
sendResults.push(['left', idToTargetName(render.pick(200, 180))]);
40-
sendResults.push(['over', render.drawableTouching(sprite.drawableID, 240, 180)]);
41-
sprite.setVisible(false);
42-
sendResults.push(['hidden sprite pick center', idToTargetName(render.pick(240, 180))]);
43-
sendResults.push(['hidden over', render.drawableTouching(sprite.drawableID, 240, 180)]);
44-
return sendResults;
23+
async function testOperation (name, action, expect) {
24+
await test(name, async t => {
25+
26+
const results = await runFile('test-mouse-touch.sb2', action, action => {
27+
vm.greenFlag();
28+
const sendResults = [];
29+
30+
const idToTargetName = id => {
31+
const target = vm.runtime.targets.find(tar => tar.drawableID === id);
32+
if (!target) {
33+
return `[Unknown drawableID: ${id}]`;
34+
}
35+
return target.sprite.name;
36+
};
37+
const sprite = vm.runtime.targets.find(target => target.sprite.name === 'Sprite1');
38+
39+
action({
40+
sendResults,
41+
idToTargetName,
42+
render,
43+
sprite
44+
});
45+
return sendResults;
46+
});
47+
48+
t.plan(expect.length);
49+
for (let x = 0; x < expect.length; x++) {
50+
t.deepEqual(results[x], expect[x], expect[x][0]);
51+
}
52+
t.end();
4553
});
46-
const expect = [
47-
['center', 'Sprite1'],
48-
['left', 'Stage'],
49-
['over', true],
50-
['hidden sprite pick center', 'Stage'],
51-
['hidden over', true]
52-
];
53-
t.plan(expect.length);
54-
for (let x = 0; x < expect.length; x++) {
55-
t.deepEqual(results[x], expect[x], expect[x][0]);
54+
}
55+
56+
const tests = [
57+
{
58+
name: 'pick Sprite1',
59+
action: ({sendResults, render, idToTargetName}) => {
60+
sendResults.push(['center', idToTargetName(render.pick(240, 180))]);
61+
},
62+
expect: [['center', 'Sprite1']]
63+
},
64+
{
65+
name: 'pick Stage',
66+
action: ({sendResults, render, idToTargetName}) => {
67+
sendResults.push(['left', idToTargetName(render.pick(200, 180))]);
68+
},
69+
expect: [['left', 'Stage']]
70+
},
71+
{
72+
name: 'touching Sprite1',
73+
action: ({sprite, sendResults, render, idToTargetName}) => {
74+
sendResults.push(['over', render.drawableTouching(sprite.drawableID, 240, 180)]);
75+
},
76+
expect: [['over', true]]
77+
},
78+
{
79+
name: 'pick Stage through hidden Sprite1',
80+
action: ({sprite, sendResults, render, idToTargetName}) => {
81+
sprite.setVisible(false);
82+
sendResults.push(['hidden sprite pick center', idToTargetName(render.pick(240, 180))]);
83+
},
84+
expect: [['hidden sprite pick center', 'Stage']]
85+
},
86+
{
87+
name: 'touching hidden Sprite1',
88+
action: ({sprite, sendResults, render, idToTargetName}) => {
89+
sprite.setVisible(false);
90+
sendResults.push(['hidden over', render.drawableTouching(sprite.drawableID, 240, 180)]);
91+
},
92+
expect: [['hidden over', true]]
5693
}
57-
t.end();
58-
});
94+
];
95+
for (const {name, action, expect} of tests) {
96+
await testOperation(name, action, expect);
97+
}
5998

6099
// close the browser window we used
61100
await chromeless.end();

0 commit comments

Comments
 (0)