29 lines
950 B
JavaScript
29 lines
950 B
JavaScript
import { describe, expect, it, vi } from 'vitest';
|
|
|
|
import { oncePerEvent } from '../../app/static/js/systems/keyboard.js';
|
|
|
|
describe('oncePerEvent', () => {
|
|
it('lässt dasselbe Ereignisobjekt nur einmal durch', () => {
|
|
const handler = vi.fn();
|
|
const wrapped = oncePerEvent(handler);
|
|
const first = { code: 'ArrowDown' };
|
|
const second = { code: 'ArrowDown' };
|
|
// Phaser meldet bei mehreren Ereignissen pro Frame frühere Ereignisse erneut.
|
|
wrapped(first);
|
|
wrapped(first);
|
|
wrapped(second);
|
|
wrapped(first);
|
|
wrapped(second);
|
|
expect(handler).toHaveBeenCalledTimes(2);
|
|
expect(handler.mock.calls.map(([event]) => event)).toEqual([first, second]);
|
|
});
|
|
|
|
it('funktioniert auch ohne Ereignisobjekt (z. B. Zeiger-Aufrufe)', () => {
|
|
const handler = vi.fn();
|
|
const wrapped = oncePerEvent(handler);
|
|
wrapped(undefined);
|
|
wrapped(undefined);
|
|
expect(handler).toHaveBeenCalledTimes(2);
|
|
});
|
|
});
|