Skip to content

Commit

Permalink
Add a few more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
zbraniecki committed Sep 15, 2019
1 parent 8236a27 commit 01b4e49
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 5 deletions.
1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ unic-langid = "0.5"
[dev-dependencies]
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
unic-langid = { version = "0.5", features = ["macros"] }
unic-locale = { version = "0.5", features = ["macros"] }
criterion = "0.3"

Expand Down
2 changes: 1 addition & 1 deletion src/negotiate/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ pub fn filter_matches<'a, R: 'a + AsRef<LanguageIdentifier>, A: 'a + AsRef<Langu

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

for av in available.into_iter() {
for av in available.iter() {
av_map.insert(av.as_ref(), av);
}

Expand Down
44 changes: 40 additions & 4 deletions tests/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ use fluent_locale::convert_vec_str_to_langids_lossy;
use fluent_locale::negotiate_languages;
use fluent_locale::parse_accepted_languages;
use fluent_locale::NegotiationStrategy;
use unic_langid::langid;
use unic_langid::LanguageIdentifier;
use unic_locale::locale;

Expand All @@ -32,7 +33,9 @@ struct AcceptedLanguagesTestSet {
output: Vec<String>,
}

fn read_negotiate_testsets<P: AsRef<Path>>(path: P) -> Result<Vec<NegotiateTestSet>, Box<dyn Error>> {
fn read_negotiate_testsets<P: AsRef<Path>>(
path: P,
) -> Result<Vec<NegotiateTestSet>, Box<dyn Error>> {
let file = File::open(path)?;
let sets = serde_json::from_reader(file)?;
Ok(sets)
Expand All @@ -57,7 +60,7 @@ fn test_negotiate_fixtures(path: &str) {
let requested = convert_vec_str_to_langids_lossy(requested);
let available = convert_vec_str_to_langids_lossy(available);
let output = convert_vec_str_to_langids_lossy(test.output);
let output2: Vec<&LanguageIdentifier> = output.iter().map(|t| t.as_ref()).collect();
let output2: Vec<&LanguageIdentifier> = output.iter().collect();
assert_eq!(
negotiate_languages(&requested, &available, None, strategy),
output2,
Expand All @@ -69,7 +72,7 @@ fn test_negotiate_fixtures(path: &str) {
let requested = convert_vec_str_to_langids_lossy(requested);
let available = convert_vec_str_to_langids_lossy(available);
let output = convert_vec_str_to_langids_lossy(test.output);
let output2: Vec<&LanguageIdentifier> = output.iter().map(|t| t.as_ref()).collect();
let output2: Vec<&LanguageIdentifier> = output.iter().collect();
assert_eq!(
negotiate_languages(
&requested,
Expand Down Expand Up @@ -128,6 +131,29 @@ fn accepted_languages() {
}
}

#[test]
fn langid_matching() {
let langid_en_us = langid!("en-US");
let langid_de_at = langid!("de-AT");
let langid_en = langid!("en");
let langid_de = langid!("de");
let langid_pl = langid!("pl");

let requested = &[&langid_en_us, &langid_de_at];
let available = &[&langid_pl, &langid_de, &langid_en];
assert_eq!(
negotiate_languages(requested, available, None, NegotiationStrategy::Matching),
&[&&langid_en, &&langid_de],
);

let requested = &[langid_en_us, langid_de_at];
let available = &[langid_pl, langid_de.clone(), langid_en.clone()];
assert_eq!(
negotiate_languages(requested, available, None, NegotiationStrategy::Matching),
&[&langid_en, &langid_de],
);
}

#[test]
fn locale_matching() {
let loc_en_us = locale!("en-US-u-hc-h12");
Expand All @@ -136,13 +162,23 @@ fn locale_matching() {
let loc_de = locale!("de");
let loc_pl = locale!("pl-x-private");

assert_eq!(
negotiate_languages(
&[&loc_en_us, &loc_de_at],
&[&loc_pl, &loc_de, &loc_en],
None,
NegotiationStrategy::Matching
),
&[&&loc_en, &&loc_de],
);

assert_eq!(
negotiate_languages(
&[loc_en_us, loc_de_at],
&[loc_pl, loc_de.clone(), loc_en.clone()],
None,
NegotiationStrategy::Matching
),
vec![&loc_en, &loc_de],
&[&loc_en, &loc_de],
);
}

0 comments on commit 01b4e49

Please sign in to comment.