1#![forbid(unsafe_code)]
2#![doc = include_str!("../README.md")]
3
4pub use use_currency_code;
5pub use use_language;
6pub use use_locale_match;
7pub use use_locale_tag;
8pub use use_region;
9pub use use_script;
10pub use use_time_zone_id;
11pub use use_timezone;
12
13pub mod prelude;
14
15#[cfg(test)]
16mod tests {
17 use super::prelude::{
18 best_locale_match, fallback_chain, normalize_locale_tag, parse_currency_code,
19 parse_language_code, parse_locale_tag, parse_region_code, parse_script_code,
20 parse_time_zone, parse_time_zone_id,
21 };
22
23 #[test]
24 fn facade_exposes_common_locale_primitives() {
25 assert_eq!(parse_language_code("EN").unwrap().as_str(), "en");
26 assert_eq!(parse_script_code("latn").unwrap().as_str(), "Latn");
27 assert_eq!(parse_region_code("us").unwrap().as_str(), "US");
28 assert_eq!(parse_currency_code("usd").unwrap().as_str(), "USD");
29 assert_eq!(
30 parse_time_zone_id("America/New_York").unwrap().area(),
31 "America"
32 );
33 assert_eq!(
34 parse_time_zone("UTC+05:30").unwrap().to_string(),
35 "UTC+05:30"
36 );
37 assert_eq!(
38 parse_locale_tag("zh-hant-tw").unwrap().as_str(),
39 "zh-Hant-TW"
40 );
41 assert_eq!(normalize_locale_tag("en-us"), Some("en-US".to_string()));
42 assert_eq!(fallback_chain("en-US"), vec!["en-US", "en"]);
43 assert_eq!(
44 best_locale_match("en-US", ["en", "fr"]).unwrap().available,
45 "en"
46 );
47 }
48}