feat: show special note shares and clarify average event rankings

This commit is contained in:
2026-09-04 10:41:52 +09:00
parent cda25fdcb1
commit e1925f4f0f
9 changed files with 126 additions and 8 deletions
+16 -1
View File
@@ -1,7 +1,7 @@
import test from 'node:test';
import assert from 'node:assert/strict';
import { events } from '../data/events.ts';
import { activeEventAt, eventBonusBreakdown, eventChallengeSongScoreBonusPercent, eventOptimizationCardEligible, eventPointIndex } from './event-optimization.ts';
import { activeEventAt, compareEventRankings, eventBonusBreakdown, eventChallengeSongScoreBonusPercent, eventOptimizationCardEligible, eventPointIndex } from './event-optimization.ts';
const currentEvent = events[0];
@@ -46,3 +46,18 @@ test('과제곡에 대응하는 신규 카드가 있을 때만 스코어 보너
test('예상 점수에 이벤트 획득 배율을 적용해 비교 지수를 만든다', () => {
assert.equal(eventPointIndex(1_000_000, 128), 2_280_000);
});
test('이벤트 순위는 최고점보다 평균 점수를 우선한다', () => {
const highMaximum = { result: { expectedScore: 100, theoreticalMaxScore: 300 } };
const highAverage = { result: { expectedScore: 120, theoreticalMaxScore: 200 } };
assert.deepEqual([highMaximum, highAverage].sort(compareEventRankings), [highAverage, highMaximum]);
});
test('평균 이벤트 Pt에는 획득 보너스를 반영하고 동률은 평균 점수로 정렬한다', () => {
const bonus = { result: { expectedScore: 100 }, eventBonusPercent: 100 };
const score = { result: { expectedScore: 150 }, eventBonusPercent: 0 };
assert.ok(compareEventRankings(bonus, score) < 0);
assert.ok(compareEventRankings(bonus, { result: { expectedScore: 200 } }) > 0);
const sameAverage = { ...bonus, result: { expectedScore: 100, theoreticalMaxScore: 999 } };
assert.equal(compareEventRankings(bonus, sameAverage), 0);
});