import { describe, it, expect } from "vitest";
import { haversineMeters } from "../haversine";
import type { Coordinates } from "../types";

// St. Pölten Hauptbahnhof ~ (48.2079, 15.6229), Wien Stephansplatz ~ (48.2082, 16.3738)
const stPoelten: Coordinates = { lat: 48.2079, lng: 15.6229 };
const wien: Coordinates = { lat: 48.2082, lng: 16.3738 };

describe("haversineMeters", () => {
  it("liefert 0 für identische Punkte", () => {
    expect(haversineMeters(stPoelten, stPoelten)).toBe(0);
  });

  it("St. Pölten -> Wien ist ~55 km (±3 km Luftlinie)", () => {
    const meters = haversineMeters(stPoelten, wien);
    const km = meters / 1000;
    expect(km).toBeGreaterThanOrEqual(52);
    expect(km).toBeLessThanOrEqual(58);
  });

  it("ist symmetrisch", () => {
    expect(haversineMeters(stPoelten, wien)).toBeCloseTo(
      haversineMeters(wien, stPoelten),
      6,
    );
  });
});
