feat: show special note shares and clarify average event rankings
This commit is contained in:
@@ -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);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user