import { describe, expect, it } from "vitest";
import { ARENA_RADIUS, ARENA_SIZE_MULTIPLIER, ARENA_WALL_RADIUS } from "./arena";
import { AVAILABLE_BOSS_IDS } from "./bossCatalog";
import { BOSS_ROOMS, bossRoomFor } from "./bossRooms";

describe("boss rooms", () => {
  it("scales gameplay space and visible walls together by thirty percent", () => {
    expect(ARENA_SIZE_MULTIPLIER).toBe(1.3);
    expect(ARENA_RADIUS).toBeCloseTo(8.35 * 1.3);
    expect(ARENA_WALL_RADIUS).toBeCloseTo(9.55 * 1.3);
  });

  it("gives every selectable boss its own room definition", () => {
    expect(Object.keys(BOSS_ROOMS)).toEqual(AVAILABLE_BOSS_IDS);
    expect(new Set(AVAILABLE_BOSS_IDS.map((bossId) => bossRoomFor(bossId).id))).toHaveLength(AVAILABLE_BOSS_IDS.length);
  });

  it("spans multiple readable biomes instead of recoloring one arena", () => {
    expect(new Set(Object.values(BOSS_ROOMS).map((room) => room.floor)).size).toBeGreaterThanOrEqual(12);
  });
});
