feat: improve chart navigation and show original measure numbers
Publish GitHub Pages output / publish (push) Successful in 49s

This commit is contained in:
2026-10-04 23:05:57 +09:00
parent 4b8313c8a8
commit 0ccf57d535
849 changed files with 1236 additions and 928 deletions
+34
View File
@@ -76,4 +76,38 @@ test('마디 길이 변경은 다음 변경까지 유지한다', () => {
#00212:11
`;
assert.deepEqual(parseSusTimeline(text).notes.map(n=>n.timeSeconds),[3,6]);
assert.deepEqual(parseSusTimeline(text).visual.measures, [
{ number: 0, timeSeconds: 0 }, { number: 1, timeSeconds: 3 },
{ number: 2, timeSeconds: 6 }, { number: 3, timeSeconds: 9 }
]);
});
test('원본 마디 번호는 빈 마디, 마디 중간 BPM 변경과 WAVEOFFSET을 반영한다', () => {
const text = `#MUSIC_ID m0003
#MEASURE_COUNT 4
#BASEBPM 60
#WAVEOFFSET 0.5
#NORMAL_NOTE_COUNT 1
#FLICK_NOTE_COUNT 0
#LONG_START_NOTE_COUNT 0
#LONG_END_NOTE_COUNT 0
#LONG_FLICK_END_NOTE_COUNT 0
#LONG_RELAY_NOTE_COUNT 0
#LONG_CONTINUE_NOTE_COUNT 0
#BPM01:60
#BPM02:120
#00008:01
#00108:0002
#00202:3
#00312:11
`;
assert.deepEqual(parseSusTimeline(text).visual.measures, [
{ number: 0, timeSeconds: 0.5 }, { number: 1, timeSeconds: 4.5 },
{ number: 2, timeSeconds: 7.5 }, { number: 3, timeSeconds: 9 },
{ number: 4, timeSeconds: 10.5 }
]);
assert.deepEqual(parseSusTimeline(text).notes.map(note => note.timeSeconds), [9]);
// Before the first explicit BPM event, use BASEBPM rather than extrapolating it backwards.
assert.deepEqual(parseSusTimeline(text.replace('#00008:01\n', '')).visual.measures, parseSusTimeline(text).visual.measures);
assert.throws(() => parseSusTimeline(text.replace('#MEASURE_COUNT 4', '#MEASURE_COUNT NaN')), /마디 수/);
});