feat(renown): add the Renown power-curve table and reputation-rank resolver
This commit is contained in:
29
apps/api/src/renown/renown-base-stats.spec.ts
Normal file
29
apps/api/src/renown/renown-base-stats.spec.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
import { RENOWN_BASE_STATS, RENOWN_MAX, RENOWN_MIN } from './renown-base-stats';
|
||||
|
||||
describe('RENOWN_BASE_STATS', () => {
|
||||
it('spans exactly Renown 1 through 15', () => {
|
||||
expect(RENOWN_MIN).toBe(1);
|
||||
expect(RENOWN_MAX).toBe(15);
|
||||
expect(Object.keys(RENOWN_BASE_STATS).map(Number).sort((a, b) => a - b)).toEqual(
|
||||
Array.from({ length: 15 }, (_, i) => i + 1),
|
||||
);
|
||||
});
|
||||
|
||||
it('matches the exact V1 reference table from spec §4', () => {
|
||||
expect(RENOWN_BASE_STATS[1]).toEqual({ baseHp: 100, baseAttack: 6 });
|
||||
expect(RENOWN_BASE_STATS[5]).toEqual({ baseHp: 114, baseAttack: 8 });
|
||||
expect(RENOWN_BASE_STATS[10]).toEqual({ baseHp: 132, baseAttack: 10 });
|
||||
expect(RENOWN_BASE_STATS[15]).toEqual({ baseHp: 148, baseAttack: 12 });
|
||||
});
|
||||
|
||||
it('is monotonically non-decreasing in both stats as Renown increases', () => {
|
||||
for (let renown = 2; renown <= 15; renown += 1) {
|
||||
expect(RENOWN_BASE_STATS[renown].baseHp).toBeGreaterThanOrEqual(
|
||||
RENOWN_BASE_STATS[renown - 1].baseHp,
|
||||
);
|
||||
expect(RENOWN_BASE_STATS[renown].baseAttack).toBeGreaterThanOrEqual(
|
||||
RENOWN_BASE_STATS[renown - 1].baseAttack,
|
||||
);
|
||||
}
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user