mirror of
https://github.com/novnc/noVNC.git
synced 2026-05-26 23:19:41 +00:00
The Mouse class does very little now so it mostly just obfuscate things. Move everything directly in to the RFB class instead.
74 lines
2.5 KiB
JavaScript
74 lines
2.5 KiB
JavaScript
const expect = chai.expect;
|
|
|
|
import Mouse from '../core/input/mouse.js';
|
|
|
|
describe('Mouse Event Handling', function () {
|
|
"use strict";
|
|
|
|
let target;
|
|
|
|
beforeEach(function () {
|
|
// For these tests we can assume that the canvas is 100x100
|
|
// located at coordinates 10x10
|
|
target = document.createElement('canvas');
|
|
target.style.position = "absolute";
|
|
target.style.top = "10px";
|
|
target.style.left = "10px";
|
|
target.style.width = "100px";
|
|
target.style.height = "100px";
|
|
document.body.appendChild(target);
|
|
});
|
|
afterEach(function () {
|
|
document.body.removeChild(target);
|
|
target = null;
|
|
});
|
|
|
|
// The real constructors might not work everywhere we
|
|
// want to run these tests
|
|
const mouseevent = (typeArg, MouseEventInit) => {
|
|
const e = { type: typeArg };
|
|
for (let key in MouseEventInit) {
|
|
e[key] = MouseEventInit[key];
|
|
}
|
|
e.stopPropagation = sinon.spy();
|
|
e.preventDefault = sinon.spy();
|
|
return e;
|
|
};
|
|
|
|
describe('Decode Mouse Events', function () {
|
|
it('should decode mousedown events', function (done) {
|
|
const mouse = new Mouse(target);
|
|
mouse.onmousebutton = (x, y, down, bmask) => {
|
|
expect(bmask).to.be.equal(0x01);
|
|
expect(down).to.be.equal(1);
|
|
done();
|
|
};
|
|
mouse._handleMouseDown(mouseevent('mousedown', { button: 0 }));
|
|
});
|
|
it('should decode mouseup events', function (done) {
|
|
let calls = 0;
|
|
const mouse = new Mouse(target);
|
|
mouse.onmousebutton = (x, y, down, bmask) => {
|
|
expect(bmask).to.be.equal(0x01);
|
|
if (calls++ === 1) {
|
|
expect(down).to.not.be.equal(1);
|
|
done();
|
|
}
|
|
};
|
|
mouse._handleMouseDown(mouseevent('mousedown', { button: 0 }));
|
|
mouse._handleMouseUp(mouseevent('mouseup', { button: 0 }));
|
|
});
|
|
it('should decode mousemove events', function (done) {
|
|
const mouse = new Mouse(target);
|
|
mouse.onmousemove = (x, y) => {
|
|
// Note that target relative coordinates are sent
|
|
expect(x).to.be.equal(40);
|
|
expect(y).to.be.equal(10);
|
|
done();
|
|
};
|
|
mouse._handleMouseMove(mouseevent('mousemove',
|
|
{ clientX: 50, clientY: 20 }));
|
|
});
|
|
});
|
|
});
|