import assert from 'node:assert/strict'; import test from 'node:test'; import { convertGroupFaderValue, FADER_POLICIES, getFaderPolicy, } from '../src/lib/exporters/ableton/faderPolicies'; import { AblTrack } from '../src/lib/transformers/ableton'; import { FaderParam } from '../src/types/types'; const track = { volume: 0.4 } as AblTrack; test('defines an explicit policy for every EP group fader parameter', () => { assert.equal(Object.keys(FADER_POLICIES).length, 12); for (let parameter = FaderParam.LVL; parameter <= FaderParam.MOD; parameter++) { assert.ok(getFaderPolicy(parameter)); } }); test('separates Live targets, note transforms and unsupported group parameters', () => { assert.equal(getFaderPolicy(FaderParam.PAN).renderStrategy, 'target'); assert.equal(getFaderPolicy(FaderParam.VEL).renderStrategy, 'note'); assert.equal(getFaderPolicy(FaderParam.TIM).renderStrategy, 'unsupported'); assert.equal(getFaderPolicy(FaderParam.ATK).renderStrategy, 'unsupported'); assert.equal(getFaderPolicy(FaderParam.REL).renderStrategy, 'unsupported'); }); test('uses one group-fader conversion path for mixer and pad targets', () => { assert.equal(convertGroupFaderValue(FaderParam.LVL, 0.5, { track }), 0.2); assert.equal(convertGroupFaderValue(FaderParam.PAN, 0.75, { track }), 0.5); assert.equal(convertGroupFaderValue(FaderParam.PTC, 0.75, { track, valueOffset: 7 }), 9.5); });