Files
core2026/app/game-frontend/test/legacyProgress.test.ts
T

36 lines
1.4 KiB
TypeScript

import assert from 'node:assert/strict';
import { describe, it } from 'node:test';
import { DEX_EX_PLUS, dexProgress, legacyExperiencePercent, ratioPercent } from '../src/utils/legacyProgress.ts';
void describe('legacy progress calculations', () => {
void it('uses the real EX+ threshold for the full dexterity bar', () => {
assert.equal(DEX_EX_PLUS, 1_275_975);
assert.equal(dexProgress(1_000_000).overallPercent, (1_000_000 / 1_275_975) * 100);
assert.equal(dexProgress(DEX_EX_PLUS).overallPercent, 100);
});
void it('tracks progress inside the current dexterity grade separately', () => {
assert.deepEqual(dexProgress(350), {
level: 1,
name: 'F',
color: 'navy',
overallPercent: (350 / DEX_EX_PLUS) * 100,
gradePercent: 0,
nextName: 'F+',
remaining: 1_025,
});
assert.equal(dexProgress(1_275_975).gradePercent, 100);
assert.equal(dexProgress(1_275_975).nextName, null);
});
void it('preserves ref experience-level and guarded ratio percentages', () => {
assert.equal(legacyExperiencePercent(55, 0), 55);
assert.equal(legacyExperiencePercent(450, 4), 50);
assert.equal(legacyExperiencePercent(1_210, 11), 0);
assert.equal(legacyExperiencePercent(1_440, 11), 100);
assert.equal(ratioPercent(10, 0), 0);
assert.equal(ratioPercent(15, 10), 100);
});
});