53 lines
1.9 KiB
TypeScript
53 lines
1.9 KiB
TypeScript
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
|
|
}]);
|
|
});
|