const PRIMARY_LANGUAGE_MASK: u16 = 0x03FF; const SUB_LANGUAGE_MASK: u16 = 0xFC00; /// A language used to read string descriptors from USB devices. /// /// A language consists of a primary language and a sub language. Primary languages are language /// families, such as English or Spanish. Sub languages identify a dialect of the primary language. /// The dialect may be based on regional differences (United States English compared to United /// Kingdom English), writing systems (Cyrillic compared to Latin), or age (Modern compared to /// Traditional). Each primary language has its own set of sub languages. #[derive(Debug, Copy, Clone, PartialEq, Eq)] pub struct Language { raw: u16, } impl Language { /// Returns the language's 16-bit `LANGID`. /// /// Each language's `LANGID` is defined by the USB forum /// . pub fn lang_id(self) -> u16 { self.raw } /// Returns the primary language. pub fn primary_language(self) -> PrimaryLanguage { PrimaryLanguage::from_raw(self.raw) } /// Returns the sub language. pub fn sub_language(self) -> SubLanguage { SubLanguage::from_raw(self.primary_language(), self.raw) } } #[doc(hidden)] pub(crate) fn from_lang_id(raw: u16) -> Language { Language { raw } } /// Primary language families. #[derive(Debug, Copy, Clone, PartialEq, Eq)] pub enum PrimaryLanguage { Afrikaans, Albanian, Arabic, Armenian, Assamese, Azeri, Basque, Belarussian, Bengali, Bulgarian, Burmese, Catalan, Chinese, Croatian, Czech, Danish, Dutch, English, Estonian, Faeroese, Farsi, Finnish, French, Georgian, German, Greek, Gujarati, Hebrew, Hindi, Hungarian, Icelandic, Indonesian, Italian, Japanese, Kannada, Kashmiri, Kazakh, Konkani, Korean, Latvian, Lithuanian, Macedonian, Malay, Malayalam, Manipuri, Marathi, Nepali, Norwegian, Oriya, Polish, Portuguese, Punjabi, Romanian, Russian, Sanskrit, Serbian, Sindhi, Slovak, Slovenian, Spanish, Sutu, Swahili, Swedish, Tamil, Tatar, Telugu, Thai, Turkish, Ukrainian, Urdu, Uzbek, Vietnamese, HID, Other(u16), } impl PrimaryLanguage { fn from_raw(raw: u16) -> PrimaryLanguage { match raw & PRIMARY_LANGUAGE_MASK { 0x0036 => PrimaryLanguage::Afrikaans, 0x001C => PrimaryLanguage::Albanian, 0x0001 => PrimaryLanguage::Arabic, 0x002B => PrimaryLanguage::Armenian, 0x004D => PrimaryLanguage::Assamese, 0x002C => PrimaryLanguage::Azeri, 0x002D => PrimaryLanguage::Basque, 0x0023 => PrimaryLanguage::Belarussian, 0x0045 => PrimaryLanguage::Bengali, 0x0002 => PrimaryLanguage::Bulgarian, 0x0055 => PrimaryLanguage::Burmese, 0x0003 => PrimaryLanguage::Catalan, 0x0004 => PrimaryLanguage::Chinese, 0x001A => match raw & SUB_LANGUAGE_MASK { 0x0400 => PrimaryLanguage::Croatian, _ => PrimaryLanguage::Serbian, }, 0x0005 => PrimaryLanguage::Czech, 0x0006 => PrimaryLanguage::Danish, 0x0013 => PrimaryLanguage::Dutch, 0x0009 => PrimaryLanguage::English, 0x0025 => PrimaryLanguage::Estonian, 0x0038 => PrimaryLanguage::Faeroese, 0x0029 => PrimaryLanguage::Farsi, 0x000B => PrimaryLanguage::Finnish, 0x000C => PrimaryLanguage::French, 0x0037 => PrimaryLanguage::Georgian, 0x0007 => PrimaryLanguage::German, 0x0008 => PrimaryLanguage::Greek, 0x0047 => PrimaryLanguage::Gujarati, 0x000D => PrimaryLanguage::Hebrew, 0x0039 => PrimaryLanguage::Hindi, 0x000E => PrimaryLanguage::Hungarian, 0x000F => PrimaryLanguage::Icelandic, 0x0021 => PrimaryLanguage::Indonesian, 0x0010 => PrimaryLanguage::Italian, 0x0011 => PrimaryLanguage::Japanese, 0x004B => PrimaryLanguage::Kannada, 0x0060 => PrimaryLanguage::Kashmiri, 0x003F => PrimaryLanguage::Kazakh, 0x0057 => PrimaryLanguage::Konkani, 0x0012 => PrimaryLanguage::Korean, 0x0026 => PrimaryLanguage::Latvian, 0x0027 => PrimaryLanguage::Lithuanian, 0x002F => PrimaryLanguage::Macedonian, 0x003E => PrimaryLanguage::Malay, 0x004C => PrimaryLanguage::Malayalam, 0x0058 => PrimaryLanguage::Manipuri, 0x004E => PrimaryLanguage::Marathi, 0x0061 => PrimaryLanguage::Nepali, 0x0014 => PrimaryLanguage::Norwegian, 0x0048 => PrimaryLanguage::Oriya, 0x0015 => PrimaryLanguage::Polish, 0x0016 => PrimaryLanguage::Portuguese, 0x0046 => PrimaryLanguage::Punjabi, 0x0018 => PrimaryLanguage::Romanian, 0x0019 => PrimaryLanguage::Russian, 0x004F => PrimaryLanguage::Sanskrit, 0x0059 => PrimaryLanguage::Sindhi, 0x001B => PrimaryLanguage::Slovak, 0x0024 => PrimaryLanguage::Slovenian, 0x000A => PrimaryLanguage::Spanish, 0x0030 => PrimaryLanguage::Sutu, 0x0041 => PrimaryLanguage::Swahili, 0x001D => PrimaryLanguage::Swedish, 0x0049 => PrimaryLanguage::Tamil, 0x0044 => PrimaryLanguage::Tatar, 0x004A => PrimaryLanguage::Telugu, 0x001E => PrimaryLanguage::Thai, 0x001F => PrimaryLanguage::Turkish, 0x0022 => PrimaryLanguage::Ukrainian, 0x0020 => PrimaryLanguage::Urdu, 0x0043 => PrimaryLanguage::Uzbek, 0x002A => PrimaryLanguage::Vietnamese, 0x00FF => PrimaryLanguage::HID, n => PrimaryLanguage::Other(n), } } } /// Language dialects and writing systems. #[derive(Debug, Copy, Clone, PartialEq, Eq)] pub enum SubLanguage { Standard, Classic, Traditional, Modern, Algeria, // arabic Argentina, // spanish Australia, // english Austria, // german Bahrain, // arabic Belgium, // dutch, french Belize, // english Bokmal, // norwegian Bolivia, // spanish Brazil, // portuguese BruneiDarussalam, // malay Canada, // english, french Caribbean, // english Chile, // spanish China, // chinese Colombia, // spanish CostaRica, // spanish Cyrillic, // azeri, serbian, uzbek DominicanRepublic, // spanish Ecuador, // spanish Egypt, // arabic ElSalvador, // spanish Finland, // swedish Guatemala, // spanish Honduras, // spanish HongKong, // chinese India, // kashmiri, nepali, urdu Iraq, // arabic Ireland, // english Jamaica, // english Johab, // korean Jordan, // arabic Kuwait, // arabic Latin, // azeri, serbian, uzbek Lebanon, // arabic Libya, // arabic Liechtenstein, // german Luxembourg, // french, german Macau, // chinese Malaysia, // malay Mexico, // spanish Monaco, // french Morocco, // arabic Netherlands, // dutch NewZealand, // english Nicaragua, // spanish Nynorsk, // norwegian Oman, // arabic Pakistan, // urdu Panama, // spanish Paraguay, // spanish Peru, // spanish Philippines, // english PuertoRico, // spanish Qatar, // arabic SaudiArabia, // arabic Singapore, // chinese SouthAfrica, // english Switzerland, // french, german, italian Syria, // arabic Taiwan, // chinese Trinidad, // english Tunisia, // arabic UnitedArabEmirates, // arabic UnitedKingdom, // english UnitedStates, // english Uruguay, // spanish Venezuela, // spanish Yemen, // arabic Zimbabwe, // english UsageDataDescriptor, // HID VendorDefined1, // HID VendorDefined2, // HID VendorDefined3, // HID VendorDefined4, // HID Other(u16), } impl SubLanguage { fn from_raw(language: PrimaryLanguage, raw: u16) -> SubLanguage { match language { PrimaryLanguage::Arabic => match raw & SUB_LANGUAGE_MASK { 0x0400 => SubLanguage::SaudiArabia, 0x0800 => SubLanguage::Iraq, 0x0C00 => SubLanguage::Egypt, 0x1000 => SubLanguage::Libya, 0x1400 => SubLanguage::Algeria, 0x1800 => SubLanguage::Morocco, 0x1C00 => SubLanguage::Tunisia, 0x2000 => SubLanguage::Oman, 0x2400 => SubLanguage::Yemen, 0x2800 => SubLanguage::Syria, 0x2C00 => SubLanguage::Jordan, 0x3000 => SubLanguage::Lebanon, 0x3400 => SubLanguage::Kuwait, 0x3800 => SubLanguage::UnitedArabEmirates, 0x3C00 => SubLanguage::Bahrain, 0x4000 => SubLanguage::Qatar, n => SubLanguage::Other(n), }, PrimaryLanguage::Azeri => match raw & SUB_LANGUAGE_MASK { 0x0400 => SubLanguage::Latin, 0x0800 => SubLanguage::Cyrillic, n => SubLanguage::Other(n), }, PrimaryLanguage::Chinese => match raw & SUB_LANGUAGE_MASK { 0x0400 => SubLanguage::Taiwan, 0x0800 => SubLanguage::China, 0x0C00 => SubLanguage::HongKong, 0x1000 => SubLanguage::Singapore, 0x1400 => SubLanguage::Macau, n => SubLanguage::Other(n), }, PrimaryLanguage::Dutch => match raw & SUB_LANGUAGE_MASK { 0x0400 => SubLanguage::Netherlands, 0x0800 => SubLanguage::Belgium, n => SubLanguage::Other(n), }, PrimaryLanguage::English => match raw & SUB_LANGUAGE_MASK { 0x0400 => SubLanguage::UnitedStates, 0x0800 => SubLanguage::UnitedKingdom, 0x0C00 => SubLanguage::Australia, 0x1000 => SubLanguage::Canada, 0x1400 => SubLanguage::NewZealand, 0x1800 => SubLanguage::Ireland, 0x1C00 => SubLanguage::SouthAfrica, 0x2000 => SubLanguage::Jamaica, 0x2400 => SubLanguage::Caribbean, 0x2800 => SubLanguage::Belize, 0x2C00 => SubLanguage::Trinidad, 0x3000 => SubLanguage::Zimbabwe, 0x3400 => SubLanguage::Philippines, n => SubLanguage::Other(n), }, PrimaryLanguage::French => match raw & SUB_LANGUAGE_MASK { 0x0400 => SubLanguage::Standard, 0x0800 => SubLanguage::Belgium, 0x0C00 => SubLanguage::Canada, 0x1000 => SubLanguage::Switzerland, 0x1400 => SubLanguage::Luxembourg, 0x1800 => SubLanguage::Monaco, n => SubLanguage::Other(n), }, PrimaryLanguage::German => match raw & SUB_LANGUAGE_MASK { 0x0400 => SubLanguage::Standard, 0x0800 => SubLanguage::Switzerland, 0x0C00 => SubLanguage::Austria, 0x1000 => SubLanguage::Luxembourg, 0x1400 => SubLanguage::Liechtenstein, n => SubLanguage::Other(n), }, PrimaryLanguage::Italian => match raw & SUB_LANGUAGE_MASK { 0x0400 => SubLanguage::Standard, 0x0800 => SubLanguage::Switzerland, n => SubLanguage::Other(n), }, PrimaryLanguage::Korean => match raw & SUB_LANGUAGE_MASK { 0x0400 => SubLanguage::Standard, 0x0800 => SubLanguage::Johab, n => SubLanguage::Other(n), }, PrimaryLanguage::Lithuanian => match raw & SUB_LANGUAGE_MASK { 0x0400 => SubLanguage::Standard, 0x0800 => SubLanguage::Classic, n => SubLanguage::Other(n), }, PrimaryLanguage::Malay => match raw & SUB_LANGUAGE_MASK { 0x0400 => SubLanguage::Malaysia, 0x0800 => SubLanguage::BruneiDarussalam, n => SubLanguage::Other(n), }, PrimaryLanguage::Norwegian => match raw & SUB_LANGUAGE_MASK { 0x0400 => SubLanguage::Bokmal, 0x0800 => SubLanguage::Nynorsk, n => SubLanguage::Other(n), }, PrimaryLanguage::Portuguese => match raw & SUB_LANGUAGE_MASK { 0x0400 => SubLanguage::Brazil, 0x0800 => SubLanguage::Standard, n => SubLanguage::Other(n), }, PrimaryLanguage::Serbian => match raw & SUB_LANGUAGE_MASK { 0x0C00 => SubLanguage::Cyrillic, 0x0800 => SubLanguage::Latin, n => SubLanguage::Other(n), }, PrimaryLanguage::Spanish => match raw & SUB_LANGUAGE_MASK { 0x0400 => SubLanguage::Traditional, 0x0800 => SubLanguage::Mexico, 0x0C00 => SubLanguage::Modern, 0x1000 => SubLanguage::Guatemala, 0x1400 => SubLanguage::CostaRica, 0x1800 => SubLanguage::Panama, 0x1C00 => SubLanguage::DominicanRepublic, 0x2000 => SubLanguage::Venezuela, 0x2400 => SubLanguage::Colombia, 0x2800 => SubLanguage::Peru, 0x2C00 => SubLanguage::Argentina, 0x3000 => SubLanguage::Ecuador, 0x3400 => SubLanguage::Chile, 0x3800 => SubLanguage::Uruguay, 0x3C00 => SubLanguage::Paraguay, 0x4000 => SubLanguage::Bolivia, 0x4400 => SubLanguage::ElSalvador, 0x4800 => SubLanguage::Honduras, 0x4C00 => SubLanguage::Nicaragua, 0x5000 => SubLanguage::PuertoRico, n => SubLanguage::Other(n), }, PrimaryLanguage::Swedish => match raw & SUB_LANGUAGE_MASK { 0x0400 => SubLanguage::Standard, 0x0800 => SubLanguage::Finland, n => SubLanguage::Other(n), }, PrimaryLanguage::Urdu => match raw & SUB_LANGUAGE_MASK { 0x0400 => SubLanguage::Pakistan, 0x0800 => SubLanguage::India, n => SubLanguage::Other(n), }, PrimaryLanguage::Uzbek => match raw & SUB_LANGUAGE_MASK { 0x0400 => SubLanguage::Latin, 0x0800 => SubLanguage::Cyrillic, n => SubLanguage::Other(n), }, PrimaryLanguage::HID => match raw & SUB_LANGUAGE_MASK { 0x0400 => SubLanguage::UsageDataDescriptor, 0xF000 => SubLanguage::VendorDefined1, 0xF400 => SubLanguage::VendorDefined2, 0xF800 => SubLanguage::VendorDefined3, 0xFC00 => SubLanguage::VendorDefined4, n => SubLanguage::Other(n), }, PrimaryLanguage::Other(_) => SubLanguage::Other(raw & SUB_LANGUAGE_MASK), _ => SubLanguage::Standard, } } } #[cfg(test)] mod test { use super::{PrimaryLanguage, SubLanguage}; use super::{PRIMARY_LANGUAGE_MASK, SUB_LANGUAGE_MASK}; // language ids defined in http://www.usb.org/developers/docs/USB_LANGIDs.pdf const AFRIKAANS: u16 = 0x0436; const ALBANIAN: u16 = 0x041C; const ARABIC_SAUDI_ARABIA: u16 = 0x0401; const ARABIC_IRAQ: u16 = 0x0801; const ARABIC_EGYPT: u16 = 0x0C01; const ARABIC_LIBYA: u16 = 0x1001; const ARABIC_ALGERIA: u16 = 0x1401; const ARABIC_MOROCCO: u16 = 0x1801; const ARABIC_TUNISIA: u16 = 0x1C01; const ARABIC_OMAN: u16 = 0x2001; const ARABIC_YEMEN: u16 = 0x2401; const ARABIC_SYRIA: u16 = 0x2801; const ARABIC_JORDAN: u16 = 0x2C01; const ARABIC_LEBANON: u16 = 0x3001; const ARABIC_KUWAIT: u16 = 0x3401; const ARABIC_UAE: u16 = 0x3801; const ARABIC_BAHRAIN: u16 = 0x3C01; const ARABIC_QATAR: u16 = 0x4001; const ARMENIAN: u16 = 0x042B; const ASSAMESE: u16 = 0x044D; const AZERI_LATIN: u16 = 0x042C; const AZERI_CYRILLIC: u16 = 0x082C; const BASQUE: u16 = 0x042D; const BELARUSSIAN: u16 = 0x0423; const BENGALI: u16 = 0x0445; const BULGARIAN: u16 = 0x0402; const BURMESE: u16 = 0x0455; const CATALAN: u16 = 0x0403; const CHINESE_TAIWAN: u16 = 0x0404; const CHINESE_CHINA: u16 = 0x0804; const CHINESE_HONG_KONG: u16 = 0x0C04; const CHINESE_SINGAPORE: u16 = 0x1004; const CHINESE_MACAU: u16 = 0x1404; const CROATIAN: u16 = 0x041A; const CZECH: u16 = 0x0405; const DANISH: u16 = 0x0406; const DUTCH_NETHERLANDS: u16 = 0x0413; const DUTCH_BELGIUM: u16 = 0x0813; const ENGLISH_UNITED_STATES: u16 = 0x0409; const ENGLISH_UNITED_KINGDOM: u16 = 0x0809; const ENGLISH_AUSTRALIAN: u16 = 0x0C09; const ENGLISH_CANADIAN: u16 = 0x1009; const ENGLISH_NEW_ZEALAND: u16 = 0x1409; const ENGLISH_IRELAND: u16 = 0x1809; const ENGLISH_SOUTH_AFRICA: u16 = 0x1C09; const ENGLISH_JAMAICA: u16 = 0x2009; const ENGLISH_CARIBBEAN: u16 = 0x2409; const ENGLISH_BELIZE: u16 = 0x2809; const ENGLISH_TRINIDAD: u16 = 0x2C09; const ENGLISH_ZIMBABWE: u16 = 0x3009; const ENGLISH_PHILIPPINES: u16 = 0x3409; const ESTONIAN: u16 = 0x0425; const FAEROESE: u16 = 0x0438; const FARSI: u16 = 0x0429; const FINNISH: u16 = 0x040B; const FRENCH_STANDARD: u16 = 0x040C; const FRENCH_BELGIAN: u16 = 0x080C; const FRENCH_CANADIAN: u16 = 0x0C0C; const FRENCH_SWITZERLAND: u16 = 0x100C; const FRENCH_LUXEMBOURG: u16 = 0x140C; const FRENCH_MONACO: u16 = 0x180C; const GEORGIAN: u16 = 0x0437; const GERMAN_STANDARD: u16 = 0x0407; const GERMAN_SWITZERLAND: u16 = 0x0807; const GERMAN_AUSTRIA: u16 = 0x0C07; const GERMAN_LUXEMBOURG: u16 = 0x1007; const GERMAN_LIECHTENSTEIN: u16 = 0x1407; const GREEK: u16 = 0x0408; const GUJARATI: u16 = 0x0447; const HEBREW: u16 = 0x040D; const HINDI: u16 = 0x0439; const HUNGARIAN: u16 = 0x040E; const ICELANDIC: u16 = 0x040F; const INDONESIAN: u16 = 0x0421; const ITALIAN_STANDARD: u16 = 0x0410; const ITALIAN_SWITZERLAND: u16 = 0x0810; const JAPANESE: u16 = 0x0411; const KANNADA: u16 = 0x044B; const KASHMIRI_INDIA: u16 = 0x0860; const KAZAKH: u16 = 0x043F; const KONKANI: u16 = 0x0457; const KOREAN: u16 = 0x0412; const KOREAN_JOHAB: u16 = 0x0812; const LATVIAN: u16 = 0x0426; const LITHUANIAN: u16 = 0x0427; const LITHUANIAN_CLASSIC: u16 = 0x0827; const MACEDONIAN: u16 = 0x042F; const MALAY_MALAYSIAN: u16 = 0x043E; const MALAY_BRUNEI_DARUSSALAM: u16 = 0x083E; const MALAYALAM: u16 = 0x044C; const MANIPURI: u16 = 0x0458; const MARATHI: u16 = 0x044E; const NEPALI_INDIA: u16 = 0x0861; const NORWEGIAN_BOKMAL: u16 = 0x0414; const NORWEGIAN_NYNORSK: u16 = 0x0814; const ORIYA: u16 = 0x0448; const POLISH: u16 = 0x0415; const PORTUGUESE_BRAZIL: u16 = 0x0416; const PORTUGUESE_STANDARD: u16 = 0x0816; const PUNJABI: u16 = 0x0446; const ROMANIAN: u16 = 0x0418; const RUSSIAN: u16 = 0x0419; const SANSKRIT: u16 = 0x044F; const SERBIAN_CYRILLIC: u16 = 0x0C1A; const SERBIAN_LATIN: u16 = 0x081A; const SINDHI: u16 = 0x0459; const SLOVAK: u16 = 0x041B; const SLOVENIAN: u16 = 0x0424; const SPANISH_TRADITIONAL_SORT: u16 = 0x040A; const SPANISH_MEXICAN: u16 = 0x080A; const SPANISH_MODERN_SORT: u16 = 0x0C0A; const SPANISH_GUATEMALA: u16 = 0x100A; const SPANISH_COSTA_RICA: u16 = 0x140A; const SPANISH_PANAMA: u16 = 0x180A; const SPANISH_DOMINICAN_REPUBLIC: u16 = 0x1C0A; const SPANISH_VENEZUELA: u16 = 0x200A; const SPANISH_COLOMBIA: u16 = 0x240A; const SPANISH_PERU: u16 = 0x280A; const SPANISH_ARGENTINA: u16 = 0x2C0A; const SPANISH_ECUADOR: u16 = 0x300A; const SPANISH_CHILE: u16 = 0x340A; const SPANISH_URUGUAY: u16 = 0x380A; const SPANISH_PARAGUAY: u16 = 0x3C0A; const SPANISH_BOLIVIA: u16 = 0x400A; const SPANISH_EL_SALVADOR: u16 = 0x440A; const SPANISH_HONDURAS: u16 = 0x480A; const SPANISH_NICARAGUA: u16 = 0x4C0A; const SPANISH_PUERTO_RICO: u16 = 0x500A; const SUTU: u16 = 0x0430; const SWAHILI_KENYA: u16 = 0x0441; const SWEDISH: u16 = 0x041D; const SWEDISH_FINLAND: u16 = 0x081D; const TAMIL: u16 = 0x0449; const TATAR_TATARSTAN: u16 = 0x0444; const TELUGU: u16 = 0x044A; const THAI: u16 = 0x041E; const TURKISH: u16 = 0x041F; const UKRAINIAN: u16 = 0x0422; const URDU_PAKISTAN: u16 = 0x0420; const URDU_INDIA: u16 = 0x0820; const UZBEK_LATIN: u16 = 0x0443; const UZBEK_CYRILLIC: u16 = 0x0843; const VIETNAMESE: u16 = 0x042A; const HID_USAGE_DATA_DESCRIPTOR: u16 = 0x04FF; const HID_VENDOR_DEFINED_1: u16 = 0xF0FF; const HID_VENDOR_DEFINED_2: u16 = 0xF4FF; const HID_VENDOR_DEFINED_3: u16 = 0xF8FF; const HID_VENDOR_DEFINED_4: u16 = 0xFCFF; #[test] fn it_recognizes_afrikaans_as_afrikaans_language() { assert_eq!( super::from_lang_id(AFRIKAANS).primary_language(), PrimaryLanguage::Afrikaans ); } #[test] fn it_recognizes_albanian_as_albanian_language() { assert_eq!( super::from_lang_id(ALBANIAN).primary_language(), PrimaryLanguage::Albanian ); } #[test] fn it_recognizes_arabic_from_saudi_arabia_as_arabic_language() { assert_eq!( super::from_lang_id(ARABIC_SAUDI_ARABIA).primary_language(), PrimaryLanguage::Arabic ); } #[test] fn it_recognizes_arabic_from_saudi_arabia_as_saudi_arabia_sub_language() { assert_eq!( super::from_lang_id(ARABIC_SAUDI_ARABIA).sub_language(), SubLanguage::SaudiArabia ); } #[test] fn it_recognizes_arabic_from_iraq_as_arabic_language() { assert_eq!( super::from_lang_id(ARABIC_IRAQ).primary_language(), PrimaryLanguage::Arabic ); } #[test] fn it_recognizes_arabic_from_iraq_as_iraq_sub_language() { assert_eq!( super::from_lang_id(ARABIC_IRAQ).sub_language(), SubLanguage::Iraq ); } #[test] fn it_recognizes_arabic_from_egypt_as_arabic_language() { assert_eq!( super::from_lang_id(ARABIC_EGYPT).primary_language(), PrimaryLanguage::Arabic ); } #[test] fn it_recognizes_arabic_from_egypt_as_egypt_sub_language() { assert_eq!( super::from_lang_id(ARABIC_EGYPT).sub_language(), SubLanguage::Egypt ); } #[test] fn it_recognizes_arabic_from_libya_as_arabic_language() { assert_eq!( super::from_lang_id(ARABIC_LIBYA).primary_language(), PrimaryLanguage::Arabic ); } #[test] fn it_recognizes_arabic_from_libya_as_libya_sub_language() { assert_eq!( super::from_lang_id(ARABIC_LIBYA).sub_language(), SubLanguage::Libya ); } #[test] fn it_recognizes_arabic_from_algeria_as_arabic_language() { assert_eq!( super::from_lang_id(ARABIC_ALGERIA).primary_language(), PrimaryLanguage::Arabic ); } #[test] fn it_recognizes_arabic_from_algeria_as_algeria_sub_language() { assert_eq!( super::from_lang_id(ARABIC_ALGERIA).sub_language(), SubLanguage::Algeria ); } #[test] fn it_recognizes_arabic_from_morocco_as_arabic_language() { assert_eq!( super::from_lang_id(ARABIC_MOROCCO).primary_language(), PrimaryLanguage::Arabic ); } #[test] fn it_recognizes_arabic_from_morocco_as_morocco_sub_language() { assert_eq!( super::from_lang_id(ARABIC_MOROCCO).sub_language(), SubLanguage::Morocco ); } #[test] fn it_recognizes_arabic_from_tunisia_as_arabic_language() { assert_eq!( super::from_lang_id(ARABIC_TUNISIA).primary_language(), PrimaryLanguage::Arabic ); } #[test] fn it_recognizes_arabic_from_tunisia_as_tunisia_sub_language() { assert_eq!( super::from_lang_id(ARABIC_TUNISIA).sub_language(), SubLanguage::Tunisia ); } #[test] fn it_recognizes_arabic_from_oman_as_arabic_language() { assert_eq!( super::from_lang_id(ARABIC_OMAN).primary_language(), PrimaryLanguage::Arabic ); } #[test] fn it_recognizes_arabic_from_oman_as_oman_sub_language() { assert_eq!( super::from_lang_id(ARABIC_OMAN).sub_language(), SubLanguage::Oman ); } #[test] fn it_recognizes_arabic_from_yemen_as_arabic_language() { assert_eq!( super::from_lang_id(ARABIC_YEMEN).primary_language(), PrimaryLanguage::Arabic ); } #[test] fn it_recognizes_arabic_from_yemen_as_yemen_sub_language() { assert_eq!( super::from_lang_id(ARABIC_YEMEN).sub_language(), SubLanguage::Yemen ); } #[test] fn it_recognizes_arabic_from_syria_as_arabic_language() { assert_eq!( super::from_lang_id(ARABIC_SYRIA).primary_language(), PrimaryLanguage::Arabic ); } #[test] fn it_recognizes_arabic_from_syria_as_syria_sub_language() { assert_eq!( super::from_lang_id(ARABIC_SYRIA).sub_language(), SubLanguage::Syria ); } #[test] fn it_recognizes_arabic_from_jordan_as_arabic_language() { assert_eq!( super::from_lang_id(ARABIC_JORDAN).primary_language(), PrimaryLanguage::Arabic ); } #[test] fn it_recognizes_arabic_from_jordan_as_jordan_sub_language() { assert_eq!( super::from_lang_id(ARABIC_JORDAN).sub_language(), SubLanguage::Jordan ); } #[test] fn it_recognizes_arabic_from_lebanon_as_arabic_language() { assert_eq!( super::from_lang_id(ARABIC_LEBANON).primary_language(), PrimaryLanguage::Arabic ); } #[test] fn it_recognizes_arabic_from_lebanon_as_lebanon_sub_language() { assert_eq!( super::from_lang_id(ARABIC_LEBANON).sub_language(), SubLanguage::Lebanon ); } #[test] fn it_recognizes_arabic_from_kuwait_as_arabic_language() { assert_eq!( super::from_lang_id(ARABIC_KUWAIT).primary_language(), PrimaryLanguage::Arabic ); } #[test] fn it_recognizes_arabic_from_kuwait_as_kuwait_sub_language() { assert_eq!( super::from_lang_id(ARABIC_KUWAIT).sub_language(), SubLanguage::Kuwait ); } #[test] fn it_recognizes_arabic_from_uae_as_arabic_language() { assert_eq!( super::from_lang_id(ARABIC_UAE).primary_language(), PrimaryLanguage::Arabic ); } #[test] fn it_recognizes_arabic_from_uae_as_uae_sub_language() { assert_eq!( super::from_lang_id(ARABIC_UAE).sub_language(), SubLanguage::UnitedArabEmirates ); } #[test] fn it_recognizes_arabic_from_bahrain_as_arabic_language() { assert_eq!( super::from_lang_id(ARABIC_BAHRAIN).primary_language(), PrimaryLanguage::Arabic ); } #[test] fn it_recognizes_arabic_from_bahrain_as_bahrain_sub_language() { assert_eq!( super::from_lang_id(ARABIC_BAHRAIN).sub_language(), SubLanguage::Bahrain ); } #[test] fn it_recognizes_arabic_from_qatar_as_arabic_language() { assert_eq!( super::from_lang_id(ARABIC_QATAR).primary_language(), PrimaryLanguage::Arabic ); } #[test] fn it_recognizes_arabic_from_qatar_as_qatar_sub_language() { assert_eq!( super::from_lang_id(ARABIC_QATAR).sub_language(), SubLanguage::Qatar ); } #[test] fn it_recognizes_armenian_as_armenian_language() { assert_eq!( super::from_lang_id(ARMENIAN).primary_language(), PrimaryLanguage::Armenian ); } #[test] fn it_recognizes_assamese_as_assamese_language() { assert_eq!( super::from_lang_id(ASSAMESE).primary_language(), PrimaryLanguage::Assamese ); } #[test] fn it_recognizes_azeri_latin_as_azeri_language() { assert_eq!( super::from_lang_id(AZERI_LATIN).primary_language(), PrimaryLanguage::Azeri ); } #[test] fn it_recognizes_azeri_latin_as_latin_sub_language() { assert_eq!( super::from_lang_id(AZERI_LATIN).sub_language(), SubLanguage::Latin ); } #[test] fn it_recognizes_azeri_cyrillic_as_azeri_language() { assert_eq!( super::from_lang_id(AZERI_CYRILLIC).primary_language(), PrimaryLanguage::Azeri ); } #[test] fn it_recognizes_azeri_cyrillic_as_cyrillic_sub_language() { assert_eq!( super::from_lang_id(AZERI_CYRILLIC).sub_language(), SubLanguage::Cyrillic ); } #[test] fn it_recognizes_basque_as_basque_language() { assert_eq!( super::from_lang_id(BASQUE).primary_language(), PrimaryLanguage::Basque ); } #[test] fn it_recognizes_belarussian_as_belarussian_language() { assert_eq!( super::from_lang_id(BELARUSSIAN).primary_language(), PrimaryLanguage::Belarussian ); } #[test] fn it_recognizes_bengali_as_bengali_language() { assert_eq!( super::from_lang_id(BENGALI).primary_language(), PrimaryLanguage::Bengali ); } #[test] fn it_recognizes_bulgarian_as_bulgarian_language() { assert_eq!( super::from_lang_id(BULGARIAN).primary_language(), PrimaryLanguage::Bulgarian ); } #[test] fn it_recognizes_burmese_as_burmese_language() { assert_eq!( super::from_lang_id(BURMESE).primary_language(), PrimaryLanguage::Burmese ); } #[test] fn it_recognizes_catalan_as_catalan_language() { assert_eq!( super::from_lang_id(CATALAN).primary_language(), PrimaryLanguage::Catalan ); } #[test] fn it_recognizes_chinese_from_taiwan_as_chinese_language() { assert_eq!( super::from_lang_id(CHINESE_TAIWAN).primary_language(), PrimaryLanguage::Chinese ); } #[test] fn it_recognizes_chinese_from_taiwan_as_taiwan_sub_language() { assert_eq!( super::from_lang_id(CHINESE_TAIWAN).sub_language(), SubLanguage::Taiwan ); } #[test] fn it_recognizes_chinese_from_china_as_chinese_language() { assert_eq!( super::from_lang_id(CHINESE_CHINA).primary_language(), PrimaryLanguage::Chinese ); } #[test] fn it_recognizes_chinese_from_china_as_china_sub_language() { assert_eq!( super::from_lang_id(CHINESE_CHINA).sub_language(), SubLanguage::China ); } #[test] fn it_recognizes_chinese_from_hong_kong_as_chinese_language() { assert_eq!( super::from_lang_id(CHINESE_HONG_KONG).primary_language(), PrimaryLanguage::Chinese ); } #[test] fn it_recognizes_chinese_from_hong_kong_as_hong_kong_sub_language() { assert_eq!( super::from_lang_id(CHINESE_HONG_KONG).sub_language(), SubLanguage::HongKong ); } #[test] fn it_recognizes_chinese_from_singapore_as_chinese_language() { assert_eq!( super::from_lang_id(CHINESE_SINGAPORE).primary_language(), PrimaryLanguage::Chinese ); } #[test] fn it_recognizes_chinese_from_singapore_as_singapore_sub_language() { assert_eq!( super::from_lang_id(CHINESE_SINGAPORE).sub_language(), SubLanguage::Singapore ); } #[test] fn it_recognizes_chinese_from_macau_as_chinese_language() { assert_eq!( super::from_lang_id(CHINESE_MACAU).primary_language(), PrimaryLanguage::Chinese ); } #[test] fn it_recognizes_chinese_from_macau_as_macau_sub_language() { assert_eq!( super::from_lang_id(CHINESE_MACAU).sub_language(), SubLanguage::Macau ); } #[test] fn it_recognizes_croatian_as_croatian_language() { assert_eq!( super::from_lang_id(CROATIAN).primary_language(), PrimaryLanguage::Croatian ); } #[test] fn it_recognizes_czech_as_czech_language() { assert_eq!( super::from_lang_id(CZECH).primary_language(), PrimaryLanguage::Czech ); } #[test] fn it_recognizes_danish_as_danish_language() { assert_eq!( super::from_lang_id(DANISH).primary_language(), PrimaryLanguage::Danish ); } #[test] fn it_recognizes_dutch_from_netherlands_as_dutch_language() { assert_eq!( super::from_lang_id(DUTCH_NETHERLANDS).primary_language(), PrimaryLanguage::Dutch ); } #[test] fn it_recognizes_dutch_from_netherlands_as_netherlands_sub_language() { assert_eq!( super::from_lang_id(DUTCH_NETHERLANDS).sub_language(), SubLanguage::Netherlands ); } #[test] fn it_recognizes_dutch_from_belgium_as_dutch_language() { assert_eq!( super::from_lang_id(DUTCH_BELGIUM).primary_language(), PrimaryLanguage::Dutch ); } #[test] fn it_recognizes_dutch_from_belgium_as_belgium_sub_language() { assert_eq!( super::from_lang_id(DUTCH_BELGIUM).sub_language(), SubLanguage::Belgium ); } #[test] fn it_recognizes_english_from_united_states_as_english_language() { assert_eq!( super::from_lang_id(ENGLISH_UNITED_STATES).primary_language(), PrimaryLanguage::English ); } #[test] fn it_recognizes_english_from_united_states_as_united_states_sub_language() { assert_eq!( super::from_lang_id(ENGLISH_UNITED_STATES).sub_language(), SubLanguage::UnitedStates ); } #[test] fn it_recognizes_english_from_united_kingdom_as_english_language() { assert_eq!( super::from_lang_id(ENGLISH_UNITED_KINGDOM).primary_language(), PrimaryLanguage::English ); } #[test] fn it_recognizes_english_from_united_kingdom_as_united_kingdom_sub_language() { assert_eq!( super::from_lang_id(ENGLISH_UNITED_KINGDOM).sub_language(), SubLanguage::UnitedKingdom ); } #[test] fn it_recognizes_english_from_australia_as_english_language() { assert_eq!( super::from_lang_id(ENGLISH_AUSTRALIAN).primary_language(), PrimaryLanguage::English ); } #[test] fn it_recognizes_english_from_australia_as_australia_sub_language() { assert_eq!( super::from_lang_id(ENGLISH_AUSTRALIAN).sub_language(), SubLanguage::Australia ); } #[test] fn it_recognizes_english_from_canada_as_english_language() { assert_eq!( super::from_lang_id(ENGLISH_CANADIAN).primary_language(), PrimaryLanguage::English ); } #[test] fn it_recognizes_english_from_canada_as_canada_sub_language() { assert_eq!( super::from_lang_id(ENGLISH_CANADIAN).sub_language(), SubLanguage::Canada ); } #[test] fn it_recognizes_english_from_new_zealand_as_english_language() { assert_eq!( super::from_lang_id(ENGLISH_NEW_ZEALAND).primary_language(), PrimaryLanguage::English ); } #[test] fn it_recognizes_english_from_new_zealand_as_new_zealand_language() { assert_eq!( super::from_lang_id(ENGLISH_NEW_ZEALAND).sub_language(), SubLanguage::NewZealand ); } #[test] fn it_recognizes_english_from_ireland_as_english_language() { assert_eq!( super::from_lang_id(ENGLISH_IRELAND).primary_language(), PrimaryLanguage::English ); } #[test] fn it_recognizes_english_from_ireland_as_ireland_sub_language() { assert_eq!( super::from_lang_id(ENGLISH_IRELAND).sub_language(), SubLanguage::Ireland ); } #[test] fn it_recognizes_english_from_south_africa_as_english_language() { assert_eq!( super::from_lang_id(ENGLISH_SOUTH_AFRICA).primary_language(), PrimaryLanguage::English ); } #[test] fn it_recognizes_english_from_south_africa_as_south_africa_sub_language() { assert_eq!( super::from_lang_id(ENGLISH_SOUTH_AFRICA).sub_language(), SubLanguage::SouthAfrica ); } #[test] fn it_recognizes_english_from_jamaica_as_english_language() { assert_eq!( super::from_lang_id(ENGLISH_JAMAICA).primary_language(), PrimaryLanguage::English ); } #[test] fn it_recognizes_english_from_jamaica_as_jamaica_sub_language() { assert_eq!( super::from_lang_id(ENGLISH_JAMAICA).sub_language(), SubLanguage::Jamaica ); } #[test] fn it_recognizes_english_from_caribbean_as_english_language() { assert_eq!( super::from_lang_id(ENGLISH_CARIBBEAN).primary_language(), PrimaryLanguage::English ); } #[test] fn it_recognizes_english_from_caribbean_as_caribbean_sub_language() { assert_eq!( super::from_lang_id(ENGLISH_CARIBBEAN).sub_language(), SubLanguage::Caribbean ); } #[test] fn it_recognizes_english_from_belize_as_english_language() { assert_eq!( super::from_lang_id(ENGLISH_BELIZE).primary_language(), PrimaryLanguage::English ); } #[test] fn it_recognizes_english_from_belize_as_belize_sub_language() { assert_eq!( super::from_lang_id(ENGLISH_BELIZE).sub_language(), SubLanguage::Belize ); } #[test] fn it_recognizes_english_from_trinidad_as_english_language() { assert_eq!( super::from_lang_id(ENGLISH_TRINIDAD).primary_language(), PrimaryLanguage::English ); } #[test] fn it_recognizes_english_from_trinidad_as_trinidad_sub_language() { assert_eq!( super::from_lang_id(ENGLISH_TRINIDAD).sub_language(), SubLanguage::Trinidad ); } #[test] fn it_recognizes_english_from_zimbabwe_as_english_language() { assert_eq!( super::from_lang_id(ENGLISH_ZIMBABWE).primary_language(), PrimaryLanguage::English ); } #[test] fn it_recognizes_english_from_zimbabwe_as_zimbabwe_sub_language() { assert_eq!( super::from_lang_id(ENGLISH_ZIMBABWE).sub_language(), SubLanguage::Zimbabwe ); } #[test] fn it_recognizes_english_from_philippines_as_english_language() { assert_eq!( super::from_lang_id(ENGLISH_PHILIPPINES).primary_language(), PrimaryLanguage::English ); } #[test] fn it_recognizes_english_from_philippines_as_philippines_sub_language() { assert_eq!( super::from_lang_id(ENGLISH_PHILIPPINES).sub_language(), SubLanguage::Philippines ); } #[test] fn it_recognizes_estonian_as_estonian_language() { assert_eq!( super::from_lang_id(ESTONIAN).primary_language(), PrimaryLanguage::Estonian ); } #[test] fn it_recognizes_faeroese_as_faeroese_language() { assert_eq!( super::from_lang_id(FAEROESE).primary_language(), PrimaryLanguage::Faeroese ); } #[test] fn it_recognizes_farsi_as_farsi_language() { assert_eq!( super::from_lang_id(FARSI).primary_language(), PrimaryLanguage::Farsi ); } #[test] fn it_recognizes_finnish_as_finnish_language() { assert_eq!( super::from_lang_id(FINNISH).primary_language(), PrimaryLanguage::Finnish ); } #[test] fn it_recognizes_french_standard_as_french_language() { assert_eq!( super::from_lang_id(FRENCH_STANDARD).primary_language(), PrimaryLanguage::French ); } #[test] fn it_recognizes_french_standard_as_standard_sub_language() { assert_eq!( super::from_lang_id(FRENCH_STANDARD).sub_language(), SubLanguage::Standard ); } #[test] fn it_recognizes_french_from_belgium_as_french_language() { assert_eq!( super::from_lang_id(FRENCH_BELGIAN).primary_language(), PrimaryLanguage::French ); } #[test] fn it_recognizes_french_from_belgium_as_belgium_sub_language() { assert_eq!( super::from_lang_id(FRENCH_BELGIAN).sub_language(), SubLanguage::Belgium ); } #[test] fn it_recognizes_french_from_canada_as_french_language() { assert_eq!( super::from_lang_id(FRENCH_CANADIAN).primary_language(), PrimaryLanguage::French ); } #[test] fn it_recognizes_french_from_canada_as_canada_sub_language() { assert_eq!( super::from_lang_id(FRENCH_CANADIAN).sub_language(), SubLanguage::Canada ); } #[test] fn it_recognizes_french_from_switzerland_as_french_language() { assert_eq!( super::from_lang_id(FRENCH_SWITZERLAND).primary_language(), PrimaryLanguage::French ); } #[test] fn it_recognizes_french_from_switzerland_as_switzerland_sub_language() { assert_eq!( super::from_lang_id(FRENCH_SWITZERLAND).sub_language(), SubLanguage::Switzerland ); } #[test] fn it_recognizes_french_from_luxembourg_as_french_language() { assert_eq!( super::from_lang_id(FRENCH_LUXEMBOURG).primary_language(), PrimaryLanguage::French ); } #[test] fn it_recognizes_french_from_luxembourg_as_luxembourg_sub_language() { assert_eq!( super::from_lang_id(FRENCH_LUXEMBOURG).sub_language(), SubLanguage::Luxembourg ); } #[test] fn it_recognizes_french_from_monaco_as_french_language() { assert_eq!( super::from_lang_id(FRENCH_MONACO).primary_language(), PrimaryLanguage::French ); } #[test] fn it_recognizes_french_from_monaco_as_monaco_sub_language() { assert_eq!( super::from_lang_id(FRENCH_MONACO).sub_language(), SubLanguage::Monaco ); } #[test] fn it_recognizes_georgian_as_georgian_language() { assert_eq!( super::from_lang_id(GEORGIAN).primary_language(), PrimaryLanguage::Georgian ); } #[test] fn it_recognizes_german_standard_as_german_language() { assert_eq!( super::from_lang_id(GERMAN_STANDARD).primary_language(), PrimaryLanguage::German ); } #[test] fn it_recognizes_german_standard_as_standard_sub_language() { assert_eq!( super::from_lang_id(GERMAN_STANDARD).sub_language(), SubLanguage::Standard ); } #[test] fn it_recognizes_german_from_switzerland_as_german_language() { assert_eq!( super::from_lang_id(GERMAN_SWITZERLAND).primary_language(), PrimaryLanguage::German ); } #[test] fn it_recognizes_german_from_switzerland_as_switzerland_sub_language() { assert_eq!( super::from_lang_id(GERMAN_SWITZERLAND).sub_language(), SubLanguage::Switzerland ); } #[test] fn it_recognizes_german_from_austria_as_german_language() { assert_eq!( super::from_lang_id(GERMAN_AUSTRIA).primary_language(), PrimaryLanguage::German ); } #[test] fn it_recognizes_german_from_austria_as_austria_sub_language() { assert_eq!( super::from_lang_id(GERMAN_AUSTRIA).sub_language(), SubLanguage::Austria ); } #[test] fn it_recognizes_german_from_luxembourg_as_german_language() { assert_eq!( super::from_lang_id(GERMAN_LUXEMBOURG).primary_language(), PrimaryLanguage::German ); } #[test] fn it_recognizes_german_from_luxembourg_as_luxembourg_sub_language() { assert_eq!( super::from_lang_id(GERMAN_LUXEMBOURG).sub_language(), SubLanguage::Luxembourg ); } #[test] fn it_recognizes_german_from_liechtenstein_as_german_language() { assert_eq!( super::from_lang_id(GERMAN_LIECHTENSTEIN).primary_language(), PrimaryLanguage::German ); } #[test] fn it_recognizes_german_from_liechtenstein_as_liechtenstein_sub_language() { assert_eq!( super::from_lang_id(GERMAN_LIECHTENSTEIN).sub_language(), SubLanguage::Liechtenstein ); } #[test] fn it_recognizes_greek_as_greek_language() { assert_eq!( super::from_lang_id(GREEK).primary_language(), PrimaryLanguage::Greek ); } #[test] fn it_recognizes_gujarati_as_gujarati_language() { assert_eq!( super::from_lang_id(GUJARATI).primary_language(), PrimaryLanguage::Gujarati ); } #[test] fn it_recognizes_hebrew_as_hebrew_language() { assert_eq!( super::from_lang_id(HEBREW).primary_language(), PrimaryLanguage::Hebrew ); } #[test] fn it_recognizes_hindi_as_hindi_language() { assert_eq!( super::from_lang_id(HINDI).primary_language(), PrimaryLanguage::Hindi ); } #[test] fn it_recognizes_hungarian_as_hungarian_language() { assert_eq!( super::from_lang_id(HUNGARIAN).primary_language(), PrimaryLanguage::Hungarian ); } #[test] fn it_recognizes_icelandic_as_icelandic_language() { assert_eq!( super::from_lang_id(ICELANDIC).primary_language(), PrimaryLanguage::Icelandic ); } #[test] fn it_recognizes_indonesian_as_indonesian_language() { assert_eq!( super::from_lang_id(INDONESIAN).primary_language(), PrimaryLanguage::Indonesian ); } #[test] fn it_recognizes_italian_standard_as_italian_language() { assert_eq!( super::from_lang_id(ITALIAN_STANDARD).primary_language(), PrimaryLanguage::Italian ); } #[test] fn it_recognizes_italian_standard_as_standard_sub_language() { assert_eq!( super::from_lang_id(ITALIAN_STANDARD).sub_language(), SubLanguage::Standard ); } #[test] fn it_recognizes_italian_from_switzerland_as_italian_language() { assert_eq!( super::from_lang_id(ITALIAN_SWITZERLAND).primary_language(), PrimaryLanguage::Italian ); } #[test] fn it_recognizes_italian_from_switzerland_as_switzerland_sub_language() { assert_eq!( super::from_lang_id(ITALIAN_SWITZERLAND).sub_language(), SubLanguage::Switzerland ); } #[test] fn it_recognizes_japanese_as_japanese_language() { assert_eq!( super::from_lang_id(JAPANESE).primary_language(), PrimaryLanguage::Japanese ); } #[test] fn it_recognizes_kannada_as_kannada_language() { assert_eq!( super::from_lang_id(KANNADA).primary_language(), PrimaryLanguage::Kannada ); } #[test] fn it_recognizes_kashmiri_as_kashmiri_language() { assert_eq!( super::from_lang_id(KASHMIRI_INDIA).primary_language(), PrimaryLanguage::Kashmiri ); } #[test] fn it_recognizes_kazakh_as_kazakh_language() { assert_eq!( super::from_lang_id(KAZAKH).primary_language(), PrimaryLanguage::Kazakh ); } #[test] fn it_recognizes_konkani_as_konkani_language() { assert_eq!( super::from_lang_id(KONKANI).primary_language(), PrimaryLanguage::Konkani ); } #[test] fn it_recognizes_korean_as_korean_language() { assert_eq!( super::from_lang_id(KOREAN).primary_language(), PrimaryLanguage::Korean ); } #[test] fn it_recognizes_korean_as_standard_sub_language() { assert_eq!( super::from_lang_id(KOREAN).sub_language(), SubLanguage::Standard ); } #[test] fn it_recognizes_korean_johab_as_korean_language() { assert_eq!( super::from_lang_id(KOREAN_JOHAB).primary_language(), PrimaryLanguage::Korean ); } #[test] fn it_recognizes_korean_johab_as_johab_sub_language() { assert_eq!( super::from_lang_id(KOREAN_JOHAB).sub_language(), SubLanguage::Johab ); } #[test] fn it_recognizes_latvian_as_latvian_language() { assert_eq!( super::from_lang_id(LATVIAN).primary_language(), PrimaryLanguage::Latvian ); } #[test] fn it_recognizes_lithuanian_as_lithuanian_language() { assert_eq!( super::from_lang_id(LITHUANIAN).primary_language(), PrimaryLanguage::Lithuanian ); } #[test] fn it_recognizes_lithuanian_as_standard_sub_language() { assert_eq!( super::from_lang_id(LITHUANIAN).sub_language(), SubLanguage::Standard ); } #[test] fn it_recognizes_lithuanian_classic_as_lithuanian_language() { assert_eq!( super::from_lang_id(LITHUANIAN_CLASSIC).primary_language(), PrimaryLanguage::Lithuanian ); } #[test] fn it_recognizes_lithuanian_classic_as_classic_sub_language() { assert_eq!( super::from_lang_id(LITHUANIAN_CLASSIC).sub_language(), SubLanguage::Classic ); } #[test] fn it_recognizes_macedonian_as_macedonian_language() { assert_eq!( super::from_lang_id(MACEDONIAN).primary_language(), PrimaryLanguage::Macedonian ); } #[test] fn it_recognizes_malay_from_malaysia_as_malay_language() { assert_eq!( super::from_lang_id(MALAY_MALAYSIAN).primary_language(), PrimaryLanguage::Malay ); } #[test] fn it_recognizes_malay_from_malaysia_as_malaysia_sub_language() { assert_eq!( super::from_lang_id(MALAY_MALAYSIAN).sub_language(), SubLanguage::Malaysia ); } #[test] fn it_recognizes_malay_from_brunei_darussalam_as_malay_language() { assert_eq!( super::from_lang_id(MALAY_BRUNEI_DARUSSALAM).primary_language(), PrimaryLanguage::Malay ); } #[test] fn it_recognizes_malay_from_brunei_darussalam_as_brunei_darussalam_sub_language() { assert_eq!( super::from_lang_id(MALAY_BRUNEI_DARUSSALAM).sub_language(), SubLanguage::BruneiDarussalam ); } #[test] fn it_recognizes_malayalam_as_malayalam_language() { assert_eq!( super::from_lang_id(MALAYALAM).primary_language(), PrimaryLanguage::Malayalam ); } #[test] fn it_recognizes_manipuri_as_manipuri_language() { assert_eq!( super::from_lang_id(MANIPURI).primary_language(), PrimaryLanguage::Manipuri ); } #[test] fn it_recognizes_marathi_as_marathi_language() { assert_eq!( super::from_lang_id(MARATHI).primary_language(), PrimaryLanguage::Marathi ); } #[test] fn it_recognizes_nepali_as_nepali_language() { assert_eq!( super::from_lang_id(NEPALI_INDIA).primary_language(), PrimaryLanguage::Nepali ); } #[test] fn it_recognizes_norwegian_bokmal_as_norwegian_language() { assert_eq!( super::from_lang_id(NORWEGIAN_BOKMAL).primary_language(), PrimaryLanguage::Norwegian ); } #[test] fn it_recognizes_norwegian_bokmal_as_bokmal_sub_language() { assert_eq!( super::from_lang_id(NORWEGIAN_BOKMAL).sub_language(), SubLanguage::Bokmal ); } #[test] fn it_recognizes_norwegian_nynorsk_as_norwegian_language() { assert_eq!( super::from_lang_id(NORWEGIAN_NYNORSK).primary_language(), PrimaryLanguage::Norwegian ); } #[test] fn it_recognizes_norwegian_nynorsk_as_nynorsk_sub_language() { assert_eq!( super::from_lang_id(NORWEGIAN_NYNORSK).sub_language(), SubLanguage::Nynorsk ); } #[test] fn it_recognizes_oriya_as_oriya_language() { assert_eq!( super::from_lang_id(ORIYA).primary_language(), PrimaryLanguage::Oriya ); } #[test] fn it_recognizes_polish_as_polish_language() { assert_eq!( super::from_lang_id(POLISH).primary_language(), PrimaryLanguage::Polish ); } #[test] fn it_recognizes_portuguese_from_brazil_as_portuguese_language() { assert_eq!( super::from_lang_id(PORTUGUESE_BRAZIL).primary_language(), PrimaryLanguage::Portuguese ); } #[test] fn it_recognizes_portuguese_from_brazil_as_brazil_sub_language() { assert_eq!( super::from_lang_id(PORTUGUESE_BRAZIL).sub_language(), SubLanguage::Brazil ); } #[test] fn it_recognizes_portuguese_standard_as_portuguese_language() { assert_eq!( super::from_lang_id(PORTUGUESE_STANDARD).primary_language(), PrimaryLanguage::Portuguese ); } #[test] fn it_recognizes_portuguese_standard_as_standard_sub_language() { assert_eq!( super::from_lang_id(PORTUGUESE_STANDARD).sub_language(), SubLanguage::Standard ); } #[test] fn it_recognizes_punjabi_as_punjabi_language() { assert_eq!( super::from_lang_id(PUNJABI).primary_language(), PrimaryLanguage::Punjabi ); } #[test] fn it_recognizes_romanian_as_romanian_language() { assert_eq!( super::from_lang_id(ROMANIAN).primary_language(), PrimaryLanguage::Romanian ); } #[test] fn it_recognizes_russian_as_russian_language() { assert_eq!( super::from_lang_id(RUSSIAN).primary_language(), PrimaryLanguage::Russian ); } #[test] fn it_recognizes_sanskrit_as_sanskrit_language() { assert_eq!( super::from_lang_id(SANSKRIT).primary_language(), PrimaryLanguage::Sanskrit ); } #[test] fn it_recognizes_serbian_cyrillic_as_serbian_language() { assert_eq!( super::from_lang_id(SERBIAN_CYRILLIC).primary_language(), PrimaryLanguage::Serbian ); } #[test] fn it_recognizes_serbian_cyrillic_as_cyrillic_sub_language() { assert_eq!( super::from_lang_id(SERBIAN_CYRILLIC).sub_language(), SubLanguage::Cyrillic ); } #[test] fn it_recognizes_serbian_latin_as_serbian_language() { assert_eq!( super::from_lang_id(SERBIAN_LATIN).primary_language(), PrimaryLanguage::Serbian ); } #[test] fn it_recognizes_serbian_latin_as_latin_sub_language() { assert_eq!( super::from_lang_id(SERBIAN_LATIN).sub_language(), SubLanguage::Latin ); } #[test] fn it_recognizes_sindhi_as_sindhi_language() { assert_eq!( super::from_lang_id(SINDHI).primary_language(), PrimaryLanguage::Sindhi ); } #[test] fn it_recognizes_slovak_as_slovak_language() { assert_eq!( super::from_lang_id(SLOVAK).primary_language(), PrimaryLanguage::Slovak ); } #[test] fn it_recognizes_slovenian_as_slovenian_language() { assert_eq!( super::from_lang_id(SLOVENIAN).primary_language(), PrimaryLanguage::Slovenian ); } #[test] fn it_recognizes_spanish_traditional_sort_as_spanish_language() { assert_eq!( super::from_lang_id(SPANISH_TRADITIONAL_SORT).primary_language(), PrimaryLanguage::Spanish ); } #[test] fn it_recognizes_spanish_traditional_sort_as_traditional_sub_language() { assert_eq!( super::from_lang_id(SPANISH_TRADITIONAL_SORT).sub_language(), SubLanguage::Traditional ); } #[test] fn it_recognizes_spanish_from_mexico_as_spanish_language() { assert_eq!( super::from_lang_id(SPANISH_MEXICAN).primary_language(), PrimaryLanguage::Spanish ); } #[test] fn it_recognizes_spanish_from_mexico_as_mexico_sub_language() { assert_eq!( super::from_lang_id(SPANISH_MEXICAN).sub_language(), SubLanguage::Mexico ); } #[test] fn it_recognizes_spanish_modern_sort_as_spanish_language() { assert_eq!( super::from_lang_id(SPANISH_MODERN_SORT).primary_language(), PrimaryLanguage::Spanish ); } #[test] fn it_recognizes_spanish_modern_sort_as_modern_sub_language() { assert_eq!( super::from_lang_id(SPANISH_MODERN_SORT).sub_language(), SubLanguage::Modern ); } #[test] fn it_recognizes_spanish_from_guatemala_as_spanish_language() { assert_eq!( super::from_lang_id(SPANISH_GUATEMALA).primary_language(), PrimaryLanguage::Spanish ); } #[test] fn it_recognizes_spanish_from_guatemala_as_guatemala_sub_language() { assert_eq!( super::from_lang_id(SPANISH_GUATEMALA).sub_language(), SubLanguage::Guatemala ); } #[test] fn it_recognizes_spanish_from_costa_rica_as_spanish_language() { assert_eq!( super::from_lang_id(SPANISH_COSTA_RICA).primary_language(), PrimaryLanguage::Spanish ); } #[test] fn it_recognizes_spanish_from_costa_rica_as_costa_rica_sub_language() { assert_eq!( super::from_lang_id(SPANISH_COSTA_RICA).sub_language(), SubLanguage::CostaRica ); } #[test] fn it_recognizes_spanish_from_panama_as_spanish_language() { assert_eq!( super::from_lang_id(SPANISH_PANAMA).primary_language(), PrimaryLanguage::Spanish ); } #[test] fn it_recognizes_spanish_from_panama_as_panama_sub_language() { assert_eq!( super::from_lang_id(SPANISH_PANAMA).sub_language(), SubLanguage::Panama ); } #[test] fn it_recognizes_spanish_from_dominican_republic_as_spanish_language() { assert_eq!( super::from_lang_id(SPANISH_DOMINICAN_REPUBLIC).primary_language(), PrimaryLanguage::Spanish ); } #[test] fn it_recognizes_spanish_from_dominican_republic_as_dominican_republic_sub_language() { assert_eq!( super::from_lang_id(SPANISH_DOMINICAN_REPUBLIC).sub_language(), SubLanguage::DominicanRepublic ); } #[test] fn it_recognizes_spanish_from_venezuela_as_spanish_language() { assert_eq!( super::from_lang_id(SPANISH_VENEZUELA).primary_language(), PrimaryLanguage::Spanish ); } #[test] fn it_recognizes_spanish_from_venezuela_as_venezuela_sub_language() { assert_eq!( super::from_lang_id(SPANISH_VENEZUELA).sub_language(), SubLanguage::Venezuela ); } #[test] fn it_recognizes_spanish_from_colombia_as_spanish_language() { assert_eq!( super::from_lang_id(SPANISH_COLOMBIA).primary_language(), PrimaryLanguage::Spanish ); } #[test] fn it_recognizes_spanish_from_colombia_as_colombia_sub_language() { assert_eq!( super::from_lang_id(SPANISH_COLOMBIA).sub_language(), SubLanguage::Colombia ); } #[test] fn it_recognizes_spanish_from_peru_as_spanish_language() { assert_eq!( super::from_lang_id(SPANISH_PERU).primary_language(), PrimaryLanguage::Spanish ); } #[test] fn it_recognizes_spanish_from_peru_as_peru_sub_language() { assert_eq!( super::from_lang_id(SPANISH_PERU).sub_language(), SubLanguage::Peru ); } #[test] fn it_recognizes_spanish_from_argentina_as_spanish_language() { assert_eq!( super::from_lang_id(SPANISH_ARGENTINA).primary_language(), PrimaryLanguage::Spanish ); } #[test] fn it_recognizes_spanish_from_argentina_as_argentina_sub_language() { assert_eq!( super::from_lang_id(SPANISH_ARGENTINA).sub_language(), SubLanguage::Argentina ); } #[test] fn it_recognizes_spanish_from_ecuador_as_spanish_language() { assert_eq!( super::from_lang_id(SPANISH_ECUADOR).primary_language(), PrimaryLanguage::Spanish ); } #[test] fn it_recognizes_spanish_from_ecuador_as_ecuador_sub_language() { assert_eq!( super::from_lang_id(SPANISH_ECUADOR).sub_language(), SubLanguage::Ecuador ); } #[test] fn it_recognizes_spanish_from_chile_as_spanish_language() { assert_eq!( super::from_lang_id(SPANISH_CHILE).primary_language(), PrimaryLanguage::Spanish ); } #[test] fn it_recognizes_spanish_from_chile_as_chile_sub_language() { assert_eq!( super::from_lang_id(SPANISH_CHILE).sub_language(), SubLanguage::Chile ); } #[test] fn it_recognizes_spanish_from_uruguay_as_spanish_language() { assert_eq!( super::from_lang_id(SPANISH_URUGUAY).primary_language(), PrimaryLanguage::Spanish ); } #[test] fn it_recognizes_spanish_from_uruguay_as_uruguay_sub_language() { assert_eq!( super::from_lang_id(SPANISH_URUGUAY).sub_language(), SubLanguage::Uruguay ); } #[test] fn it_recognizes_spanish_from_paraguay_as_spanish_language() { assert_eq!( super::from_lang_id(SPANISH_PARAGUAY).primary_language(), PrimaryLanguage::Spanish ); } #[test] fn it_recognizes_spanish_from_paraguay_as_paraguay_sub_language() { assert_eq!( super::from_lang_id(SPANISH_PARAGUAY).sub_language(), SubLanguage::Paraguay ); } #[test] fn it_recognizes_spanish_from_bolivia_as_spanish_language() { assert_eq!( super::from_lang_id(SPANISH_BOLIVIA).primary_language(), PrimaryLanguage::Spanish ); } #[test] fn it_recognizes_spanish_from_bolivia_as_bolivia_sub_language() { assert_eq!( super::from_lang_id(SPANISH_BOLIVIA).sub_language(), SubLanguage::Bolivia ); } #[test] fn it_recognizes_spanish_from_el_salvador_as_spanish_language() { assert_eq!( super::from_lang_id(SPANISH_EL_SALVADOR).primary_language(), PrimaryLanguage::Spanish ); } #[test] fn it_recognizes_spanish_from_el_salvador_as_el_salvador_sub_language() { assert_eq!( super::from_lang_id(SPANISH_EL_SALVADOR).sub_language(), SubLanguage::ElSalvador ); } #[test] fn it_recognizes_spanish_from_honduras_as_spanish_language() { assert_eq!( super::from_lang_id(SPANISH_HONDURAS).primary_language(), PrimaryLanguage::Spanish ); } #[test] fn it_recognizes_spanish_from_honduras_as_honduras_sub_language() { assert_eq!( super::from_lang_id(SPANISH_HONDURAS).sub_language(), SubLanguage::Honduras ); } #[test] fn it_recognizes_spanish_from_nicaragua_as_spanish_language() { assert_eq!( super::from_lang_id(SPANISH_NICARAGUA).primary_language(), PrimaryLanguage::Spanish ); } #[test] fn it_recognizes_spanish_from_nicaragua_as_nicaragua_sub_language() { assert_eq!( super::from_lang_id(SPANISH_NICARAGUA).sub_language(), SubLanguage::Nicaragua ); } #[test] fn it_recognizes_spanish_from_puerto_rico_as_spanish_language() { assert_eq!( super::from_lang_id(SPANISH_PUERTO_RICO).primary_language(), PrimaryLanguage::Spanish ); } #[test] fn it_recognizes_spanish_from_puerto_rico_as_puerto_rico_sub_language() { assert_eq!( super::from_lang_id(SPANISH_PUERTO_RICO).sub_language(), SubLanguage::PuertoRico ); } #[test] fn it_recognizes_sutu_as_sutu_language() { assert_eq!( super::from_lang_id(SUTU).primary_language(), PrimaryLanguage::Sutu ); } #[test] fn it_recognizes_swahili_as_swahili_language() { assert_eq!( super::from_lang_id(SWAHILI_KENYA).primary_language(), PrimaryLanguage::Swahili ); } #[test] fn it_recognizes_swedish_as_swedish_language() { assert_eq!( super::from_lang_id(SWEDISH).primary_language(), PrimaryLanguage::Swedish ); } #[test] fn it_recognizes_swedish_as_standard_sub_language() { assert_eq!( super::from_lang_id(SWEDISH).sub_language(), SubLanguage::Standard ); } #[test] fn it_recognizes_swedish_from_finland_as_swedish_language() { assert_eq!( super::from_lang_id(SWEDISH_FINLAND).primary_language(), PrimaryLanguage::Swedish ); } #[test] fn it_recognizes_swedish_from_finland_as_finland_sub_language() { assert_eq!( super::from_lang_id(SWEDISH_FINLAND).sub_language(), SubLanguage::Finland ); } #[test] fn it_recognizes_tamil_as_tamil_language() { assert_eq!( super::from_lang_id(TAMIL).primary_language(), PrimaryLanguage::Tamil ); } #[test] fn it_recognizes_tatar_as_tatar_language() { assert_eq!( super::from_lang_id(TATAR_TATARSTAN).primary_language(), PrimaryLanguage::Tatar ); } #[test] fn it_recognizes_telugu_as_telugu_language() { assert_eq!( super::from_lang_id(TELUGU).primary_language(), PrimaryLanguage::Telugu ); } #[test] fn it_recognizes_thai_as_thai_language() { assert_eq!( super::from_lang_id(THAI).primary_language(), PrimaryLanguage::Thai ); } #[test] fn it_recognizes_turkish_as_turkish_language() { assert_eq!( super::from_lang_id(TURKISH).primary_language(), PrimaryLanguage::Turkish ); } #[test] fn it_recognizes_ukrainian_as_ukrainian_language() { assert_eq!( super::from_lang_id(UKRAINIAN).primary_language(), PrimaryLanguage::Ukrainian ); } #[test] fn it_recognizes_urdu_from_pakistan_as_urdu_language() { assert_eq!( super::from_lang_id(URDU_PAKISTAN).primary_language(), PrimaryLanguage::Urdu ); } #[test] fn it_recognizes_urdu_from_pakistan_as_pakistan_sub_language() { assert_eq!( super::from_lang_id(URDU_PAKISTAN).sub_language(), SubLanguage::Pakistan ); } #[test] fn it_recognizes_urdu_from_india_as_urdu_language() { assert_eq!( super::from_lang_id(URDU_INDIA).primary_language(), PrimaryLanguage::Urdu ); } #[test] fn it_recognizes_urdu_from_india_as_india_sub_language() { assert_eq!( super::from_lang_id(URDU_INDIA).sub_language(), SubLanguage::India ); } #[test] fn it_recognizes_uzbek_latin_as_uzbek_language() { assert_eq!( super::from_lang_id(UZBEK_LATIN).primary_language(), PrimaryLanguage::Uzbek ); } #[test] fn it_recognizes_uzbek_latin_as_latin_sub_language() { assert_eq!( super::from_lang_id(UZBEK_LATIN).sub_language(), SubLanguage::Latin ); } #[test] fn it_recognizes_uzbek_cyrillic_as_uzbek_language() { assert_eq!( super::from_lang_id(UZBEK_CYRILLIC).primary_language(), PrimaryLanguage::Uzbek ); } #[test] fn it_recognizes_uzbek_cyrillic_as_cyrillic_sub_language() { assert_eq!( super::from_lang_id(UZBEK_CYRILLIC).sub_language(), SubLanguage::Cyrillic ); } #[test] fn it_recognizes_vietnamese_as_vietnamese_language() { assert_eq!( super::from_lang_id(VIETNAMESE).primary_language(), PrimaryLanguage::Vietnamese ); } #[test] fn it_recognizes_hid_usage_data_descriptor_as_hid_language() { assert_eq!( super::from_lang_id(HID_USAGE_DATA_DESCRIPTOR).primary_language(), PrimaryLanguage::HID ); } #[test] fn it_recognizes_hid_usage_data_descriptor_as_usage_data_descriptor_sub_language() { assert_eq!( super::from_lang_id(HID_USAGE_DATA_DESCRIPTOR).sub_language(), SubLanguage::UsageDataDescriptor ); } #[test] fn it_recognizes_hid_vendor_defined_1_as_hid_language() { assert_eq!( super::from_lang_id(HID_VENDOR_DEFINED_1).primary_language(), PrimaryLanguage::HID ); } #[test] fn it_recognizes_hid_vendor_defined_1_as_vendor_defined_1_sub_language() { assert_eq!( super::from_lang_id(HID_VENDOR_DEFINED_1).sub_language(), SubLanguage::VendorDefined1 ); } #[test] fn it_recognizes_hid_vendor_defined_2_as_hid_language() { assert_eq!( super::from_lang_id(HID_VENDOR_DEFINED_2).primary_language(), PrimaryLanguage::HID ); } #[test] fn it_recognizes_hid_vendor_defined_1_as_vendor_defined_2_sub_language() { assert_eq!( super::from_lang_id(HID_VENDOR_DEFINED_2).sub_language(), SubLanguage::VendorDefined2 ); } #[test] fn it_recognizes_hid_vendor_defined_3_as_hid_language() { assert_eq!( super::from_lang_id(HID_VENDOR_DEFINED_3).primary_language(), PrimaryLanguage::HID ); } #[test] fn it_recognizes_hid_vendor_defined_1_as_vendor_defined_3_sub_language() { assert_eq!( super::from_lang_id(HID_VENDOR_DEFINED_3).sub_language(), SubLanguage::VendorDefined3 ); } #[test] fn it_recognizes_hid_vendor_defined_4_as_hid_language() { assert_eq!( super::from_lang_id(HID_VENDOR_DEFINED_4).primary_language(), PrimaryLanguage::HID ); } #[test] fn it_recognizes_hid_vendor_defined_1_as_vendor_defined_4_sub_language() { assert_eq!( super::from_lang_id(HID_VENDOR_DEFINED_4).sub_language(), SubLanguage::VendorDefined4 ); } #[test] fn it_recognizes_other_as_other_language() { assert_eq!( super::from_lang_id(0xFFFF).primary_language(), PrimaryLanguage::Other(PRIMARY_LANGUAGE_MASK) ); } #[test] fn it_recognizes_other_as_other_sub_language() { assert_eq!( super::from_lang_id(0xFFFF).sub_language(), SubLanguage::Other(SUB_LANGUAGE_MASK) ); } }