feat: complete placement analysis workflow
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import test from 'node:test';
|
||||
import { toOptimizerCard, type OptimizerSourceCard } from './card-adapter.ts';
|
||||
|
||||
const source: OptimizerSourceCard = {
|
||||
id: 'card',
|
||||
name: '카드',
|
||||
details: {
|
||||
active: [
|
||||
{ level: 1, coolTimeSeconds: 10, durationSeconds: 1, effect: '스코어가 10% UP' },
|
||||
{ level: 2, coolTimeSeconds: 8, durationSeconds: 2, effect: '스코어가 20% UP' }
|
||||
],
|
||||
special: [
|
||||
{ level: 1, coolTimeSeconds: null, durationSeconds: 1, effect: '스코어가 30% UP' },
|
||||
{ level: 2, coolTimeSeconds: null, durationSeconds: 2, effect: '스코어가 40% UP' }
|
||||
]
|
||||
}
|
||||
};
|
||||
|
||||
test('액티브는 1개화, 스페셜은 3개화부터 2레벨을 적용한다', () => {
|
||||
const base = toOptimizerCard(source, 0);
|
||||
const activeAwakened = toOptimizerCard(source, 1);
|
||||
const specialAwakened = toOptimizerCard(source, 3);
|
||||
|
||||
assert.equal(base.active.scoreUpPercent, 10);
|
||||
assert.equal(base.special.scoreUpPercent, 30);
|
||||
assert.equal(activeAwakened.active.scoreUpPercent, 20);
|
||||
assert.equal(activeAwakened.special.scoreUpPercent, 30);
|
||||
assert.equal(specialAwakened.special.scoreUpPercent, 40);
|
||||
});
|
||||
|
||||
test('4개화 패시브의 타입별 스코어 서포트 대상과 수치를 변환한다', () => {
|
||||
const passiveSource: OptimizerSourceCard = {
|
||||
...source,
|
||||
type: '퓨어',
|
||||
generation: 'Promise',
|
||||
details: {
|
||||
...source.details,
|
||||
passive: [
|
||||
{ level: 1, description: '[attribute=pure]퓨어 타입[/attribute] 2명의 스코어 서포트 효과 8%' },
|
||||
{ level: 2, description: '[attribute=pure]퓨어 타입[/attribute] 2명의 스코어 서포트 효과 11%' }
|
||||
]
|
||||
}
|
||||
};
|
||||
|
||||
assert.deepEqual(toOptimizerCard(passiveSource, 4, undefined, [{ type: '퓨어', generation: 'Promise' }]).passiveScoreSupportEffects, [{
|
||||
percent: 11,
|
||||
target: 'group',
|
||||
targetGroup: '퓨어 타입',
|
||||
targetCount: 2
|
||||
}]);
|
||||
});
|
||||
Reference in New Issue
Block a user