67 lines
2.4 KiB
TypeScript
67 lines
2.4 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import {
|
|
DEFAULT_DISTANCE_UNIT,
|
|
DEFAULT_PRECIPITATION_UNIT,
|
|
DEFAULT_PRESSURE_UNIT,
|
|
DEFAULT_WIND_SPEED_UNIT,
|
|
formatDistance,
|
|
formatPrecipitation,
|
|
formatPressure,
|
|
formatTemperature,
|
|
formatWindSpeed,
|
|
isDistanceUnit,
|
|
isPrecipitationUnit,
|
|
isPressureUnit,
|
|
isTemperatureUnit,
|
|
isWindSpeedUnit,
|
|
} from "@/lib/weather-utils";
|
|
|
|
describe("weather utilities", () => {
|
|
it("formats wind speed in km/h by default", () => {
|
|
expect(DEFAULT_WIND_SPEED_UNIT).toBe("kmh");
|
|
expect(formatWindSpeed(5, "en")).toBe("18 km/h");
|
|
});
|
|
|
|
it("formats selected temperature and wind units", () => {
|
|
expect(formatTemperature(10, "en", "f")).toBe("50°F");
|
|
expect(formatWindSpeed(4, "en", "mph")).toBe("9 mph");
|
|
expect(formatWindSpeed(4, "en", "ms")).toBe("4.0 m/s");
|
|
expect(formatWindSpeed(4, "en", "kt")).toBe("8 kt");
|
|
expect(formatWindSpeed(4, "en", "bft")).toBe("3 Bft");
|
|
});
|
|
|
|
it("formats selected precipitation, pressure and distance units", () => {
|
|
expect(DEFAULT_PRECIPITATION_UNIT).toBe("mm");
|
|
expect(DEFAULT_PRESSURE_UNIT).toBe("hpa");
|
|
expect(DEFAULT_DISTANCE_UNIT).toBe("km");
|
|
|
|
expect(formatPrecipitation(25.4, "en", "mm")).toBe("25.4 mm");
|
|
expect(formatPrecipitation(10, "en", "cm")).toBe("1 cm");
|
|
expect(formatPrecipitation(25.4, "en", "in")).toBe("1.00 in");
|
|
|
|
expect(formatPressure(1013.25, "en", "hpa")).toBe("1,013.3 hPa");
|
|
expect(formatPressure(1013.25, "en", "kpa")).toBe("101.3 kPa");
|
|
expect(formatPressure(1013.25, "en", "inhg")).toBe("29.92 inHg");
|
|
expect(formatPressure(1013.25, "en", "mmhg")).toBe("760 mm Hg");
|
|
|
|
expect(formatDistance(10, "en", "km")).toBe("10 km");
|
|
expect(formatDistance(10, "en", "mi")).toBe("6.2 mi");
|
|
});
|
|
|
|
it("validates supported presentation units", () => {
|
|
expect(isTemperatureUnit("c")).toBe(true);
|
|
expect(isTemperatureUnit("kelvin")).toBe(false);
|
|
expect(isWindSpeedUnit("kmh")).toBe(true);
|
|
expect(isWindSpeedUnit("kt")).toBe(true);
|
|
expect(isWindSpeedUnit("bft")).toBe(true);
|
|
expect(isWindSpeedUnit("knots")).toBe(false);
|
|
expect(isPrecipitationUnit("in")).toBe(true);
|
|
expect(isPrecipitationUnit("l")).toBe(false);
|
|
expect(isPressureUnit("kpa")).toBe(true);
|
|
expect(isPressureUnit("mbar")).toBe(false);
|
|
expect(isDistanceUnit("mi")).toBe(true);
|
|
expect(isDistanceUnit("m")).toBe(false);
|
|
});
|
|
});
|