47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
|
|
import assert from "assert";
|
||
|
|
import {
|
||
|
|
computeMobStats,
|
||
|
|
getMobInstance,
|
||
|
|
MOB_DEFINITIONS,
|
||
|
|
} from "../src/game/mobs/mobData";
|
||
|
|
import { createOrUpdateMob } from "../src/game/mobs/admin";
|
||
|
|
|
||
|
|
async function main() {
|
||
|
|
console.log("Starting formal mob tests...");
|
||
|
|
|
||
|
|
// Test computeMobStats deterministic
|
||
|
|
const def = MOB_DEFINITIONS[0];
|
||
|
|
const s1 = computeMobStats(def, 1);
|
||
|
|
const s2 = computeMobStats(def, 2);
|
||
|
|
assert(s2.hp >= s1.hp, "HP should increase or stay with level");
|
||
|
|
console.log("computeMobStats OK");
|
||
|
|
|
||
|
|
// Test getMobInstance
|
||
|
|
const inst = getMobInstance(def.key, 3);
|
||
|
|
assert(inst !== null, "getMobInstance should return an instance");
|
||
|
|
assert(
|
||
|
|
typeof inst!.scaled.hp === "number",
|
||
|
|
"instance scaled.hp should be a number"
|
||
|
|
);
|
||
|
|
console.log("getMobInstance OK");
|
||
|
|
|
||
|
|
// Test createOrUpdateMob in no-db mode (should not throw)
|
||
|
|
try {
|
||
|
|
const r = await createOrUpdateMob({ ...def, key: "test.unit.mob" } as any);
|
||
|
|
assert(r && r.def, "createOrUpdateMob must return def");
|
||
|
|
console.log("createOrUpdateMob (no-db) OK");
|
||
|
|
} catch (e) {
|
||
|
|
console.warn(
|
||
|
|
"createOrUpdateMob test skipped (DB needed):",
|
||
|
|
(e as any)?.message ?? e
|
||
|
|
);
|
||
|
|
}
|
||
|
|
|
||
|
|
console.log("All formal mob tests passed");
|
||
|
|
}
|
||
|
|
|
||
|
|
main().catch((e) => {
|
||
|
|
console.error(e);
|
||
|
|
process.exit(1);
|
||
|
|
});
|