import { describe, expect, it } from 'vitest'
import { computeCost, type HostRateTable } from './pricing.js'

describe('pricing', () => {
  const sampleRates: HostRateTable = {
    promptUsdPerMillion: 1.25,
    completionUsdPerMillion: 5.0,
  }

  it('computes tokens×rate from a host rate table', () => {
    const cost = computeCost({ promptTokens: 1_000_000, completionTokens: 500_000 }, sampleRates)
    expect(cost).toBe(1.25 + 2.5)
  })

  it('returns zero for zero usage', () => {
    expect(computeCost({ promptTokens: 0, completionTokens: 0 }, sampleRates)).toBe(0)
  })

  it('returns null for invalid host rate tables', () => {
    expect(
      computeCost(
        { promptTokens: 100, completionTokens: 50 },
        { promptUsdPerMillion: Number.NaN, completionUsdPerMillion: 1 },
      ),
    ).toBeNull()
  })
})
