summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Userland/Libraries/LibJS/Runtime/Intl/DurationFormat.cpp7
-rw-r--r--Userland/Libraries/LibJS/Tests/builtins/Intl/DurationFormat/DurationFormat.js27
2 files changed, 33 insertions, 1 deletions
diff --git a/Userland/Libraries/LibJS/Runtime/Intl/DurationFormat.cpp b/Userland/Libraries/LibJS/Runtime/Intl/DurationFormat.cpp
index b76cc61beb..2bb1390a9f 100644
--- a/Userland/Libraries/LibJS/Runtime/Intl/DurationFormat.cpp
+++ b/Userland/Libraries/LibJS/Runtime/Intl/DurationFormat.cpp
@@ -252,7 +252,12 @@ ThrowCompletionOr<DurationUnitOptions> get_duration_unit_options(VM& vm, String
// i. Set style to digitalBase.
style = digital_base;
}
- // c. Else,
+ // c. Else if prevStyle is "numeric" or "2-digit", then
+ else if (previous_style == "numeric"sv || previous_style == "2-digit"sv) {
+ // i. Set style to "numeric".
+ style = "numeric"sv;
+ }
+ // d. Else,
else {
// i. Set style to baseStyle.
style = base_style;
diff --git a/Userland/Libraries/LibJS/Tests/builtins/Intl/DurationFormat/DurationFormat.js b/Userland/Libraries/LibJS/Tests/builtins/Intl/DurationFormat/DurationFormat.js
index cc345f1423..97735be669 100644
--- a/Userland/Libraries/LibJS/Tests/builtins/Intl/DurationFormat/DurationFormat.js
+++ b/Userland/Libraries/LibJS/Tests/builtins/Intl/DurationFormat/DurationFormat.js
@@ -267,6 +267,10 @@ describe("normal behavior", () => {
});
["numeric", "2-digit"].forEach(seconds => {
expect(() => {
+ new Intl.DurationFormat("en", { hours: seconds });
+ }).not.toThrow();
+
+ expect(() => {
new Intl.DurationFormat("en", { style: "digital", hours: seconds });
}).not.toThrow();
});
@@ -288,6 +292,10 @@ describe("normal behavior", () => {
});
["numeric", "2-digit"].forEach(seconds => {
expect(() => {
+ new Intl.DurationFormat("en", { minutes: seconds });
+ }).not.toThrow();
+
+ expect(() => {
new Intl.DurationFormat("en", { style: "digital", minutes: seconds });
}).not.toThrow();
});
@@ -309,6 +317,10 @@ describe("normal behavior", () => {
});
["numeric", "2-digit"].forEach(seconds => {
expect(() => {
+ new Intl.DurationFormat("en", { seconds: seconds });
+ }).not.toThrow();
+
+ expect(() => {
new Intl.DurationFormat("en", { style: "digital", seconds: seconds });
}).not.toThrow();
});
@@ -328,6 +340,11 @@ describe("normal behavior", () => {
new Intl.DurationFormat("en", { milliseconds: milliseconds });
}).not.toThrow();
});
+
+ expect(() => {
+ new Intl.DurationFormat("en", { milliseconds: "numeric" });
+ }).not.toThrow();
+
expect(() => {
new Intl.DurationFormat("en", { style: "digital", milliseconds: "numeric" });
}).not.toThrow();
@@ -347,6 +364,11 @@ describe("normal behavior", () => {
new Intl.DurationFormat("en", { microseconds: microseconds });
}).not.toThrow();
});
+
+ expect(() => {
+ new Intl.DurationFormat("en", { microseconds: "numeric" });
+ }).not.toThrow();
+
expect(() => {
new Intl.DurationFormat("en", { style: "digital", microseconds: "numeric" });
}).not.toThrow();
@@ -366,6 +388,11 @@ describe("normal behavior", () => {
new Intl.DurationFormat("en", { nanoseconds: nanoseconds });
}).not.toThrow();
});
+
+ expect(() => {
+ new Intl.DurationFormat("en", { nanoseconds: "numeric" });
+ }).not.toThrow();
+
expect(() => {
new Intl.DurationFormat("en", { style: "digital", nanoseconds: "numeric" });
}).not.toThrow();