36 lines
1.4 KiB
TypeScript
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);
|
|
});
|
|
});
|