mirror of
https://github.com/home-assistant/frontend.git
synced 2025-07-21 23:28:58 +00:00
Use explicit duration format for state formatting (#23017)
This commit is contained in:
@ -1,47 +1,90 @@
|
||||
import { assert, describe, it } from "vitest";
|
||||
|
||||
import { formatDuration } from "../../../src/common/datetime/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("0", "ms"), "0");
|
||||
assert.strictEqual(formatDuration("1", "ms"), "0.001");
|
||||
assert.strictEqual(formatDuration("10", "ms"), "0.010");
|
||||
assert.strictEqual(formatDuration("100", "ms"), "0.100");
|
||||
assert.strictEqual(formatDuration("1000", "ms"), "1");
|
||||
assert.strictEqual(formatDuration("1001", "ms"), "1.001");
|
||||
assert.strictEqual(formatDuration("65000", "ms"), "1:05");
|
||||
assert.strictEqual(formatDuration("3665000", "ms"), "1:01:05");
|
||||
assert.strictEqual(formatDuration("39665050", "ms"), "11:01:05");
|
||||
assert.strictEqual(formatDuration("932093000", "ms"), "258:54:53");
|
||||
assert.strictEqual(formatDuration("0", "ms", undefined, LOCALE), "0ms");
|
||||
assert.strictEqual(formatDuration("1", "ms", undefined, LOCALE), "1ms");
|
||||
assert.strictEqual(formatDuration("10", "ms", undefined, LOCALE), "10ms");
|
||||
assert.strictEqual(formatDuration("100", "ms", undefined, LOCALE), "100ms");
|
||||
assert.strictEqual(
|
||||
formatDuration("1000", "ms", undefined, LOCALE),
|
||||
"1,000ms"
|
||||
);
|
||||
assert.strictEqual(
|
||||
formatDuration("1001", "ms", undefined, LOCALE),
|
||||
"1,001ms"
|
||||
);
|
||||
assert.strictEqual(
|
||||
formatDuration("65000", "ms", undefined, LOCALE),
|
||||
"65,000ms"
|
||||
);
|
||||
|
||||
assert.strictEqual(formatDuration("0", "s"), "0");
|
||||
assert.strictEqual(formatDuration("1", "s"), "1");
|
||||
assert.strictEqual(formatDuration("1.1", "s"), "1.100");
|
||||
assert.strictEqual(formatDuration("65", "s"), "1:05");
|
||||
assert.strictEqual(formatDuration("3665", "s"), "1:01:05");
|
||||
assert.strictEqual(formatDuration("39665", "s"), "11:01:05");
|
||||
assert.strictEqual(formatDuration("932093", "s"), "258:54:53");
|
||||
assert.strictEqual(
|
||||
formatDuration("0.5", "s", undefined, LOCALE),
|
||||
"0s 500ms"
|
||||
);
|
||||
assert.strictEqual(formatDuration("1", "s", undefined, LOCALE), "1s");
|
||||
assert.strictEqual(
|
||||
formatDuration("1.1", "s", undefined, LOCALE),
|
||||
"1s 100ms"
|
||||
);
|
||||
assert.strictEqual(formatDuration("65", "s", undefined, LOCALE), "65s");
|
||||
|
||||
assert.strictEqual(formatDuration("0", "min"), "0");
|
||||
assert.strictEqual(formatDuration("65", "min"), "1:05:00");
|
||||
assert.strictEqual(formatDuration("3665", "min"), "61:05:00");
|
||||
assert.strictEqual(formatDuration("39665", "min"), "661:05:00");
|
||||
assert.strictEqual(formatDuration("932093", "min"), "15534:53:00");
|
||||
assert.strictEqual(formatDuration("12.4", "min"), "12:24");
|
||||
assert.strictEqual(
|
||||
formatDuration("0.25", "min", undefined, LOCALE),
|
||||
"0m 15s"
|
||||
);
|
||||
assert.strictEqual(
|
||||
formatDuration("0.5", "min", undefined, LOCALE),
|
||||
"0m 30s"
|
||||
);
|
||||
assert.strictEqual(formatDuration("1", "min", undefined, LOCALE), "1m");
|
||||
assert.strictEqual(formatDuration("20", "min", undefined, LOCALE), "20m");
|
||||
assert.strictEqual(
|
||||
formatDuration("95.5", "min", undefined, LOCALE),
|
||||
"95m 30s"
|
||||
);
|
||||
|
||||
assert.strictEqual(formatDuration("0", "h"), "0");
|
||||
assert.strictEqual(formatDuration("65", "h"), "65:00:00");
|
||||
assert.strictEqual(formatDuration("3665", "h"), "3665:00:00");
|
||||
assert.strictEqual(formatDuration("39665", "h"), "39665:00:00");
|
||||
assert.strictEqual(formatDuration("932093", "h"), "932093:00:00");
|
||||
assert.strictEqual(formatDuration("24.3", "h"), "24:18:00");
|
||||
assert.strictEqual(formatDuration("24.32423", "h"), "24:19:27");
|
||||
assert.strictEqual(
|
||||
formatDuration("0.25", "h", undefined, LOCALE),
|
||||
"0h 15m"
|
||||
);
|
||||
assert.strictEqual(formatDuration("0.5", "h", undefined, LOCALE), "0h 30m");
|
||||
assert.strictEqual(formatDuration("1", "h", undefined, LOCALE), "1h");
|
||||
assert.strictEqual(formatDuration("20", "h", undefined, LOCALE), "20h");
|
||||
assert.strictEqual(
|
||||
formatDuration("95.5", "h", undefined, LOCALE),
|
||||
"95h 30m"
|
||||
);
|
||||
|
||||
assert.strictEqual(formatDuration("0", "d"), "0");
|
||||
assert.strictEqual(formatDuration("65", "d"), "1560:00:00");
|
||||
assert.strictEqual(formatDuration("3665", "d"), "87960:00:00");
|
||||
assert.strictEqual(formatDuration("39665", "d"), "951960:00:00");
|
||||
assert.strictEqual(formatDuration("932093", "d"), "22370232:00:00");
|
||||
assert.strictEqual(formatDuration("0", "d", undefined, LOCALE), "0d");
|
||||
assert.strictEqual(formatDuration("0.4", "d", undefined, LOCALE), "0d 9h");
|
||||
assert.strictEqual(formatDuration("1", "d", undefined, LOCALE), "1d");
|
||||
assert.strictEqual(formatDuration("20", "d", undefined, LOCALE), "20d");
|
||||
assert.strictEqual(
|
||||
formatDuration("95.5", "d", undefined, LOCALE),
|
||||
"95d 12h"
|
||||
);
|
||||
assert.strictEqual(formatDuration("95.75", "d", 0, LOCALE), "96d");
|
||||
assert.strictEqual(formatDuration("95.75", "d", 2, LOCALE), "95d 18h");
|
||||
});
|
||||
});
|
||||
|
Reference in New Issue
Block a user