优化目录结构
This commit is contained in:
172
client/test/unit/inputdevice.test.js
Normal file
172
client/test/unit/inputdevice.test.js
Normal file
@@ -0,0 +1,172 @@
|
||||
import {
|
||||
FourCC,
|
||||
Mouse,
|
||||
Keyboard,
|
||||
Touchscreen,
|
||||
Gamepad,
|
||||
KeyboardState,
|
||||
MouseState,
|
||||
TouchscreenState,
|
||||
GamepadState,
|
||||
StateEvent,
|
||||
InputEvent,
|
||||
TextEvent
|
||||
} from "../../src/input/inputdevice.js";
|
||||
|
||||
describe(`FourCC`, () => {
|
||||
test('toInt32', () => {
|
||||
const number = new FourCC('A', 'A', 'A', 'A').toInt32();
|
||||
expect(number).toBe(0x41414141);
|
||||
});
|
||||
});
|
||||
|
||||
describe(`MouseState`, () => {
|
||||
describe(`with MouseEvent`, () => {
|
||||
let event;
|
||||
beforeEach(() => {
|
||||
event = new MouseEvent('click', { buttons:1, clientX:0, clientY:0});
|
||||
});
|
||||
test('format', () => {
|
||||
const format = new MouseState(event).format;
|
||||
expect(format).toBe(0x4d4f5553);
|
||||
});
|
||||
test('buffer', () => {
|
||||
const state = new MouseState(event);
|
||||
expect(state.buffer.byteLength).toBeGreaterThan(0);
|
||||
});
|
||||
});
|
||||
describe(`with WheelEvent`, () => {
|
||||
let event;
|
||||
beforeEach(() => {
|
||||
event = new WheelEvent('wheel', { deltaX:0, deltaY:0 });
|
||||
});
|
||||
test('format', () => {
|
||||
const format = new MouseState(event).format;
|
||||
expect(format).toBe(0x4d4f5553);
|
||||
});
|
||||
test('buffer', () => {
|
||||
const state = new MouseState(event);
|
||||
expect(state.buffer.byteLength).toBeGreaterThan(0);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
describe(`KeyboardState`, () => {
|
||||
let event;
|
||||
beforeEach(() => {
|
||||
event = new KeyboardEvent('keydown', { code: 'KeyA' });
|
||||
});
|
||||
test('format', () => {
|
||||
const format = new KeyboardState(event).format;
|
||||
expect(format).toBe(0x4b455953);
|
||||
});
|
||||
test('buffer', () => {
|
||||
const state = new KeyboardState(event);
|
||||
expect(state.buffer.byteLength).toBeGreaterThan(0);
|
||||
});
|
||||
});
|
||||
|
||||
describe(`TouchscreenState`, () => {
|
||||
let event;
|
||||
beforeEach(() => {
|
||||
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"
|
||||
}]
|
||||
});
|
||||
});
|
||||
test('format', () => {
|
||||
const format = new TouchscreenState(event, null, Date.now()).format;
|
||||
expect(format).toBe(0x54534352);
|
||||
});
|
||||
test('buffer', () => {
|
||||
const state = new TouchscreenState(event, null, Date.now());
|
||||
expect(state.buffer.byteLength).toBeGreaterThan(0);
|
||||
});
|
||||
});
|
||||
|
||||
describe(`GamepadState`, () => {
|
||||
let event;
|
||||
beforeEach(() => {
|
||||
event = {
|
||||
type: 'gamepadupdated',
|
||||
gamepad : {
|
||||
id: 1,
|
||||
buttons: Array(16).fill({ pressed: false, value: 1 }),
|
||||
axes:[0, 0, 0, 0]
|
||||
}};
|
||||
});
|
||||
test('format', () => {
|
||||
const format = new GamepadState(event).format;
|
||||
expect(format).toBe(0x47504144);
|
||||
});
|
||||
test('buffer', () => {
|
||||
const state = new GamepadState(event);
|
||||
expect(state.buffer.byteLength).toBeGreaterThan(0);
|
||||
});
|
||||
});
|
||||
|
||||
describe(`StateEvent`, () => {
|
||||
let state;
|
||||
beforeEach(() => {
|
||||
const event = new KeyboardEvent('keydown', { code: 'KeyA' });
|
||||
state = new KeyboardState(event);
|
||||
});
|
||||
test('buffer', () => {
|
||||
const stateEvent = StateEvent.fromState(state, 0, Date.now());
|
||||
expect(new Int32Array(stateEvent.buffer.slice(0, 4))[0]).toBe(StateEvent.format);
|
||||
});
|
||||
});
|
||||
|
||||
describe(`TextEvent`, () => {
|
||||
test('buffer', () => {
|
||||
const event = new KeyboardEvent('keydown', { code: 'KeyA', key: "a"});
|
||||
const textEvent = TextEvent.create(0, event, Date.now());
|
||||
expect(new Int32Array(textEvent.buffer.slice(0, 4))[0]).toBe(TextEvent.format);
|
||||
const offset = InputEvent.size;
|
||||
// 'a' is 97
|
||||
expect(new Uint32Array(textEvent.buffer.slice(offset, offset+4))[0]).toBe(97);
|
||||
});
|
||||
});
|
||||
|
||||
describe(`Mouse`, () => {
|
||||
test('alignedSizeInBytes', () => {
|
||||
let device = new Mouse("Mouse", "Mouse", 1, null, null);
|
||||
expect(device).toBeInstanceOf(Mouse);
|
||||
});
|
||||
});
|
||||
|
||||
describe(`Keyboard`, () => {
|
||||
test('alignedSizeInBytes', () => {
|
||||
let device = new Keyboard("Keyboard", "Keyboard", 1, null, null);
|
||||
expect(device).toBeInstanceOf(Keyboard);
|
||||
});
|
||||
});
|
||||
|
||||
describe(`Touchscreen`, () => {
|
||||
test('alignedSizeInBytes', () => {
|
||||
let device = new Touchscreen("Touchscreen", "Touchscreen", 1, null, null);
|
||||
expect(device).toBeInstanceOf(Touchscreen);
|
||||
});
|
||||
});
|
||||
|
||||
describe(`Gamepad`, () => {
|
||||
test('alignedSizeInBytes', () => {
|
||||
let device = new Gamepad("Gamepad", "Gamepad", 1, null, null);
|
||||
expect(device).toBeInstanceOf(Gamepad);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user