Files
2026-09-24 17:57:54 +02:00

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);
});
});