111
This commit is contained in:
132
WebApp/client/test/inputremoting.test.js
Normal file
132
WebApp/client/test/inputremoting.test.js
Normal file
@@ -0,0 +1,132 @@
|
||||
import {
|
||||
InputDevice,
|
||||
MouseState,
|
||||
KeyboardState,
|
||||
TouchscreenState,
|
||||
GamepadState
|
||||
} from "../src/inputdevice.js";
|
||||
|
||||
import {
|
||||
MessageType,
|
||||
NewDeviceMsg,
|
||||
NewEventsMsg,
|
||||
RemoveDeviceMsg,
|
||||
InputRemoting,
|
||||
} from "../src/inputremoting.js";
|
||||
|
||||
import {
|
||||
Sender,
|
||||
Observer
|
||||
} from "../src/sender.js";
|
||||
|
||||
import {DOMRect} from "./domrect.js";
|
||||
|
||||
describe(`InputRemoting`, () => {
|
||||
let sender = null;
|
||||
let inputRemoting = null;
|
||||
let observer = null;
|
||||
beforeEach(async () => {
|
||||
document.getBoundingClientRect = function(){ return new DOMRect(0,0,0,0); };
|
||||
sender = new Sender(document);
|
||||
inputRemoting = new InputRemoting(sender);
|
||||
let dc = null;
|
||||
observer = new Observer(dc);
|
||||
});
|
||||
test('startSending', () => {
|
||||
expect.assertions(0);
|
||||
inputRemoting.startSending();
|
||||
});
|
||||
test('stopSending', () => {
|
||||
expect.assertions(0);
|
||||
inputRemoting.startSending();
|
||||
inputRemoting.stopSending();
|
||||
});
|
||||
test('subscribe', () => {
|
||||
expect.assertions(0);
|
||||
inputRemoting.subscribe(observer);
|
||||
});
|
||||
});
|
||||
|
||||
test('create NewDeviceMsg', () => {
|
||||
const device = new InputDevice("Keyboard", "Keyboard", 0, null, null);
|
||||
const msg = NewDeviceMsg.create(device);
|
||||
expect(msg.participant_id).toBe(0);
|
||||
expect(msg.type).toBe(MessageType.NewDevice);
|
||||
expect(msg.data).toBeInstanceOf(ArrayBuffer);
|
||||
expect(msg.data.byteLength).toBeGreaterThan(0);
|
||||
});
|
||||
|
||||
describe('create NewEventMsg', () => {
|
||||
test('using MouseState', () => {
|
||||
const event = new MouseEvent('click', { buttons:0, clientX:0, clientY:0} );
|
||||
const state = new MouseState(event);
|
||||
const msg = NewEventsMsg.create(state);
|
||||
expect(msg.participant_id).toBe(0);
|
||||
expect(msg.type).toBe(MessageType.NewEvents);
|
||||
expect(msg.data).toBeInstanceOf(ArrayBuffer);
|
||||
expect(msg.data.byteLength).toBeGreaterThan(0);
|
||||
});
|
||||
test('using KeyboardState', () => {
|
||||
const event = new KeyboardEvent("keydown", { code: 'KeyA' });
|
||||
const state = new KeyboardState(event);
|
||||
const msg = NewEventsMsg.create(state);
|
||||
expect(msg.participant_id).toBe(0);
|
||||
expect(msg.type).toBe(MessageType.NewEvents);
|
||||
expect(msg.data).toBeInstanceOf(ArrayBuffer);
|
||||
expect(msg.data.byteLength).toBeGreaterThan(0);
|
||||
});
|
||||
test('using TouchscreenState', () => {
|
||||
const event = new TouchEvent("touchstart", {
|
||||
changedTouches: [{ // InputInit
|
||||
identifier: 0,
|
||||
target: null,
|
||||
clientX: 0,
|
||||
clientY: 0,
|
||||
screenX: 0,
|
||||
screenY: 0,
|
||||
pageX: 0,
|
||||
pageY: 0,
|
||||
radiusX: 0,
|
||||
radiusY: 0,
|
||||
rotationAngle: 0,
|
||||
force: 0,
|
||||
altitudeAngle: 0,
|
||||
azimuthAngle:0,
|
||||
touchType: "direct"
|
||||
}]
|
||||
});
|
||||
const state = new TouchscreenState(event, null, Date.now());
|
||||
expect(state.touchData).not.toBeNull();
|
||||
expect(state.touchData).toHaveLength(1);
|
||||
const msg = NewEventsMsg.create(state.touchData[0]);
|
||||
expect(msg.participant_id).toBe(0);
|
||||
expect(msg.type).toBe(MessageType.NewEvents);
|
||||
expect(msg.data).toBeInstanceOf(ArrayBuffer);
|
||||
expect(msg.data.byteLength).toBeGreaterThan(0);
|
||||
});
|
||||
test('using GamepadState', () => {
|
||||
const event = {
|
||||
type: 'gamepadupdated',
|
||||
gamepad : {
|
||||
id: 1,
|
||||
buttons: Array(16).fill({ pressed: false, value: 1 }),
|
||||
axes:[1, 1, 1, 1]
|
||||
}};
|
||||
const state = new GamepadState(event);
|
||||
const msg = NewEventsMsg.create(state);
|
||||
expect(msg.participant_id).toBe(0);
|
||||
expect(msg.type).toBe(MessageType.NewEvents);
|
||||
expect(msg.data).toBeInstanceOf(ArrayBuffer);
|
||||
expect(msg.data.byteLength).toBeGreaterThan(0);
|
||||
});
|
||||
});
|
||||
|
||||
test('create RemoveDeviceMsg', () => {
|
||||
const device = new InputDevice("Keyboard", "Keyboard", 0, null, null);
|
||||
const msg = RemoveDeviceMsg.create(device);
|
||||
expect(msg.participant_id).toBe(0);
|
||||
expect(msg.type).toBe(MessageType.RemoveDevice);
|
||||
expect(msg.data).toBeInstanceOf(ArrayBuffer);
|
||||
expect(msg.data.byteLength).toBeGreaterThan(0);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user