Skip to content

Commit 12f0741

Browse files
add FluentNumber grouping test
1 parent 51b4404 commit 12f0741

File tree

3 files changed

+28
-1
lines changed

3 files changed

+28
-1
lines changed

β€Žfluent-bundle/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ smallvec = "1"
4242
[dev-dependencies]
4343
criterion.workspace = true
4444
iai.workspace = true
45+
icu_testdata = "1"
4546
serde = { workspace = true, features = ["derive"]}
4647
unic-langid = { workspace = true, features = ["macros"] }
4748
rand = "0.8"

β€Žfluent-bundle/src/bundle.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -551,6 +551,10 @@ impl<R, M> FluentBundle<R, M> {
551551
}),
552552
}
553553
}
554+
555+
pub fn set_icu_data_provider(&mut self, provider: IcuDataProvider) {
556+
self.icu_data_provider = Some(provider);
557+
}
554558
}
555559

556560
impl<R> Default for FluentBundle<R, IntlLangMemoizer> {

β€Žfluent-bundle/tests/types_test.rs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use fluent_bundle::resolver::Scope;
22
use fluent_bundle::types::{
3-
FluentNumber, FluentNumberCurrencyDisplayStyle, FluentNumberOptions, FluentNumberStyle, FluentNumberUseGrouping,
3+
FluentNumber, FluentNumberCurrencyDisplayStyle, FluentNumberOptions, FluentNumberStyle,
4+
FluentNumberUseGrouping,
45
};
56
use fluent_bundle::FluentArgs;
67
use fluent_bundle::FluentBundle;
@@ -154,3 +155,24 @@ fn fluent_number_to_operands() {
154155
}
155156
);
156157
}
158+
159+
#[test]
160+
fn fluent_number_grouping() {
161+
let langid_ars = langid!("ccp");
162+
let mut bundle: FluentBundle<FluentResource> = FluentBundle::new(vec![langid_ars]);
163+
bundle.set_icu_data_provider(Box::new(icu_testdata::any_no_fallback()));
164+
165+
let mut number = FluentNumber::from(1234567890.1234567);
166+
167+
number.options.use_grouping = FluentNumberUseGrouping::False;
168+
let no_grouping = number.as_string(&bundle);
169+
assert_eq!(no_grouping, "π‘„·π‘„Έπ‘„Ήπ‘„Ίπ‘„»π‘„Όπ‘„½π‘„Ύπ‘„Ώπ‘„Ά.π‘„·π‘„Έπ‘„Ήπ‘„Ίπ‘„»π‘„Όπ‘„½");
170+
171+
number.options.use_grouping = FluentNumberUseGrouping::Min2;
172+
let long = number.as_string(&bundle);
173+
assert_eq!(long, "π‘„·,π‘„Έπ‘„Ή,π‘„Ίπ‘„»,π‘„Όπ‘„½,π‘„Ύπ‘„Ώπ‘„Ά.π‘„·π‘„Έπ‘„Ήπ‘„Ίπ‘„»π‘„Όπ‘„½");
174+
175+
number.value = -1234.0;
176+
let short = number.as_string(&bundle);
177+
assert_eq!(short, "-π‘„·π‘„Έπ‘„Ήπ‘„Ί");
178+
}

0 commit comments

Comments
Β (0)