1
0
mirror of https://github.com/home-assistant/frontend.git synced 2025-12-25 05:06:18 +00:00

Improve duration formatting (#23025)

This commit is contained in:
Paul Bottein
2024-11-27 15:00:29 +01:00
committed by GitHub
parent bc195c61cc
commit 164944ceff
8 changed files with 204 additions and 216 deletions

View File

@@ -0,0 +1,57 @@
import { assert, describe, it } from "vitest";
import { formatDuration } from "../../../src/common/datetime/format_duration";
import type { FrontendLocaleData } from "../../../src/data/translation";
import {
DateFormat,
FirstWeekday,
NumberFormat,
TimeFormat,
TimeZone,
} from "../../../src/data/translation";
const LOCALE: FrontendLocaleData = {
language: "en",
number_format: NumberFormat.language,
time_format: TimeFormat.am_pm,
date_format: DateFormat.language,
time_zone: TimeZone.local,
first_weekday: FirstWeekday.language,
};
describe("formatDuration", () => {
it("works", () => {
assert.strictEqual(formatDuration(LOCALE, "0", "ms"), "0ms");
assert.strictEqual(formatDuration(LOCALE, "1", "ms"), "1ms");
assert.strictEqual(formatDuration(LOCALE, "10", "ms"), "10ms");
assert.strictEqual(formatDuration(LOCALE, "100", "ms"), "100ms");
assert.strictEqual(formatDuration(LOCALE, "1000", "ms"), "1,000ms");
assert.strictEqual(formatDuration(LOCALE, "1001", "ms"), "1,001ms");
assert.strictEqual(formatDuration(LOCALE, "65000", "ms"), "65,000ms");
assert.strictEqual(formatDuration(LOCALE, "0.5", "s"), "0s 500ms");
assert.strictEqual(formatDuration(LOCALE, "1", "s"), "1s");
assert.strictEqual(formatDuration(LOCALE, "1.1", "s"), "1s 100ms");
assert.strictEqual(formatDuration(LOCALE, "65", "s"), "65s");
assert.strictEqual(formatDuration(LOCALE, "0.25", "min"), "0m 15s");
assert.strictEqual(formatDuration(LOCALE, "0.5", "min"), "0m 30s");
assert.strictEqual(formatDuration(LOCALE, "1", "min"), "1m");
assert.strictEqual(formatDuration(LOCALE, "20", "min"), "20m");
assert.strictEqual(formatDuration(LOCALE, "95.5", "min"), "95m 30s");
assert.strictEqual(formatDuration(LOCALE, "0.25", "h"), "0h 15m");
assert.strictEqual(formatDuration(LOCALE, "0.5", "h"), "0h 30m");
assert.strictEqual(formatDuration(LOCALE, "1", "h"), "1h");
assert.strictEqual(formatDuration(LOCALE, "20", "h"), "20h");
assert.strictEqual(formatDuration(LOCALE, "95.5", "h"), "95h 30m");
assert.strictEqual(formatDuration(LOCALE, "0", "d"), "0d");
assert.strictEqual(formatDuration(LOCALE, "0.4", "d"), "0d 9h");
assert.strictEqual(formatDuration(LOCALE, "1", "d"), "1d");
assert.strictEqual(formatDuration(LOCALE, "20", "d"), "20d");
assert.strictEqual(formatDuration(LOCALE, "95.5", "d"), "95d 12h");
assert.strictEqual(formatDuration(LOCALE, "95.75", "d", 0), "96d");
assert.strictEqual(formatDuration(LOCALE, "95.75", "d", 2), "95d 18h");
});
});