Newer
Older
rpg / apps / game / src / data / __tests__ / sfxSpecs.test.ts
/**
 * Парити-тест спек-синтеза: renderSpec(SPEC_SFX[key]) должен быть бит-в-бит
 * равен формуле бывшего файлового генератора (tools/audio/gen.mjs) — миграция
 * sfx/bell_hit и sfx/whoosh на playSpec не должна изменить звучание.
 * Слух агента нет, поэтому звучание сверяется численно (поразрядно).
 */
import { describe, expect, it } from 'vitest';
import { renderSpec } from '@rpg/engine';
import { bellHit, whoosh } from '../../../tools/audio/gen.mjs';
import { SPEC_SFX } from '../sfxSpecs';

describe('паритет SPEC_SFX с формулами gen.mjs', () => {
    it('sfx/bell_hit — бит-в-бит равен bellHit()', () => {
        const spec = renderSpec(SPEC_SFX['sfx/bell_hit']!);
        const wav = bellHit();
        expect(spec.length).toBe(wav.length);
        for (let i = 0; i < wav.length; i++) expect(spec[i]).toBe(wav[i]);
    });

    it('sfx/whoosh — бит-в-бит равен whoosh()', () => {
        const spec = renderSpec(SPEC_SFX['sfx/whoosh']!);
        const wav = whoosh();
        expect(spec.length).toBe(wav.length);
        for (let i = 0; i < wav.length; i++) expect(spec[i]).toBe(wav[i]);
    });
});