1- use std:: convert:: TryInto ;
1+ use std:: convert:: { TryFrom , TryInto } ;
22use std:: error:: Error ;
33use std:: fs;
44use std:: fs:: File ;
@@ -8,6 +8,7 @@ use fluent_locale::negotiate::negotiate_languages;
88use fluent_locale:: negotiate:: NegotiationStrategy ;
99use fluent_locale:: parse_accepted_languages;
1010use unic_langid:: LanguageIdentifier ;
11+ use unic_locale:: Locale ;
1112
1213#[ macro_use]
1314extern crate serde_derive;
@@ -69,19 +70,19 @@ fn test_negotiate_fixtures(path: &str) {
6970 }
7071 NegotiateTestInput :: Default ( requested, available, default) => {
7172 let requested: Vec < LanguageIdentifier > =
72- dbg ! ( requested. iter( ) . map( |v| v. try_into( ) . unwrap( ) ) . collect( ) ) ;
73+ requested. iter ( ) . map ( |v| v. try_into ( ) . unwrap ( ) ) . collect ( ) ;
7374 let available: Vec < LanguageIdentifier > =
74- dbg ! ( available. iter( ) . map( |v| v. try_into( ) . unwrap( ) ) . collect( ) ) ;
75+ available. iter ( ) . map ( |v| v. try_into ( ) . unwrap ( ) ) . collect ( ) ;
7576 let output: Vec < LanguageIdentifier > =
7677 test. output . iter ( ) . map ( |v| v. try_into ( ) . unwrap ( ) ) . collect ( ) ;
7778 let output2: Vec < & LanguageIdentifier > = output. iter ( ) . map ( |t| t. as_ref ( ) ) . collect ( ) ;
7879 assert_eq ! (
79- dbg! ( negotiate_languages(
80+ negotiate_languages(
8081 & requested,
8182 & available,
8283 default . try_into( ) . ok( ) . as_ref( ) ,
8384 strategy
84- ) ) ,
85+ ) ,
8586 output2,
8687 "Test in {} failed" ,
8788 path
@@ -135,3 +136,22 @@ fn accepted_languages() {
135136 assert_eq ! ( output, locales) ;
136137 }
137138}
139+
140+ #[ test]
141+ fn locale_matching ( ) {
142+ let loc_en_us = Locale :: try_from ( "en-US-u-hc-h12" ) . expect ( "Parsing failed." ) ;
143+ let loc_de_at = Locale :: try_from ( "de-AT-u-hc-h24" ) . expect ( "Parsing failed." ) ;
144+ let loc_en = Locale :: try_from ( "en-u-ca-buddhist" ) . expect ( "Parsing failed." ) ;
145+ let loc_de = Locale :: try_from ( "de" ) . expect ( "Parsing failed." ) ;
146+ let loc_pl = Locale :: try_from ( "pl-x-private" ) . expect ( "Parsing failed." ) ;
147+
148+ assert_eq ! (
149+ negotiate_languages(
150+ vec![ & loc_en_us, & loc_de_at] ,
151+ vec![ & loc_pl, & loc_de, & loc_en] ,
152+ None ,
153+ NegotiationStrategy :: Matching
154+ ) ,
155+ vec![ & loc_en, & loc_de] ,
156+ ) ;
157+ }
0 commit comments