23 lines
1.5 KiB
TypeScript
23 lines
1.5 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { calculateSubstats, generateBuild, SUBSTAT_SCALARS } from "./generate";
|
|
import type { Build } from "./types";
|
|
|
|
const build: Build = {
|
|
id: "test", characterId: "10000032", characterKey: "bennett", characterName: "Bennett", characterImageUrl: "", level: 90, maxLevel: 90, constellation: 6, talents: [9, 12, 13], weaponId: "11401", weaponKey: "favoniussword", weaponName: "Favonius Sword", weaponLevel: 90, weaponMaxLevel: 90, refinement: 5, artifactMode: "4pc", artifactOneId: "15007", artifactOneKey: "noblesseoblige", artifactOneName: "Noblesse Oblige", artifactTwoId: "", artifactTwoKey: "", artifactTwoName: "", sands: "er", goblet: "pyro%", circlet: "cr", rolls: { hp: 2, atk: 1, def: 0, em: 2, er: 3, "hp%": 0, "atk%": 4, "def%": 1, cr: 5, cd: 6 },
|
|
};
|
|
|
|
describe("gcsim generator", () => {
|
|
it("uses current average roll scalars", () => {
|
|
expect(SUBSTAT_SCALARS["def%"]).toBe(0.062);
|
|
expect(calculateSubstats(build).hp).toBeCloseTo(507.88);
|
|
expect(calculateSubstats(build).cd).toBeCloseTo(0.3972);
|
|
});
|
|
it("generates a complete build block", () => {
|
|
expect(generateBuild(build)).toBe(`bennett char lvl=90/90 cons=6 talent=9,12,13;
|
|
bennett add weapon="favoniussword" refine=5 lvl=90/90;
|
|
bennett add set="noblesseoblige" count=4;
|
|
bennett add stats hp=4780 atk=311 er=0.518 pyro%=0.466 cr=0.311; # main stats
|
|
bennett add stats hp=507.88 atk=16.54 em=39.64 er=0.1653 atk%=0.1984 def%=0.062 cr=0.1655 cd=0.3972; # substats`);
|
|
});
|
|
});
|