Files
ep-133-project-export/tests/project-settings.test.ts

36 lines
1.2 KiB
TypeScript

import assert from 'node:assert/strict';
import test from 'node:test';
import { collectSettings } from '../src/lib/parsers';
import { TarFile } from '../src/lib/untar';
import { FaderParam } from '../src/types/types';
test('preserves float32 precision for every group fader parameter', () => {
const data = new Uint8Array(224);
const view = new DataView(data.buffer);
const expectedValues = new Map<string, number>();
view.setFloat32(4, 123.456789, true);
for (let groupNum = 0; groupNum < 4; groupNum++) {
for (let paramNum = 0; paramNum <= 11; paramNum++) {
const value = 0.1234567 + groupNum * 0.1 + paramNum * 0.0032109;
const offset = 24 + groupNum * 48 + paramNum * 4;
view.setFloat32(offset, value, true);
expectedValues.set(`${groupNum}:${paramNum}`, view.getFloat32(offset, true));
}
}
const settings = collectSettings([new TarFile('settings', data.length, data)]);
assert.equal(settings.bpm, 123.46);
for (const [groupNum, group] of ['a', 'b', 'c', 'd'].entries()) {
for (let paramNum = 0; paramNum <= 11; paramNum++) {
assert.equal(
settings.groupFaderParams[group][paramNum as FaderParam],
expectedValues.get(`${groupNum}:${paramNum}`),
);
}
}
});