Spaces:
Runtime error
Runtime error
| 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(); | |
| }); | |