From 86e3560ee884476a72bb5fa622fbca3049461172 Mon Sep 17 00:00:00 2001 From: "Shane F. Carr" Date: Fri, 16 Aug 2024 13:00:07 -0700 Subject: [PATCH] Add workaround for #5387 --- components/datetime/src/raw/neo.rs | 3 ++- components/datetime/tests/simple_test.rs | 28 ++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/components/datetime/src/raw/neo.rs b/components/datetime/src/raw/neo.rs index b57ac6539a2..770ad296efd 100644 --- a/components/datetime/src/raw/neo.rs +++ b/components/datetime/src/raw/neo.rs @@ -461,7 +461,8 @@ impl DateTimeZonePatternSelectionData { Ok(Self::Zone(selection)) } NeoComponents::DateTime(day_components, time_components) => { - if let Some(marker_attrs) = components.id_str() { + // TODO(#5387): load the patterns for custom hour cycles here + if let (Some(marker_attrs), None) = (components.id_str(), hour_cycle) { // Try loading an overlap pattern. let length = length.get::(); let date_skeleton = NeoDateSkeleton { diff --git a/components/datetime/tests/simple_test.rs b/components/datetime/tests/simple_test.rs index 389f7c073ff..57e380d5a8c 100644 --- a/components/datetime/tests/simple_test.rs +++ b/components/datetime/tests/simple_test.rs @@ -296,3 +296,31 @@ fn hebrew_months() { assert_try_writeable_eq!(formatted_datetime, "28 Adar II 5771"); } + +#[test] +fn test_5387() { + let datetime = DateTime::try_new_gregorian_datetime(2024, 8, 16, 14, 15, 16).unwrap(); + let formatter_auto = TypedNeoFormatter::try_new_with_components( + &locale!("en").into(), + NeoDateTimeComponents::DateTime(NeoDayComponents::Weekday, NeoTimeComponents::HourMinute), + NeoSkeletonLength::Medium.into(), + ) + .unwrap(); + let formatter_h12 = TypedNeoFormatter::try_new_with_components( + &locale!("en-u-hc-h12").into(), + NeoDateTimeComponents::DateTime(NeoDayComponents::Weekday, NeoTimeComponents::HourMinute), + NeoSkeletonLength::Medium.into(), + ) + .unwrap(); + let formatter_h24 = TypedNeoFormatter::try_new_with_components( + &locale!("en-u-hc-h23").into(), + NeoDateTimeComponents::DateTime(NeoDayComponents::Weekday, NeoTimeComponents::HourMinute), + NeoSkeletonLength::Medium.into(), + ) + .unwrap(); + + // TODO(#5387): All of these should resolve to a pattern without a comma + assert_try_writeable_eq!(formatter_auto.format(&datetime), "Fri 2:15\u{202f}PM"); + assert_try_writeable_eq!(formatter_h12.format(&datetime), "Fri, 2:15\u{202f}PM"); + assert_try_writeable_eq!(formatter_h24.format(&datetime), "Fri, 14:15"); +}