Skip to content

Commit 01b4e49

Browse files
committed
Add a few more tests
1 parent 8236a27 commit 01b4e49

File tree

3 files changed

+42
-5
lines changed

3 files changed

+42
-5
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ unic-langid = "0.5"
2424
[dev-dependencies]
2525
serde = { version = "1.0", features = ["derive"] }
2626
serde_json = "1.0"
27+
unic-langid = { version = "0.5", features = ["macros"] }
2728
unic-locale = { version = "0.5", features = ["macros"] }
2829
criterion = "0.3"
2930

src/negotiate/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ pub fn filter_matches<'a, R: 'a + AsRef<LanguageIdentifier>, A: 'a + AsRef<Langu
139139

140140
let mut av_map: HashMap<&'a LanguageIdentifier, &'a A> = HashMap::new();
141141

142-
for av in available.into_iter() {
142+
for av in available.iter() {
143143
av_map.insert(av.as_ref(), av);
144144
}
145145

tests/lib.rs

Lines changed: 40 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use fluent_locale::convert_vec_str_to_langids_lossy;
77
use fluent_locale::negotiate_languages;
88
use fluent_locale::parse_accepted_languages;
99
use fluent_locale::NegotiationStrategy;
10+
use unic_langid::langid;
1011
use unic_langid::LanguageIdentifier;
1112
use unic_locale::locale;
1213

@@ -32,7 +33,9 @@ struct AcceptedLanguagesTestSet {
3233
output: Vec<String>,
3334
}
3435

35-
fn read_negotiate_testsets<P: AsRef<Path>>(path: P) -> Result<Vec<NegotiateTestSet>, Box<dyn Error>> {
36+
fn read_negotiate_testsets<P: AsRef<Path>>(
37+
path: P,
38+
) -> Result<Vec<NegotiateTestSet>, Box<dyn Error>> {
3639
let file = File::open(path)?;
3740
let sets = serde_json::from_reader(file)?;
3841
Ok(sets)
@@ -57,7 +60,7 @@ fn test_negotiate_fixtures(path: &str) {
5760
let requested = convert_vec_str_to_langids_lossy(requested);
5861
let available = convert_vec_str_to_langids_lossy(available);
5962
let output = convert_vec_str_to_langids_lossy(test.output);
60-
let output2: Vec<&LanguageIdentifier> = output.iter().map(|t| t.as_ref()).collect();
63+
let output2: Vec<&LanguageIdentifier> = output.iter().collect();
6164
assert_eq!(
6265
negotiate_languages(&requested, &available, None, strategy),
6366
output2,
@@ -69,7 +72,7 @@ fn test_negotiate_fixtures(path: &str) {
6972
let requested = convert_vec_str_to_langids_lossy(requested);
7073
let available = convert_vec_str_to_langids_lossy(available);
7174
let output = convert_vec_str_to_langids_lossy(test.output);
72-
let output2: Vec<&LanguageIdentifier> = output.iter().map(|t| t.as_ref()).collect();
75+
let output2: Vec<&LanguageIdentifier> = output.iter().collect();
7376
assert_eq!(
7477
negotiate_languages(
7578
&requested,
@@ -128,6 +131,29 @@ fn accepted_languages() {
128131
}
129132
}
130133

134+
#[test]
135+
fn langid_matching() {
136+
let langid_en_us = langid!("en-US");
137+
let langid_de_at = langid!("de-AT");
138+
let langid_en = langid!("en");
139+
let langid_de = langid!("de");
140+
let langid_pl = langid!("pl");
141+
142+
let requested = &[&langid_en_us, &langid_de_at];
143+
let available = &[&langid_pl, &langid_de, &langid_en];
144+
assert_eq!(
145+
negotiate_languages(requested, available, None, NegotiationStrategy::Matching),
146+
&[&&langid_en, &&langid_de],
147+
);
148+
149+
let requested = &[langid_en_us, langid_de_at];
150+
let available = &[langid_pl, langid_de.clone(), langid_en.clone()];
151+
assert_eq!(
152+
negotiate_languages(requested, available, None, NegotiationStrategy::Matching),
153+
&[&langid_en, &langid_de],
154+
);
155+
}
156+
131157
#[test]
132158
fn locale_matching() {
133159
let loc_en_us = locale!("en-US-u-hc-h12");
@@ -136,13 +162,23 @@ fn locale_matching() {
136162
let loc_de = locale!("de");
137163
let loc_pl = locale!("pl-x-private");
138164

165+
assert_eq!(
166+
negotiate_languages(
167+
&[&loc_en_us, &loc_de_at],
168+
&[&loc_pl, &loc_de, &loc_en],
169+
None,
170+
NegotiationStrategy::Matching
171+
),
172+
&[&&loc_en, &&loc_de],
173+
);
174+
139175
assert_eq!(
140176
negotiate_languages(
141177
&[loc_en_us, loc_de_at],
142178
&[loc_pl, loc_de.clone(), loc_en.clone()],
143179
None,
144180
NegotiationStrategy::Matching
145181
),
146-
vec![&loc_en, &loc_de],
182+
&[&loc_en, &loc_de],
147183
);
148184
}

0 commit comments

Comments
 (0)