Skip to content

Commit b2301d3

Browse files
add FluentNumber grouping test
1 parent 8f2dc43 commit b2301d3

File tree

3 files changed

+28
-1
lines changed

3 files changed

+28
-1
lines changed

β€Žfluent-bundle/Cargo.toml

+1
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

+4
Original file line numberDiff line numberDiff line change
@@ -549,6 +549,10 @@ impl<R, M> FluentBundle<R, M> {
549549
}),
550550
}
551551
}
552+
553+
pub fn set_number_format_provider(&mut self, provider: NumberFormatProvider) {
554+
self.number_format_provider = Some(provider);
555+
}
552556
}
553557

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

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

+23-1
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_number_format_provider(Box::new(icu_testdata::unstable_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)