import { describe, expect, it } from "vitest"; import { pruneInactiveTrails } from "../src/client/graphics/layers/TrailLifecycle"; describe("UnitLayer trail lifecycle helpers", () => { it("removes transport and nuke trails for inactive units", () => { const nukeTrails = new Map([ [10, [1, 2, 3]], [11, [4, 5]], ]); const transportTrails = new Map< number, { activePlanId: number; epochs: unknown[]; lastOnScreen: boolean } >([ [10, { activePlanId: 1, epochs: [{}], lastOnScreen: true }], [12, { activePlanId: 2, epochs: [{}], lastOnScreen: false }], ]); const result = pruneInactiveTrails( nukeTrails, transportTrails, (unitId) => unitId === 11, ); expect(result).toEqual({ removedNukes: 1, removedTransport: 2 }); expect(Array.from(nukeTrails.keys())).toEqual([11]); expect(transportTrails.size).toBe(0); }); it("keeps all trails when units are active", () => { const nukeTrails = new Map([[1, [1]]]); const transportTrails = new Map< number, { activePlanId: number; epochs: unknown[]; lastOnScreen: boolean } >([ [2, { activePlanId: 1, epochs: [{}], lastOnScreen: true }], ]); const result = pruneInactiveTrails( nukeTrails, transportTrails, () => true, ); expect(result).toEqual({ removedNukes: 0, removedTransport: 0 }); expect(nukeTrails.size).toBe(1); expect(transportTrails.size).toBe(1); }); });