import assert from 'node:assert/strict'; import test from 'node:test'; import { getSimplerPlaybackState, hasOneShotOverride, } from '../src/lib/exporters/ableton/playback'; import { PadCode } from '../src/types/types'; const project7Overrides = ['b0', 'c1', 'c8', 'c9', 'd3'] as PadCode[]; test('applies the selective Project 7 One-Shot overrides', () => { for (const padCode of project7Overrides) { assert.equal(hasOneShotOverride(padCode, project7Overrides), true); } assert.equal(hasOneShotOverride('b3', project7Overrides), false); assert.equal(hasOneShotOverride('b7', project7Overrides), false); }); test('preserves project playback modes when no override is selected', () => { assert.equal(hasOneShotOverride('b0'), false); }); test('changes only the active playback mode for forced KEY and LEGATO pads', () => { assert.deepEqual(getSimplerPlaybackState('key', true), { playbackMode: 1, monophonic: false, useOneShotEnvelope: false, }); assert.deepEqual(getSimplerPlaybackState('legato', true), { playbackMode: 1, monophonic: true, useOneShotEnvelope: false, }); }); test('uses One-Shot envelopes only for native EP ONE pads', () => { assert.deepEqual(getSimplerPlaybackState('oneshot', false), { playbackMode: 1, monophonic: false, useOneShotEnvelope: true, }); assert.deepEqual(getSimplerPlaybackState('legato', false), { playbackMode: 0, monophonic: true, useOneShotEnvelope: false, }); });