import { describe, it, expect } from "vitest"
import { nextHighlightIndex } from "../list-keyboard-nav"

describe("nextHighlightIndex", () => {
  it("ArrowDown from -1 selects the first item", () => {
    expect(nextHighlightIndex("ArrowDown", -1, 3)).toBe(0)
  })

  it("ArrowDown advances and clamps at the last item", () => {
    expect(nextHighlightIndex("ArrowDown", 0, 3)).toBe(1)
    expect(nextHighlightIndex("ArrowDown", 2, 3)).toBe(2)
  })

  it("ArrowUp retreats and clamps at the first item", () => {
    expect(nextHighlightIndex("ArrowUp", 2, 3)).toBe(1)
    expect(nextHighlightIndex("ArrowUp", 0, 3)).toBe(0)
  })

  it("ArrowUp from -1 selects the first item", () => {
    expect(nextHighlightIndex("ArrowUp", -1, 3)).toBe(0)
  })

  it("returns null when there are no items", () => {
    expect(nextHighlightIndex("ArrowDown", -1, 0)).toBeNull()
    expect(nextHighlightIndex("ArrowUp", 0, 0)).toBeNull()
  })

  it("returns null for keys it does not handle", () => {
    expect(nextHighlightIndex("Enter", 0, 3)).toBeNull()
    expect(nextHighlightIndex("Escape", 0, 3)).toBeNull()
    expect(nextHighlightIndex("a", 0, 3)).toBeNull()
  })
})
