/**
 * Tests for peakGridCount — the pure pixel-grid peak counter used to normalize
 * each heat layer to the densest cell visible in the current viewport.
 */

import { describe, it, expect } from 'vitest'
import { peakGridCount } from './mapUtils'

describe('peakGridCount', () => {
  it('returns 1 for empty input (no divide-by-zero)', () => {
    expect(peakGridCount([], 10)).toBe(1)
  })

  it('counts coords sharing a grid cell and returns the peak', () => {
    const coords: Array<[number, number]> = [
      [0, 0],
      [3, 4], // same 10px cell as [0,0]
      [9, 9], // same 10px cell
      [100, 100], // different cell
    ]
    expect(peakGridCount(coords, 10)).toBe(3)
  })

  it('separates coords into different cells by cellSize', () => {
    const coords: Array<[number, number]> = [
      [0, 0],
      [10, 0], // next cell over at cellSize 10
      [20, 0], // next again
    ]
    expect(peakGridCount(coords, 10)).toBe(1)
  })

  it('a denser cluster yields a larger peak (drives per-layer normalization)', () => {
    const dense: Array<[number, number]> = Array.from({ length: 12 }, () => [5, 5] as [number, number])
    const sparse: Array<[number, number]> = [
      [5, 5],
      [5, 5],
    ]
    expect(peakGridCount(dense, 10)).toBe(12)
    expect(peakGridCount(sparse, 10)).toBe(2)
  })
})
