import { describe, expect, it } from "vitest";
import {
  AETHER_ARMORED_SHIP_COLORS,
  AETHER_STANDARD_SHIP_COLORS,
  aetherShipColor,
  aetherShipColorIndex,
} from "./aetherAssaultVisuals";

describe("Aether Assault ship colors", () => {
  it("assigns a deterministic mixed palette across a formation", () => {
    const first = Array.from({ length: 6 }, (_, index) => aetherShipColor(1234, 1, index, "standard"));
    const replay = Array.from({ length: 6 }, (_, index) => aetherShipColor(1234, 1, index, "standard"));

    expect(replay).toEqual(first);
    expect(new Set(first).size).toBe(AETHER_STANDARD_SHIP_COLORS.length);
  });

  it("changes palette ordering between waves and keeps armored variants distinct", () => {
    const waveOneIndex = aetherShipColorIndex(42, 1, 0);
    const waveTwoIndex = aetherShipColorIndex(42, 2, 0);

    expect(waveTwoIndex).not.toBe(waveOneIndex);
    expect(aetherShipColor(42, 1, 0, "standard")).toBe(AETHER_STANDARD_SHIP_COLORS[waveOneIndex]);
    expect(aetherShipColor(42, 1, 0, "armored")).toBe(AETHER_ARMORED_SHIP_COLORS[waveOneIndex]);
  });
});
