mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-07-15 07:43:44 -05:00
58 lines
1.8 KiB
TypeScript
58 lines
1.8 KiB
TypeScript
import { describe, expect, test } from "vitest";
|
|
import {
|
|
BIG_BUBBLER_ID,
|
|
BOOYAH_BOMB_ID,
|
|
CRAB_TANK_ID,
|
|
SPLATTERCOLOR_SCREEN_ID,
|
|
specialWeaponIds,
|
|
TRIZOOKA_ID,
|
|
WAVE_BREAKER_ID,
|
|
} from "~/modules/in-game-lists/weapon-ids";
|
|
import { getSpecialWeaponRange } from "./special-weapon-range";
|
|
|
|
describe("special weapon range", () => {
|
|
test("computes a projectile range for Trizooka", () => {
|
|
const result = getSpecialWeaponRange(TRIZOOKA_ID);
|
|
|
|
expect(result?.rangeType).toBe("projectile");
|
|
expect(result?.range).toBeGreaterThan(0);
|
|
});
|
|
|
|
test("Crab Tank reaches further than Trizooka", () => {
|
|
const crab = getSpecialWeaponRange(CRAB_TANK_ID);
|
|
const trizooka = getSpecialWeaponRange(TRIZOOKA_ID);
|
|
|
|
expect(crab!.range).toBeGreaterThan(trizooka!.range);
|
|
});
|
|
|
|
test("throws-and-bursts specials expose a throw range plus explosion blast", () => {
|
|
const booyah = getSpecialWeaponRange(BOOYAH_BOMB_ID);
|
|
|
|
expect(booyah?.rangeType).toBe("projectile");
|
|
expect(booyah?.range).toBeGreaterThan(0);
|
|
expect(booyah?.blastRadius).toBeGreaterThan(0);
|
|
});
|
|
|
|
test("returns the effect radius for area specials", () => {
|
|
const waveBreaker = getSpecialWeaponRange(WAVE_BREAKER_ID);
|
|
|
|
expect(waveBreaker?.rangeType).toBe("radius");
|
|
expect(waveBreaker?.range).toBeGreaterThan(0);
|
|
});
|
|
|
|
test("returns null for global / utility specials without a meaningful circle", () => {
|
|
expect(getSpecialWeaponRange(BIG_BUBBLER_ID)).toBeNull();
|
|
expect(getSpecialWeaponRange(SPLATTERCOLOR_SCREEN_ID)).toBeNull();
|
|
});
|
|
|
|
test("every special is either unsupported or has a positive finite range", () => {
|
|
for (const id of specialWeaponIds) {
|
|
const result = getSpecialWeaponRange(id);
|
|
if (result === null) continue;
|
|
|
|
expect(Number.isFinite(result.range)).toBe(true);
|
|
expect(result.range).toBeGreaterThan(0);
|
|
}
|
|
});
|
|
});
|