soiz1's picture
Upload 811 files
30c32c8 verified
raw
history blame
3.44 kB
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();
});