diff --git a/tests/ableton-song.test.ts b/tests/ableton-song.test.ts index dc76739..90146b7 100644 --- a/tests/ableton-song.test.ts +++ b/tests/ableton-song.test.ts @@ -102,13 +102,15 @@ function project(): ProjectRawData { pads: { a: [pad('a', 0), pad('a', 1)], b: [pad('b', 0)], - c: [], + c: [pad('c', 0)], d: [], }, groupPatterns: [ pattern('a', 1, 2, 0, 60), pattern('b', 2, 1, 0, 36), pattern('a', 3, 1, 1, 64), + pattern('c', 3, 1, 0, 67), + pattern('b', 1, 1, 0, 38), ], scenes: [ scene(1, { a: 1, b: 2, c: 0, d: 0 }, 3, 4), @@ -156,7 +158,9 @@ test('combines genuine Session scenes, orphan patterns and the repeated Song Arr [ ['01', 'scene', ['a', 'b', 'c', 'd']], ['02', 'scene', ['a', 'b', 'c', 'd']], + ['B PATTERN 01', 'pattern', ['b']], ['A PATTERN 03', 'pattern', ['a']], + ['C PATTERN 03', 'pattern', ['c']], ], ); assert.deepEqual( @@ -176,6 +180,7 @@ test('combines genuine Session scenes, orphan patterns and the repeated Song Arr const a0 = result.tracks.find((track) => track.padCode === 'a0'); const a1 = result.tracks.find((track) => track.padCode === 'a1'); const b0 = result.tracks.find((track) => track.padCode === 'b0'); + const c0 = result.tracks.find((track) => track.padCode === 'c0'); assert.deepEqual( a0?.lane?.sessionClips.map((clip) => clip.sceneIndex), @@ -191,17 +196,22 @@ test('combines genuine Session scenes, orphan patterns and the repeated Song Arr ); assert.deepEqual( a1?.lane?.sessionClips.map((clip) => clip.sceneIndex), - [2], + [3], ); assert.deepEqual(a1?.lane?.arrangementClips, []); assert.deepEqual( b0?.lane?.sessionClips.map((clip) => clip.sceneIndex), - [0], + [0, 2], ); assert.deepEqual( b0?.lane?.arrangementClips.map((clip) => [clip.occurrenceIndex, clip.offset]), [[1, 4]], ); + assert.deepEqual( + c0?.lane?.sessionClips.map((clip) => clip.sceneIndex), + [4], + ); + assert.deepEqual(c0?.lane?.arrangementClips, []); }); test('keeps Session material and leaves Arrangement empty when no Song is present', () => {