Spaces:
Running
Running
const test = require('tap').test; | |
const Mouse = require('../../src/io/mouse'); | |
const Runtime = require('../../src/engine/runtime'); | |
test('position clamping', t => { | |
const rt = new Runtime(); | |
const m = new Mouse(rt); | |
const BIG = 9999; | |
m.postData({ | |
x: BIG, | |
y: BIG, | |
canvasWidth: 480, | |
canvasHeight: 360 | |
}); | |
t.strictEquals(m.getClientX(), BIG); | |
t.strictEquals(m.getClientY(), BIG); | |
t.strictEquals(m.getScratchX(), 240); | |
t.strictEquals(m.getScratchY(), -180); | |
t.end(); | |
}); | |
test('mouseButtonDown', t => { | |
const rt = new Runtime(); | |
const m = new Mouse(rt); | |
t.strictEquals(m.getButtonIsDown(0), false); | |
t.strictEquals(m.getButtonIsDown(1), false); | |
t.strictEquals(m.getButtonIsDown(2), false); | |
m.postData({ | |
isDown: true, | |
button: 0 | |
}); | |
t.strictEquals(m.getButtonIsDown(0), true); | |
t.strictEquals(m.getButtonIsDown(1), false); | |
t.strictEquals(m.getButtonIsDown(2), false); | |
m.postData({ | |
isDown: true, | |
button: 2 | |
}); | |
t.strictEquals(m.getButtonIsDown(0), true); | |
t.strictEquals(m.getButtonIsDown(1), false); | |
t.strictEquals(m.getButtonIsDown(2), true); | |
m.postData({ | |
isDown: false, | |
button: 2 | |
}); | |
t.strictEquals(m.getButtonIsDown(0), true); | |
t.strictEquals(m.getButtonIsDown(1), false); | |
t.strictEquals(m.getButtonIsDown(2), false); | |
t.end(); | |
}); | |
test('mouseDown with buttons', t => { | |
const rt = new Runtime(); | |
const m = new Mouse(rt); | |
t.strictEquals(m.getIsDown(), false); | |
m.postData({ | |
isDown: true, | |
button: 0 | |
}); | |
t.strictEquals(m.getIsDown(), true); | |
m.postData({ | |
isDown: true, | |
button: 2 | |
}); | |
t.strictEquals(m.getIsDown(), true); | |
m.postData({ | |
isDown: false, | |
button: 2 | |
}); | |
t.strictEquals(m.getIsDown(), false); | |
t.end(); | |
}); | |
test('missing button is treated as left', t => { | |
const rt = new Runtime(); | |
const m = new Mouse(rt); | |
t.strictEquals(m.getButtonIsDown(0), false); | |
m.postData({ | |
isDown: true | |
}); | |
t.strictEquals(m.getButtonIsDown(0), true); | |
m.postData({ | |
isDown: false | |
}); | |
t.strictEquals(m.getButtonIsDown(0), false); | |
t.end(); | |
}); | |
test('usesRightClickDown', t => { | |
const rt = new Runtime(); | |
const m = new Mouse(rt); | |
t.strictEquals(m.usesRightClickDown, false); | |
t.strictEquals(m.getButtonIsDown(2), false); | |
t.strictEquals(m.usesRightClickDown, true); | |
t.end(); | |
}); | |
test('no rounding when misc limits disabled', t => { | |
const rt = new Runtime(); | |
const m = new Mouse(rt); | |
m.postData({ | |
x: 241, | |
y: 541, | |
canvasWidth: 960, | |
canvasHeight: 720 | |
}); | |
t.equal(m.getScratchX(), -119); | |
t.equal(m.getScratchY(), -90); | |
rt.setRuntimeOptions({ | |
miscLimits: false | |
}); | |
t.equal(m.getScratchX(), -119.5); | |
t.equal(m.getScratchY(), -90.5); | |
t.end(); | |
}); | |
test('accepts 0 as x and y position', t => { | |
const rt = new Runtime(); | |
const m = new Mouse(rt); | |
m.postData({ | |
x: 1, | |
y: 2, | |
canvasWidth: 480, | |
canvasHeight: 360 | |
}); | |
t.equal(m.getClientX(), 1); | |
t.equal(m.getClientY(), 2); | |
m.postData({ | |
x: 0, | |
y: 0, | |
canvasWidth: 480, | |
canvasHeight: 360 | |
}); | |
t.equal(m.getClientX(), 0); | |
t.equal(m.getClientY(), 0); | |
t.end(); | |
}); | |