1 const PRIMARY_LANGUAGE_MASK: u16 = 0x03FF;
2 const SUB_LANGUAGE_MASK: u16 = 0xFC00;
3 
4 /// A language used to read string descriptors from USB devices.
5 ///
6 /// A language consists of a primary language and a sub language. Primary languages are language
7 /// families, such as English or Spanish. Sub languages identify a dialect of the primary language.
8 /// The dialect may be based on regional differences (United States English compared to United
9 /// Kingdom English), writing systems (Cyrillic compared to Latin), or age (Modern compared to
10 /// Traditional). Each primary language has its own set of sub languages.
11 #[derive(Debug, Copy, Clone, PartialEq, Eq)]
12 pub struct Language {
13     raw: u16,
14 }
15 
16 impl Language {
17     /// Returns the language's 16-bit `LANGID`.
18     ///
19     /// Each language's `LANGID` is defined by the USB forum
20     /// <https://learn.microsoft.com/en-us/windows/win32/intl/language-identifier-constants-and-strings>.
lang_id(self) -> u1621     pub fn lang_id(self) -> u16 {
22         self.raw
23     }
24 
25     /// Returns the primary language.
primary_language(self) -> PrimaryLanguage26     pub fn primary_language(self) -> PrimaryLanguage {
27         PrimaryLanguage::from_raw(self.raw)
28     }
29 
30     /// Returns the sub language.
sub_language(self) -> SubLanguage31     pub fn sub_language(self) -> SubLanguage {
32         SubLanguage::from_raw(self.primary_language(), self.raw)
33     }
34 }
35 
36 #[doc(hidden)]
from_lang_id(raw: u16) -> Language37 pub(crate) fn from_lang_id(raw: u16) -> Language {
38     Language { raw }
39 }
40 
41 /// Primary language families.
42 #[derive(Debug, Copy, Clone, PartialEq, Eq)]
43 pub enum PrimaryLanguage {
44     Afrikaans,
45     Albanian,
46     Arabic,
47     Armenian,
48     Assamese,
49     Azeri,
50     Basque,
51     Belarussian,
52     Bengali,
53     Bulgarian,
54     Burmese,
55     Catalan,
56     Chinese,
57     Croatian,
58     Czech,
59     Danish,
60     Dutch,
61     English,
62     Estonian,
63     Faeroese,
64     Farsi,
65     Finnish,
66     French,
67     Georgian,
68     German,
69     Greek,
70     Gujarati,
71     Hebrew,
72     Hindi,
73     Hungarian,
74     Icelandic,
75     Indonesian,
76     Italian,
77     Japanese,
78     Kannada,
79     Kashmiri,
80     Kazakh,
81     Konkani,
82     Korean,
83     Latvian,
84     Lithuanian,
85     Macedonian,
86     Malay,
87     Malayalam,
88     Manipuri,
89     Marathi,
90     Nepali,
91     Norwegian,
92     Oriya,
93     Polish,
94     Portuguese,
95     Punjabi,
96     Romanian,
97     Russian,
98     Sanskrit,
99     Serbian,
100     Sindhi,
101     Slovak,
102     Slovenian,
103     Spanish,
104     Sutu,
105     Swahili,
106     Swedish,
107     Tamil,
108     Tatar,
109     Telugu,
110     Thai,
111     Turkish,
112     Ukrainian,
113     Urdu,
114     Uzbek,
115     Vietnamese,
116 
117     HID,
118     Other(u16),
119 }
120 
121 impl PrimaryLanguage {
from_raw(raw: u16) -> PrimaryLanguage122     fn from_raw(raw: u16) -> PrimaryLanguage {
123         match raw & PRIMARY_LANGUAGE_MASK {
124             0x0036 => PrimaryLanguage::Afrikaans,
125             0x001C => PrimaryLanguage::Albanian,
126             0x0001 => PrimaryLanguage::Arabic,
127             0x002B => PrimaryLanguage::Armenian,
128             0x004D => PrimaryLanguage::Assamese,
129             0x002C => PrimaryLanguage::Azeri,
130             0x002D => PrimaryLanguage::Basque,
131             0x0023 => PrimaryLanguage::Belarussian,
132             0x0045 => PrimaryLanguage::Bengali,
133             0x0002 => PrimaryLanguage::Bulgarian,
134             0x0055 => PrimaryLanguage::Burmese,
135             0x0003 => PrimaryLanguage::Catalan,
136             0x0004 => PrimaryLanguage::Chinese,
137             0x001A => match raw & SUB_LANGUAGE_MASK {
138                 0x0400 => PrimaryLanguage::Croatian,
139                 _ => PrimaryLanguage::Serbian,
140             },
141             0x0005 => PrimaryLanguage::Czech,
142             0x0006 => PrimaryLanguage::Danish,
143             0x0013 => PrimaryLanguage::Dutch,
144             0x0009 => PrimaryLanguage::English,
145             0x0025 => PrimaryLanguage::Estonian,
146             0x0038 => PrimaryLanguage::Faeroese,
147             0x0029 => PrimaryLanguage::Farsi,
148             0x000B => PrimaryLanguage::Finnish,
149             0x000C => PrimaryLanguage::French,
150             0x0037 => PrimaryLanguage::Georgian,
151             0x0007 => PrimaryLanguage::German,
152             0x0008 => PrimaryLanguage::Greek,
153             0x0047 => PrimaryLanguage::Gujarati,
154             0x000D => PrimaryLanguage::Hebrew,
155             0x0039 => PrimaryLanguage::Hindi,
156             0x000E => PrimaryLanguage::Hungarian,
157             0x000F => PrimaryLanguage::Icelandic,
158             0x0021 => PrimaryLanguage::Indonesian,
159             0x0010 => PrimaryLanguage::Italian,
160             0x0011 => PrimaryLanguage::Japanese,
161             0x004B => PrimaryLanguage::Kannada,
162             0x0060 => PrimaryLanguage::Kashmiri,
163             0x003F => PrimaryLanguage::Kazakh,
164             0x0057 => PrimaryLanguage::Konkani,
165             0x0012 => PrimaryLanguage::Korean,
166             0x0026 => PrimaryLanguage::Latvian,
167             0x0027 => PrimaryLanguage::Lithuanian,
168             0x002F => PrimaryLanguage::Macedonian,
169             0x003E => PrimaryLanguage::Malay,
170             0x004C => PrimaryLanguage::Malayalam,
171             0x0058 => PrimaryLanguage::Manipuri,
172             0x004E => PrimaryLanguage::Marathi,
173             0x0061 => PrimaryLanguage::Nepali,
174             0x0014 => PrimaryLanguage::Norwegian,
175             0x0048 => PrimaryLanguage::Oriya,
176             0x0015 => PrimaryLanguage::Polish,
177             0x0016 => PrimaryLanguage::Portuguese,
178             0x0046 => PrimaryLanguage::Punjabi,
179             0x0018 => PrimaryLanguage::Romanian,
180             0x0019 => PrimaryLanguage::Russian,
181             0x004F => PrimaryLanguage::Sanskrit,
182             0x0059 => PrimaryLanguage::Sindhi,
183             0x001B => PrimaryLanguage::Slovak,
184             0x0024 => PrimaryLanguage::Slovenian,
185             0x000A => PrimaryLanguage::Spanish,
186             0x0030 => PrimaryLanguage::Sutu,
187             0x0041 => PrimaryLanguage::Swahili,
188             0x001D => PrimaryLanguage::Swedish,
189             0x0049 => PrimaryLanguage::Tamil,
190             0x0044 => PrimaryLanguage::Tatar,
191             0x004A => PrimaryLanguage::Telugu,
192             0x001E => PrimaryLanguage::Thai,
193             0x001F => PrimaryLanguage::Turkish,
194             0x0022 => PrimaryLanguage::Ukrainian,
195             0x0020 => PrimaryLanguage::Urdu,
196             0x0043 => PrimaryLanguage::Uzbek,
197             0x002A => PrimaryLanguage::Vietnamese,
198             0x00FF => PrimaryLanguage::HID,
199             n => PrimaryLanguage::Other(n),
200         }
201     }
202 }
203 
204 /// Language dialects and writing systems.
205 #[derive(Debug, Copy, Clone, PartialEq, Eq)]
206 pub enum SubLanguage {
207     Standard,
208     Classic,
209     Traditional,
210     Modern,
211 
212     Algeria,            // arabic
213     Argentina,          // spanish
214     Australia,          // english
215     Austria,            // german
216     Bahrain,            // arabic
217     Belgium,            // dutch, french
218     Belize,             // english
219     Bokmal,             // norwegian
220     Bolivia,            // spanish
221     Brazil,             // portuguese
222     BruneiDarussalam,   // malay
223     Canada,             // english, french
224     Caribbean,          // english
225     Chile,              // spanish
226     China,              // chinese
227     Colombia,           // spanish
228     CostaRica,          // spanish
229     Cyrillic,           // azeri, serbian, uzbek
230     DominicanRepublic,  // spanish
231     Ecuador,            // spanish
232     Egypt,              // arabic
233     ElSalvador,         // spanish
234     Finland,            // swedish
235     Guatemala,          // spanish
236     Honduras,           // spanish
237     HongKong,           // chinese
238     India,              // kashmiri, nepali, urdu
239     Iraq,               // arabic
240     Ireland,            // english
241     Jamaica,            // english
242     Johab,              // korean
243     Jordan,             // arabic
244     Kuwait,             // arabic
245     Latin,              // azeri, serbian, uzbek
246     Lebanon,            // arabic
247     Libya,              // arabic
248     Liechtenstein,      // german
249     Luxembourg,         // french, german
250     Macau,              // chinese
251     Malaysia,           // malay
252     Mexico,             // spanish
253     Monaco,             // french
254     Morocco,            // arabic
255     Netherlands,        // dutch
256     NewZealand,         // english
257     Nicaragua,          // spanish
258     Nynorsk,            // norwegian
259     Oman,               // arabic
260     Pakistan,           // urdu
261     Panama,             // spanish
262     Paraguay,           // spanish
263     Peru,               // spanish
264     Philippines,        // english
265     PuertoRico,         // spanish
266     Qatar,              // arabic
267     SaudiArabia,        // arabic
268     Singapore,          // chinese
269     SouthAfrica,        // english
270     Switzerland,        // french, german, italian
271     Syria,              // arabic
272     Taiwan,             // chinese
273     Trinidad,           // english
274     Tunisia,            // arabic
275     UnitedArabEmirates, // arabic
276     UnitedKingdom,      // english
277     UnitedStates,       // english
278     Uruguay,            // spanish
279     Venezuela,          // spanish
280     Yemen,              // arabic
281     Zimbabwe,           // english
282 
283     UsageDataDescriptor, // HID
284     VendorDefined1,      // HID
285     VendorDefined2,      // HID
286     VendorDefined3,      // HID
287     VendorDefined4,      // HID
288 
289     Other(u16),
290 }
291 
292 impl SubLanguage {
from_raw(language: PrimaryLanguage, raw: u16) -> SubLanguage293     fn from_raw(language: PrimaryLanguage, raw: u16) -> SubLanguage {
294         match language {
295             PrimaryLanguage::Arabic => match raw & SUB_LANGUAGE_MASK {
296                 0x0400 => SubLanguage::SaudiArabia,
297                 0x0800 => SubLanguage::Iraq,
298                 0x0C00 => SubLanguage::Egypt,
299                 0x1000 => SubLanguage::Libya,
300                 0x1400 => SubLanguage::Algeria,
301                 0x1800 => SubLanguage::Morocco,
302                 0x1C00 => SubLanguage::Tunisia,
303                 0x2000 => SubLanguage::Oman,
304                 0x2400 => SubLanguage::Yemen,
305                 0x2800 => SubLanguage::Syria,
306                 0x2C00 => SubLanguage::Jordan,
307                 0x3000 => SubLanguage::Lebanon,
308                 0x3400 => SubLanguage::Kuwait,
309                 0x3800 => SubLanguage::UnitedArabEmirates,
310                 0x3C00 => SubLanguage::Bahrain,
311                 0x4000 => SubLanguage::Qatar,
312                 n => SubLanguage::Other(n),
313             },
314             PrimaryLanguage::Azeri => match raw & SUB_LANGUAGE_MASK {
315                 0x0400 => SubLanguage::Latin,
316                 0x0800 => SubLanguage::Cyrillic,
317                 n => SubLanguage::Other(n),
318             },
319             PrimaryLanguage::Chinese => match raw & SUB_LANGUAGE_MASK {
320                 0x0400 => SubLanguage::Taiwan,
321                 0x0800 => SubLanguage::China,
322                 0x0C00 => SubLanguage::HongKong,
323                 0x1000 => SubLanguage::Singapore,
324                 0x1400 => SubLanguage::Macau,
325                 n => SubLanguage::Other(n),
326             },
327             PrimaryLanguage::Dutch => match raw & SUB_LANGUAGE_MASK {
328                 0x0400 => SubLanguage::Netherlands,
329                 0x0800 => SubLanguage::Belgium,
330                 n => SubLanguage::Other(n),
331             },
332             PrimaryLanguage::English => match raw & SUB_LANGUAGE_MASK {
333                 0x0400 => SubLanguage::UnitedStates,
334                 0x0800 => SubLanguage::UnitedKingdom,
335                 0x0C00 => SubLanguage::Australia,
336                 0x1000 => SubLanguage::Canada,
337                 0x1400 => SubLanguage::NewZealand,
338                 0x1800 => SubLanguage::Ireland,
339                 0x1C00 => SubLanguage::SouthAfrica,
340                 0x2000 => SubLanguage::Jamaica,
341                 0x2400 => SubLanguage::Caribbean,
342                 0x2800 => SubLanguage::Belize,
343                 0x2C00 => SubLanguage::Trinidad,
344                 0x3000 => SubLanguage::Zimbabwe,
345                 0x3400 => SubLanguage::Philippines,
346                 n => SubLanguage::Other(n),
347             },
348             PrimaryLanguage::French => match raw & SUB_LANGUAGE_MASK {
349                 0x0400 => SubLanguage::Standard,
350                 0x0800 => SubLanguage::Belgium,
351                 0x0C00 => SubLanguage::Canada,
352                 0x1000 => SubLanguage::Switzerland,
353                 0x1400 => SubLanguage::Luxembourg,
354                 0x1800 => SubLanguage::Monaco,
355                 n => SubLanguage::Other(n),
356             },
357             PrimaryLanguage::German => match raw & SUB_LANGUAGE_MASK {
358                 0x0400 => SubLanguage::Standard,
359                 0x0800 => SubLanguage::Switzerland,
360                 0x0C00 => SubLanguage::Austria,
361                 0x1000 => SubLanguage::Luxembourg,
362                 0x1400 => SubLanguage::Liechtenstein,
363                 n => SubLanguage::Other(n),
364             },
365             PrimaryLanguage::Italian => match raw & SUB_LANGUAGE_MASK {
366                 0x0400 => SubLanguage::Standard,
367                 0x0800 => SubLanguage::Switzerland,
368                 n => SubLanguage::Other(n),
369             },
370             PrimaryLanguage::Korean => match raw & SUB_LANGUAGE_MASK {
371                 0x0400 => SubLanguage::Standard,
372                 0x0800 => SubLanguage::Johab,
373                 n => SubLanguage::Other(n),
374             },
375             PrimaryLanguage::Lithuanian => match raw & SUB_LANGUAGE_MASK {
376                 0x0400 => SubLanguage::Standard,
377                 0x0800 => SubLanguage::Classic,
378                 n => SubLanguage::Other(n),
379             },
380             PrimaryLanguage::Malay => match raw & SUB_LANGUAGE_MASK {
381                 0x0400 => SubLanguage::Malaysia,
382                 0x0800 => SubLanguage::BruneiDarussalam,
383                 n => SubLanguage::Other(n),
384             },
385             PrimaryLanguage::Norwegian => match raw & SUB_LANGUAGE_MASK {
386                 0x0400 => SubLanguage::Bokmal,
387                 0x0800 => SubLanguage::Nynorsk,
388                 n => SubLanguage::Other(n),
389             },
390             PrimaryLanguage::Portuguese => match raw & SUB_LANGUAGE_MASK {
391                 0x0400 => SubLanguage::Brazil,
392                 0x0800 => SubLanguage::Standard,
393                 n => SubLanguage::Other(n),
394             },
395             PrimaryLanguage::Serbian => match raw & SUB_LANGUAGE_MASK {
396                 0x0C00 => SubLanguage::Cyrillic,
397                 0x0800 => SubLanguage::Latin,
398                 n => SubLanguage::Other(n),
399             },
400             PrimaryLanguage::Spanish => match raw & SUB_LANGUAGE_MASK {
401                 0x0400 => SubLanguage::Traditional,
402                 0x0800 => SubLanguage::Mexico,
403                 0x0C00 => SubLanguage::Modern,
404                 0x1000 => SubLanguage::Guatemala,
405                 0x1400 => SubLanguage::CostaRica,
406                 0x1800 => SubLanguage::Panama,
407                 0x1C00 => SubLanguage::DominicanRepublic,
408                 0x2000 => SubLanguage::Venezuela,
409                 0x2400 => SubLanguage::Colombia,
410                 0x2800 => SubLanguage::Peru,
411                 0x2C00 => SubLanguage::Argentina,
412                 0x3000 => SubLanguage::Ecuador,
413                 0x3400 => SubLanguage::Chile,
414                 0x3800 => SubLanguage::Uruguay,
415                 0x3C00 => SubLanguage::Paraguay,
416                 0x4000 => SubLanguage::Bolivia,
417                 0x4400 => SubLanguage::ElSalvador,
418                 0x4800 => SubLanguage::Honduras,
419                 0x4C00 => SubLanguage::Nicaragua,
420                 0x5000 => SubLanguage::PuertoRico,
421                 n => SubLanguage::Other(n),
422             },
423             PrimaryLanguage::Swedish => match raw & SUB_LANGUAGE_MASK {
424                 0x0400 => SubLanguage::Standard,
425                 0x0800 => SubLanguage::Finland,
426                 n => SubLanguage::Other(n),
427             },
428             PrimaryLanguage::Urdu => match raw & SUB_LANGUAGE_MASK {
429                 0x0400 => SubLanguage::Pakistan,
430                 0x0800 => SubLanguage::India,
431                 n => SubLanguage::Other(n),
432             },
433             PrimaryLanguage::Uzbek => match raw & SUB_LANGUAGE_MASK {
434                 0x0400 => SubLanguage::Latin,
435                 0x0800 => SubLanguage::Cyrillic,
436                 n => SubLanguage::Other(n),
437             },
438             PrimaryLanguage::HID => match raw & SUB_LANGUAGE_MASK {
439                 0x0400 => SubLanguage::UsageDataDescriptor,
440                 0xF000 => SubLanguage::VendorDefined1,
441                 0xF400 => SubLanguage::VendorDefined2,
442                 0xF800 => SubLanguage::VendorDefined3,
443                 0xFC00 => SubLanguage::VendorDefined4,
444                 n => SubLanguage::Other(n),
445             },
446             PrimaryLanguage::Other(_) => SubLanguage::Other(raw & SUB_LANGUAGE_MASK),
447             _ => SubLanguage::Standard,
448         }
449     }
450 }
451 
452 #[cfg(test)]
453 mod test {
454     use super::{PrimaryLanguage, SubLanguage};
455     use super::{PRIMARY_LANGUAGE_MASK, SUB_LANGUAGE_MASK};
456 
457     // language ids defined in http://www.usb.org/developers/docs/USB_LANGIDs.pdf
458     const AFRIKAANS: u16 = 0x0436;
459     const ALBANIAN: u16 = 0x041C;
460     const ARABIC_SAUDI_ARABIA: u16 = 0x0401;
461     const ARABIC_IRAQ: u16 = 0x0801;
462     const ARABIC_EGYPT: u16 = 0x0C01;
463     const ARABIC_LIBYA: u16 = 0x1001;
464     const ARABIC_ALGERIA: u16 = 0x1401;
465     const ARABIC_MOROCCO: u16 = 0x1801;
466     const ARABIC_TUNISIA: u16 = 0x1C01;
467     const ARABIC_OMAN: u16 = 0x2001;
468     const ARABIC_YEMEN: u16 = 0x2401;
469     const ARABIC_SYRIA: u16 = 0x2801;
470     const ARABIC_JORDAN: u16 = 0x2C01;
471     const ARABIC_LEBANON: u16 = 0x3001;
472     const ARABIC_KUWAIT: u16 = 0x3401;
473     const ARABIC_UAE: u16 = 0x3801;
474     const ARABIC_BAHRAIN: u16 = 0x3C01;
475     const ARABIC_QATAR: u16 = 0x4001;
476     const ARMENIAN: u16 = 0x042B;
477     const ASSAMESE: u16 = 0x044D;
478     const AZERI_LATIN: u16 = 0x042C;
479     const AZERI_CYRILLIC: u16 = 0x082C;
480     const BASQUE: u16 = 0x042D;
481     const BELARUSSIAN: u16 = 0x0423;
482     const BENGALI: u16 = 0x0445;
483     const BULGARIAN: u16 = 0x0402;
484     const BURMESE: u16 = 0x0455;
485     const CATALAN: u16 = 0x0403;
486     const CHINESE_TAIWAN: u16 = 0x0404;
487     const CHINESE_CHINA: u16 = 0x0804;
488     const CHINESE_HONG_KONG: u16 = 0x0C04;
489     const CHINESE_SINGAPORE: u16 = 0x1004;
490     const CHINESE_MACAU: u16 = 0x1404;
491     const CROATIAN: u16 = 0x041A;
492     const CZECH: u16 = 0x0405;
493     const DANISH: u16 = 0x0406;
494     const DUTCH_NETHERLANDS: u16 = 0x0413;
495     const DUTCH_BELGIUM: u16 = 0x0813;
496     const ENGLISH_UNITED_STATES: u16 = 0x0409;
497     const ENGLISH_UNITED_KINGDOM: u16 = 0x0809;
498     const ENGLISH_AUSTRALIAN: u16 = 0x0C09;
499     const ENGLISH_CANADIAN: u16 = 0x1009;
500     const ENGLISH_NEW_ZEALAND: u16 = 0x1409;
501     const ENGLISH_IRELAND: u16 = 0x1809;
502     const ENGLISH_SOUTH_AFRICA: u16 = 0x1C09;
503     const ENGLISH_JAMAICA: u16 = 0x2009;
504     const ENGLISH_CARIBBEAN: u16 = 0x2409;
505     const ENGLISH_BELIZE: u16 = 0x2809;
506     const ENGLISH_TRINIDAD: u16 = 0x2C09;
507     const ENGLISH_ZIMBABWE: u16 = 0x3009;
508     const ENGLISH_PHILIPPINES: u16 = 0x3409;
509     const ESTONIAN: u16 = 0x0425;
510     const FAEROESE: u16 = 0x0438;
511     const FARSI: u16 = 0x0429;
512     const FINNISH: u16 = 0x040B;
513     const FRENCH_STANDARD: u16 = 0x040C;
514     const FRENCH_BELGIAN: u16 = 0x080C;
515     const FRENCH_CANADIAN: u16 = 0x0C0C;
516     const FRENCH_SWITZERLAND: u16 = 0x100C;
517     const FRENCH_LUXEMBOURG: u16 = 0x140C;
518     const FRENCH_MONACO: u16 = 0x180C;
519     const GEORGIAN: u16 = 0x0437;
520     const GERMAN_STANDARD: u16 = 0x0407;
521     const GERMAN_SWITZERLAND: u16 = 0x0807;
522     const GERMAN_AUSTRIA: u16 = 0x0C07;
523     const GERMAN_LUXEMBOURG: u16 = 0x1007;
524     const GERMAN_LIECHTENSTEIN: u16 = 0x1407;
525     const GREEK: u16 = 0x0408;
526     const GUJARATI: u16 = 0x0447;
527     const HEBREW: u16 = 0x040D;
528     const HINDI: u16 = 0x0439;
529     const HUNGARIAN: u16 = 0x040E;
530     const ICELANDIC: u16 = 0x040F;
531     const INDONESIAN: u16 = 0x0421;
532     const ITALIAN_STANDARD: u16 = 0x0410;
533     const ITALIAN_SWITZERLAND: u16 = 0x0810;
534     const JAPANESE: u16 = 0x0411;
535     const KANNADA: u16 = 0x044B;
536     const KASHMIRI_INDIA: u16 = 0x0860;
537     const KAZAKH: u16 = 0x043F;
538     const KONKANI: u16 = 0x0457;
539     const KOREAN: u16 = 0x0412;
540     const KOREAN_JOHAB: u16 = 0x0812;
541     const LATVIAN: u16 = 0x0426;
542     const LITHUANIAN: u16 = 0x0427;
543     const LITHUANIAN_CLASSIC: u16 = 0x0827;
544     const MACEDONIAN: u16 = 0x042F;
545     const MALAY_MALAYSIAN: u16 = 0x043E;
546     const MALAY_BRUNEI_DARUSSALAM: u16 = 0x083E;
547     const MALAYALAM: u16 = 0x044C;
548     const MANIPURI: u16 = 0x0458;
549     const MARATHI: u16 = 0x044E;
550     const NEPALI_INDIA: u16 = 0x0861;
551     const NORWEGIAN_BOKMAL: u16 = 0x0414;
552     const NORWEGIAN_NYNORSK: u16 = 0x0814;
553     const ORIYA: u16 = 0x0448;
554     const POLISH: u16 = 0x0415;
555     const PORTUGUESE_BRAZIL: u16 = 0x0416;
556     const PORTUGUESE_STANDARD: u16 = 0x0816;
557     const PUNJABI: u16 = 0x0446;
558     const ROMANIAN: u16 = 0x0418;
559     const RUSSIAN: u16 = 0x0419;
560     const SANSKRIT: u16 = 0x044F;
561     const SERBIAN_CYRILLIC: u16 = 0x0C1A;
562     const SERBIAN_LATIN: u16 = 0x081A;
563     const SINDHI: u16 = 0x0459;
564     const SLOVAK: u16 = 0x041B;
565     const SLOVENIAN: u16 = 0x0424;
566     const SPANISH_TRADITIONAL_SORT: u16 = 0x040A;
567     const SPANISH_MEXICAN: u16 = 0x080A;
568     const SPANISH_MODERN_SORT: u16 = 0x0C0A;
569     const SPANISH_GUATEMALA: u16 = 0x100A;
570     const SPANISH_COSTA_RICA: u16 = 0x140A;
571     const SPANISH_PANAMA: u16 = 0x180A;
572     const SPANISH_DOMINICAN_REPUBLIC: u16 = 0x1C0A;
573     const SPANISH_VENEZUELA: u16 = 0x200A;
574     const SPANISH_COLOMBIA: u16 = 0x240A;
575     const SPANISH_PERU: u16 = 0x280A;
576     const SPANISH_ARGENTINA: u16 = 0x2C0A;
577     const SPANISH_ECUADOR: u16 = 0x300A;
578     const SPANISH_CHILE: u16 = 0x340A;
579     const SPANISH_URUGUAY: u16 = 0x380A;
580     const SPANISH_PARAGUAY: u16 = 0x3C0A;
581     const SPANISH_BOLIVIA: u16 = 0x400A;
582     const SPANISH_EL_SALVADOR: u16 = 0x440A;
583     const SPANISH_HONDURAS: u16 = 0x480A;
584     const SPANISH_NICARAGUA: u16 = 0x4C0A;
585     const SPANISH_PUERTO_RICO: u16 = 0x500A;
586     const SUTU: u16 = 0x0430;
587     const SWAHILI_KENYA: u16 = 0x0441;
588     const SWEDISH: u16 = 0x041D;
589     const SWEDISH_FINLAND: u16 = 0x081D;
590     const TAMIL: u16 = 0x0449;
591     const TATAR_TATARSTAN: u16 = 0x0444;
592     const TELUGU: u16 = 0x044A;
593     const THAI: u16 = 0x041E;
594     const TURKISH: u16 = 0x041F;
595     const UKRAINIAN: u16 = 0x0422;
596     const URDU_PAKISTAN: u16 = 0x0420;
597     const URDU_INDIA: u16 = 0x0820;
598     const UZBEK_LATIN: u16 = 0x0443;
599     const UZBEK_CYRILLIC: u16 = 0x0843;
600     const VIETNAMESE: u16 = 0x042A;
601     const HID_USAGE_DATA_DESCRIPTOR: u16 = 0x04FF;
602     const HID_VENDOR_DEFINED_1: u16 = 0xF0FF;
603     const HID_VENDOR_DEFINED_2: u16 = 0xF4FF;
604     const HID_VENDOR_DEFINED_3: u16 = 0xF8FF;
605     const HID_VENDOR_DEFINED_4: u16 = 0xFCFF;
606 
607     #[test]
it_recognizes_afrikaans_as_afrikaans_language()608     fn it_recognizes_afrikaans_as_afrikaans_language() {
609         assert_eq!(
610             super::from_lang_id(AFRIKAANS).primary_language(),
611             PrimaryLanguage::Afrikaans
612         );
613     }
614 
615     #[test]
it_recognizes_albanian_as_albanian_language()616     fn it_recognizes_albanian_as_albanian_language() {
617         assert_eq!(
618             super::from_lang_id(ALBANIAN).primary_language(),
619             PrimaryLanguage::Albanian
620         );
621     }
622 
623     #[test]
it_recognizes_arabic_from_saudi_arabia_as_arabic_language()624     fn it_recognizes_arabic_from_saudi_arabia_as_arabic_language() {
625         assert_eq!(
626             super::from_lang_id(ARABIC_SAUDI_ARABIA).primary_language(),
627             PrimaryLanguage::Arabic
628         );
629     }
630 
631     #[test]
it_recognizes_arabic_from_saudi_arabia_as_saudi_arabia_sub_language()632     fn it_recognizes_arabic_from_saudi_arabia_as_saudi_arabia_sub_language() {
633         assert_eq!(
634             super::from_lang_id(ARABIC_SAUDI_ARABIA).sub_language(),
635             SubLanguage::SaudiArabia
636         );
637     }
638 
639     #[test]
it_recognizes_arabic_from_iraq_as_arabic_language()640     fn it_recognizes_arabic_from_iraq_as_arabic_language() {
641         assert_eq!(
642             super::from_lang_id(ARABIC_IRAQ).primary_language(),
643             PrimaryLanguage::Arabic
644         );
645     }
646 
647     #[test]
it_recognizes_arabic_from_iraq_as_iraq_sub_language()648     fn it_recognizes_arabic_from_iraq_as_iraq_sub_language() {
649         assert_eq!(
650             super::from_lang_id(ARABIC_IRAQ).sub_language(),
651             SubLanguage::Iraq
652         );
653     }
654 
655     #[test]
it_recognizes_arabic_from_egypt_as_arabic_language()656     fn it_recognizes_arabic_from_egypt_as_arabic_language() {
657         assert_eq!(
658             super::from_lang_id(ARABIC_EGYPT).primary_language(),
659             PrimaryLanguage::Arabic
660         );
661     }
662 
663     #[test]
it_recognizes_arabic_from_egypt_as_egypt_sub_language()664     fn it_recognizes_arabic_from_egypt_as_egypt_sub_language() {
665         assert_eq!(
666             super::from_lang_id(ARABIC_EGYPT).sub_language(),
667             SubLanguage::Egypt
668         );
669     }
670 
671     #[test]
it_recognizes_arabic_from_libya_as_arabic_language()672     fn it_recognizes_arabic_from_libya_as_arabic_language() {
673         assert_eq!(
674             super::from_lang_id(ARABIC_LIBYA).primary_language(),
675             PrimaryLanguage::Arabic
676         );
677     }
678 
679     #[test]
it_recognizes_arabic_from_libya_as_libya_sub_language()680     fn it_recognizes_arabic_from_libya_as_libya_sub_language() {
681         assert_eq!(
682             super::from_lang_id(ARABIC_LIBYA).sub_language(),
683             SubLanguage::Libya
684         );
685     }
686 
687     #[test]
it_recognizes_arabic_from_algeria_as_arabic_language()688     fn it_recognizes_arabic_from_algeria_as_arabic_language() {
689         assert_eq!(
690             super::from_lang_id(ARABIC_ALGERIA).primary_language(),
691             PrimaryLanguage::Arabic
692         );
693     }
694 
695     #[test]
it_recognizes_arabic_from_algeria_as_algeria_sub_language()696     fn it_recognizes_arabic_from_algeria_as_algeria_sub_language() {
697         assert_eq!(
698             super::from_lang_id(ARABIC_ALGERIA).sub_language(),
699             SubLanguage::Algeria
700         );
701     }
702 
703     #[test]
it_recognizes_arabic_from_morocco_as_arabic_language()704     fn it_recognizes_arabic_from_morocco_as_arabic_language() {
705         assert_eq!(
706             super::from_lang_id(ARABIC_MOROCCO).primary_language(),
707             PrimaryLanguage::Arabic
708         );
709     }
710 
711     #[test]
it_recognizes_arabic_from_morocco_as_morocco_sub_language()712     fn it_recognizes_arabic_from_morocco_as_morocco_sub_language() {
713         assert_eq!(
714             super::from_lang_id(ARABIC_MOROCCO).sub_language(),
715             SubLanguage::Morocco
716         );
717     }
718 
719     #[test]
it_recognizes_arabic_from_tunisia_as_arabic_language()720     fn it_recognizes_arabic_from_tunisia_as_arabic_language() {
721         assert_eq!(
722             super::from_lang_id(ARABIC_TUNISIA).primary_language(),
723             PrimaryLanguage::Arabic
724         );
725     }
726 
727     #[test]
it_recognizes_arabic_from_tunisia_as_tunisia_sub_language()728     fn it_recognizes_arabic_from_tunisia_as_tunisia_sub_language() {
729         assert_eq!(
730             super::from_lang_id(ARABIC_TUNISIA).sub_language(),
731             SubLanguage::Tunisia
732         );
733     }
734 
735     #[test]
it_recognizes_arabic_from_oman_as_arabic_language()736     fn it_recognizes_arabic_from_oman_as_arabic_language() {
737         assert_eq!(
738             super::from_lang_id(ARABIC_OMAN).primary_language(),
739             PrimaryLanguage::Arabic
740         );
741     }
742 
743     #[test]
it_recognizes_arabic_from_oman_as_oman_sub_language()744     fn it_recognizes_arabic_from_oman_as_oman_sub_language() {
745         assert_eq!(
746             super::from_lang_id(ARABIC_OMAN).sub_language(),
747             SubLanguage::Oman
748         );
749     }
750 
751     #[test]
it_recognizes_arabic_from_yemen_as_arabic_language()752     fn it_recognizes_arabic_from_yemen_as_arabic_language() {
753         assert_eq!(
754             super::from_lang_id(ARABIC_YEMEN).primary_language(),
755             PrimaryLanguage::Arabic
756         );
757     }
758 
759     #[test]
it_recognizes_arabic_from_yemen_as_yemen_sub_language()760     fn it_recognizes_arabic_from_yemen_as_yemen_sub_language() {
761         assert_eq!(
762             super::from_lang_id(ARABIC_YEMEN).sub_language(),
763             SubLanguage::Yemen
764         );
765     }
766 
767     #[test]
it_recognizes_arabic_from_syria_as_arabic_language()768     fn it_recognizes_arabic_from_syria_as_arabic_language() {
769         assert_eq!(
770             super::from_lang_id(ARABIC_SYRIA).primary_language(),
771             PrimaryLanguage::Arabic
772         );
773     }
774 
775     #[test]
it_recognizes_arabic_from_syria_as_syria_sub_language()776     fn it_recognizes_arabic_from_syria_as_syria_sub_language() {
777         assert_eq!(
778             super::from_lang_id(ARABIC_SYRIA).sub_language(),
779             SubLanguage::Syria
780         );
781     }
782 
783     #[test]
it_recognizes_arabic_from_jordan_as_arabic_language()784     fn it_recognizes_arabic_from_jordan_as_arabic_language() {
785         assert_eq!(
786             super::from_lang_id(ARABIC_JORDAN).primary_language(),
787             PrimaryLanguage::Arabic
788         );
789     }
790 
791     #[test]
it_recognizes_arabic_from_jordan_as_jordan_sub_language()792     fn it_recognizes_arabic_from_jordan_as_jordan_sub_language() {
793         assert_eq!(
794             super::from_lang_id(ARABIC_JORDAN).sub_language(),
795             SubLanguage::Jordan
796         );
797     }
798 
799     #[test]
it_recognizes_arabic_from_lebanon_as_arabic_language()800     fn it_recognizes_arabic_from_lebanon_as_arabic_language() {
801         assert_eq!(
802             super::from_lang_id(ARABIC_LEBANON).primary_language(),
803             PrimaryLanguage::Arabic
804         );
805     }
806 
807     #[test]
it_recognizes_arabic_from_lebanon_as_lebanon_sub_language()808     fn it_recognizes_arabic_from_lebanon_as_lebanon_sub_language() {
809         assert_eq!(
810             super::from_lang_id(ARABIC_LEBANON).sub_language(),
811             SubLanguage::Lebanon
812         );
813     }
814 
815     #[test]
it_recognizes_arabic_from_kuwait_as_arabic_language()816     fn it_recognizes_arabic_from_kuwait_as_arabic_language() {
817         assert_eq!(
818             super::from_lang_id(ARABIC_KUWAIT).primary_language(),
819             PrimaryLanguage::Arabic
820         );
821     }
822 
823     #[test]
it_recognizes_arabic_from_kuwait_as_kuwait_sub_language()824     fn it_recognizes_arabic_from_kuwait_as_kuwait_sub_language() {
825         assert_eq!(
826             super::from_lang_id(ARABIC_KUWAIT).sub_language(),
827             SubLanguage::Kuwait
828         );
829     }
830 
831     #[test]
it_recognizes_arabic_from_uae_as_arabic_language()832     fn it_recognizes_arabic_from_uae_as_arabic_language() {
833         assert_eq!(
834             super::from_lang_id(ARABIC_UAE).primary_language(),
835             PrimaryLanguage::Arabic
836         );
837     }
838 
839     #[test]
it_recognizes_arabic_from_uae_as_uae_sub_language()840     fn it_recognizes_arabic_from_uae_as_uae_sub_language() {
841         assert_eq!(
842             super::from_lang_id(ARABIC_UAE).sub_language(),
843             SubLanguage::UnitedArabEmirates
844         );
845     }
846 
847     #[test]
it_recognizes_arabic_from_bahrain_as_arabic_language()848     fn it_recognizes_arabic_from_bahrain_as_arabic_language() {
849         assert_eq!(
850             super::from_lang_id(ARABIC_BAHRAIN).primary_language(),
851             PrimaryLanguage::Arabic
852         );
853     }
854 
855     #[test]
it_recognizes_arabic_from_bahrain_as_bahrain_sub_language()856     fn it_recognizes_arabic_from_bahrain_as_bahrain_sub_language() {
857         assert_eq!(
858             super::from_lang_id(ARABIC_BAHRAIN).sub_language(),
859             SubLanguage::Bahrain
860         );
861     }
862 
863     #[test]
it_recognizes_arabic_from_qatar_as_arabic_language()864     fn it_recognizes_arabic_from_qatar_as_arabic_language() {
865         assert_eq!(
866             super::from_lang_id(ARABIC_QATAR).primary_language(),
867             PrimaryLanguage::Arabic
868         );
869     }
870 
871     #[test]
it_recognizes_arabic_from_qatar_as_qatar_sub_language()872     fn it_recognizes_arabic_from_qatar_as_qatar_sub_language() {
873         assert_eq!(
874             super::from_lang_id(ARABIC_QATAR).sub_language(),
875             SubLanguage::Qatar
876         );
877     }
878 
879     #[test]
it_recognizes_armenian_as_armenian_language()880     fn it_recognizes_armenian_as_armenian_language() {
881         assert_eq!(
882             super::from_lang_id(ARMENIAN).primary_language(),
883             PrimaryLanguage::Armenian
884         );
885     }
886 
887     #[test]
it_recognizes_assamese_as_assamese_language()888     fn it_recognizes_assamese_as_assamese_language() {
889         assert_eq!(
890             super::from_lang_id(ASSAMESE).primary_language(),
891             PrimaryLanguage::Assamese
892         );
893     }
894 
895     #[test]
it_recognizes_azeri_latin_as_azeri_language()896     fn it_recognizes_azeri_latin_as_azeri_language() {
897         assert_eq!(
898             super::from_lang_id(AZERI_LATIN).primary_language(),
899             PrimaryLanguage::Azeri
900         );
901     }
902 
903     #[test]
it_recognizes_azeri_latin_as_latin_sub_language()904     fn it_recognizes_azeri_latin_as_latin_sub_language() {
905         assert_eq!(
906             super::from_lang_id(AZERI_LATIN).sub_language(),
907             SubLanguage::Latin
908         );
909     }
910 
911     #[test]
it_recognizes_azeri_cyrillic_as_azeri_language()912     fn it_recognizes_azeri_cyrillic_as_azeri_language() {
913         assert_eq!(
914             super::from_lang_id(AZERI_CYRILLIC).primary_language(),
915             PrimaryLanguage::Azeri
916         );
917     }
918 
919     #[test]
it_recognizes_azeri_cyrillic_as_cyrillic_sub_language()920     fn it_recognizes_azeri_cyrillic_as_cyrillic_sub_language() {
921         assert_eq!(
922             super::from_lang_id(AZERI_CYRILLIC).sub_language(),
923             SubLanguage::Cyrillic
924         );
925     }
926 
927     #[test]
it_recognizes_basque_as_basque_language()928     fn it_recognizes_basque_as_basque_language() {
929         assert_eq!(
930             super::from_lang_id(BASQUE).primary_language(),
931             PrimaryLanguage::Basque
932         );
933     }
934 
935     #[test]
it_recognizes_belarussian_as_belarussian_language()936     fn it_recognizes_belarussian_as_belarussian_language() {
937         assert_eq!(
938             super::from_lang_id(BELARUSSIAN).primary_language(),
939             PrimaryLanguage::Belarussian
940         );
941     }
942 
943     #[test]
it_recognizes_bengali_as_bengali_language()944     fn it_recognizes_bengali_as_bengali_language() {
945         assert_eq!(
946             super::from_lang_id(BENGALI).primary_language(),
947             PrimaryLanguage::Bengali
948         );
949     }
950 
951     #[test]
it_recognizes_bulgarian_as_bulgarian_language()952     fn it_recognizes_bulgarian_as_bulgarian_language() {
953         assert_eq!(
954             super::from_lang_id(BULGARIAN).primary_language(),
955             PrimaryLanguage::Bulgarian
956         );
957     }
958 
959     #[test]
it_recognizes_burmese_as_burmese_language()960     fn it_recognizes_burmese_as_burmese_language() {
961         assert_eq!(
962             super::from_lang_id(BURMESE).primary_language(),
963             PrimaryLanguage::Burmese
964         );
965     }
966 
967     #[test]
it_recognizes_catalan_as_catalan_language()968     fn it_recognizes_catalan_as_catalan_language() {
969         assert_eq!(
970             super::from_lang_id(CATALAN).primary_language(),
971             PrimaryLanguage::Catalan
972         );
973     }
974 
975     #[test]
it_recognizes_chinese_from_taiwan_as_chinese_language()976     fn it_recognizes_chinese_from_taiwan_as_chinese_language() {
977         assert_eq!(
978             super::from_lang_id(CHINESE_TAIWAN).primary_language(),
979             PrimaryLanguage::Chinese
980         );
981     }
982 
983     #[test]
it_recognizes_chinese_from_taiwan_as_taiwan_sub_language()984     fn it_recognizes_chinese_from_taiwan_as_taiwan_sub_language() {
985         assert_eq!(
986             super::from_lang_id(CHINESE_TAIWAN).sub_language(),
987             SubLanguage::Taiwan
988         );
989     }
990 
991     #[test]
it_recognizes_chinese_from_china_as_chinese_language()992     fn it_recognizes_chinese_from_china_as_chinese_language() {
993         assert_eq!(
994             super::from_lang_id(CHINESE_CHINA).primary_language(),
995             PrimaryLanguage::Chinese
996         );
997     }
998 
999     #[test]
it_recognizes_chinese_from_china_as_china_sub_language()1000     fn it_recognizes_chinese_from_china_as_china_sub_language() {
1001         assert_eq!(
1002             super::from_lang_id(CHINESE_CHINA).sub_language(),
1003             SubLanguage::China
1004         );
1005     }
1006 
1007     #[test]
it_recognizes_chinese_from_hong_kong_as_chinese_language()1008     fn it_recognizes_chinese_from_hong_kong_as_chinese_language() {
1009         assert_eq!(
1010             super::from_lang_id(CHINESE_HONG_KONG).primary_language(),
1011             PrimaryLanguage::Chinese
1012         );
1013     }
1014 
1015     #[test]
it_recognizes_chinese_from_hong_kong_as_hong_kong_sub_language()1016     fn it_recognizes_chinese_from_hong_kong_as_hong_kong_sub_language() {
1017         assert_eq!(
1018             super::from_lang_id(CHINESE_HONG_KONG).sub_language(),
1019             SubLanguage::HongKong
1020         );
1021     }
1022 
1023     #[test]
it_recognizes_chinese_from_singapore_as_chinese_language()1024     fn it_recognizes_chinese_from_singapore_as_chinese_language() {
1025         assert_eq!(
1026             super::from_lang_id(CHINESE_SINGAPORE).primary_language(),
1027             PrimaryLanguage::Chinese
1028         );
1029     }
1030 
1031     #[test]
it_recognizes_chinese_from_singapore_as_singapore_sub_language()1032     fn it_recognizes_chinese_from_singapore_as_singapore_sub_language() {
1033         assert_eq!(
1034             super::from_lang_id(CHINESE_SINGAPORE).sub_language(),
1035             SubLanguage::Singapore
1036         );
1037     }
1038 
1039     #[test]
it_recognizes_chinese_from_macau_as_chinese_language()1040     fn it_recognizes_chinese_from_macau_as_chinese_language() {
1041         assert_eq!(
1042             super::from_lang_id(CHINESE_MACAU).primary_language(),
1043             PrimaryLanguage::Chinese
1044         );
1045     }
1046 
1047     #[test]
it_recognizes_chinese_from_macau_as_macau_sub_language()1048     fn it_recognizes_chinese_from_macau_as_macau_sub_language() {
1049         assert_eq!(
1050             super::from_lang_id(CHINESE_MACAU).sub_language(),
1051             SubLanguage::Macau
1052         );
1053     }
1054 
1055     #[test]
it_recognizes_croatian_as_croatian_language()1056     fn it_recognizes_croatian_as_croatian_language() {
1057         assert_eq!(
1058             super::from_lang_id(CROATIAN).primary_language(),
1059             PrimaryLanguage::Croatian
1060         );
1061     }
1062 
1063     #[test]
it_recognizes_czech_as_czech_language()1064     fn it_recognizes_czech_as_czech_language() {
1065         assert_eq!(
1066             super::from_lang_id(CZECH).primary_language(),
1067             PrimaryLanguage::Czech
1068         );
1069     }
1070 
1071     #[test]
it_recognizes_danish_as_danish_language()1072     fn it_recognizes_danish_as_danish_language() {
1073         assert_eq!(
1074             super::from_lang_id(DANISH).primary_language(),
1075             PrimaryLanguage::Danish
1076         );
1077     }
1078 
1079     #[test]
it_recognizes_dutch_from_netherlands_as_dutch_language()1080     fn it_recognizes_dutch_from_netherlands_as_dutch_language() {
1081         assert_eq!(
1082             super::from_lang_id(DUTCH_NETHERLANDS).primary_language(),
1083             PrimaryLanguage::Dutch
1084         );
1085     }
1086 
1087     #[test]
it_recognizes_dutch_from_netherlands_as_netherlands_sub_language()1088     fn it_recognizes_dutch_from_netherlands_as_netherlands_sub_language() {
1089         assert_eq!(
1090             super::from_lang_id(DUTCH_NETHERLANDS).sub_language(),
1091             SubLanguage::Netherlands
1092         );
1093     }
1094 
1095     #[test]
it_recognizes_dutch_from_belgium_as_dutch_language()1096     fn it_recognizes_dutch_from_belgium_as_dutch_language() {
1097         assert_eq!(
1098             super::from_lang_id(DUTCH_BELGIUM).primary_language(),
1099             PrimaryLanguage::Dutch
1100         );
1101     }
1102 
1103     #[test]
it_recognizes_dutch_from_belgium_as_belgium_sub_language()1104     fn it_recognizes_dutch_from_belgium_as_belgium_sub_language() {
1105         assert_eq!(
1106             super::from_lang_id(DUTCH_BELGIUM).sub_language(),
1107             SubLanguage::Belgium
1108         );
1109     }
1110 
1111     #[test]
it_recognizes_english_from_united_states_as_english_language()1112     fn it_recognizes_english_from_united_states_as_english_language() {
1113         assert_eq!(
1114             super::from_lang_id(ENGLISH_UNITED_STATES).primary_language(),
1115             PrimaryLanguage::English
1116         );
1117     }
1118 
1119     #[test]
it_recognizes_english_from_united_states_as_united_states_sub_language()1120     fn it_recognizes_english_from_united_states_as_united_states_sub_language() {
1121         assert_eq!(
1122             super::from_lang_id(ENGLISH_UNITED_STATES).sub_language(),
1123             SubLanguage::UnitedStates
1124         );
1125     }
1126 
1127     #[test]
it_recognizes_english_from_united_kingdom_as_english_language()1128     fn it_recognizes_english_from_united_kingdom_as_english_language() {
1129         assert_eq!(
1130             super::from_lang_id(ENGLISH_UNITED_KINGDOM).primary_language(),
1131             PrimaryLanguage::English
1132         );
1133     }
1134 
1135     #[test]
it_recognizes_english_from_united_kingdom_as_united_kingdom_sub_language()1136     fn it_recognizes_english_from_united_kingdom_as_united_kingdom_sub_language() {
1137         assert_eq!(
1138             super::from_lang_id(ENGLISH_UNITED_KINGDOM).sub_language(),
1139             SubLanguage::UnitedKingdom
1140         );
1141     }
1142 
1143     #[test]
it_recognizes_english_from_australia_as_english_language()1144     fn it_recognizes_english_from_australia_as_english_language() {
1145         assert_eq!(
1146             super::from_lang_id(ENGLISH_AUSTRALIAN).primary_language(),
1147             PrimaryLanguage::English
1148         );
1149     }
1150 
1151     #[test]
it_recognizes_english_from_australia_as_australia_sub_language()1152     fn it_recognizes_english_from_australia_as_australia_sub_language() {
1153         assert_eq!(
1154             super::from_lang_id(ENGLISH_AUSTRALIAN).sub_language(),
1155             SubLanguage::Australia
1156         );
1157     }
1158 
1159     #[test]
it_recognizes_english_from_canada_as_english_language()1160     fn it_recognizes_english_from_canada_as_english_language() {
1161         assert_eq!(
1162             super::from_lang_id(ENGLISH_CANADIAN).primary_language(),
1163             PrimaryLanguage::English
1164         );
1165     }
1166 
1167     #[test]
it_recognizes_english_from_canada_as_canada_sub_language()1168     fn it_recognizes_english_from_canada_as_canada_sub_language() {
1169         assert_eq!(
1170             super::from_lang_id(ENGLISH_CANADIAN).sub_language(),
1171             SubLanguage::Canada
1172         );
1173     }
1174 
1175     #[test]
it_recognizes_english_from_new_zealand_as_english_language()1176     fn it_recognizes_english_from_new_zealand_as_english_language() {
1177         assert_eq!(
1178             super::from_lang_id(ENGLISH_NEW_ZEALAND).primary_language(),
1179             PrimaryLanguage::English
1180         );
1181     }
1182 
1183     #[test]
it_recognizes_english_from_new_zealand_as_new_zealand_language()1184     fn it_recognizes_english_from_new_zealand_as_new_zealand_language() {
1185         assert_eq!(
1186             super::from_lang_id(ENGLISH_NEW_ZEALAND).sub_language(),
1187             SubLanguage::NewZealand
1188         );
1189     }
1190 
1191     #[test]
it_recognizes_english_from_ireland_as_english_language()1192     fn it_recognizes_english_from_ireland_as_english_language() {
1193         assert_eq!(
1194             super::from_lang_id(ENGLISH_IRELAND).primary_language(),
1195             PrimaryLanguage::English
1196         );
1197     }
1198 
1199     #[test]
it_recognizes_english_from_ireland_as_ireland_sub_language()1200     fn it_recognizes_english_from_ireland_as_ireland_sub_language() {
1201         assert_eq!(
1202             super::from_lang_id(ENGLISH_IRELAND).sub_language(),
1203             SubLanguage::Ireland
1204         );
1205     }
1206 
1207     #[test]
it_recognizes_english_from_south_africa_as_english_language()1208     fn it_recognizes_english_from_south_africa_as_english_language() {
1209         assert_eq!(
1210             super::from_lang_id(ENGLISH_SOUTH_AFRICA).primary_language(),
1211             PrimaryLanguage::English
1212         );
1213     }
1214 
1215     #[test]
it_recognizes_english_from_south_africa_as_south_africa_sub_language()1216     fn it_recognizes_english_from_south_africa_as_south_africa_sub_language() {
1217         assert_eq!(
1218             super::from_lang_id(ENGLISH_SOUTH_AFRICA).sub_language(),
1219             SubLanguage::SouthAfrica
1220         );
1221     }
1222 
1223     #[test]
it_recognizes_english_from_jamaica_as_english_language()1224     fn it_recognizes_english_from_jamaica_as_english_language() {
1225         assert_eq!(
1226             super::from_lang_id(ENGLISH_JAMAICA).primary_language(),
1227             PrimaryLanguage::English
1228         );
1229     }
1230 
1231     #[test]
it_recognizes_english_from_jamaica_as_jamaica_sub_language()1232     fn it_recognizes_english_from_jamaica_as_jamaica_sub_language() {
1233         assert_eq!(
1234             super::from_lang_id(ENGLISH_JAMAICA).sub_language(),
1235             SubLanguage::Jamaica
1236         );
1237     }
1238 
1239     #[test]
it_recognizes_english_from_caribbean_as_english_language()1240     fn it_recognizes_english_from_caribbean_as_english_language() {
1241         assert_eq!(
1242             super::from_lang_id(ENGLISH_CARIBBEAN).primary_language(),
1243             PrimaryLanguage::English
1244         );
1245     }
1246 
1247     #[test]
it_recognizes_english_from_caribbean_as_caribbean_sub_language()1248     fn it_recognizes_english_from_caribbean_as_caribbean_sub_language() {
1249         assert_eq!(
1250             super::from_lang_id(ENGLISH_CARIBBEAN).sub_language(),
1251             SubLanguage::Caribbean
1252         );
1253     }
1254 
1255     #[test]
it_recognizes_english_from_belize_as_english_language()1256     fn it_recognizes_english_from_belize_as_english_language() {
1257         assert_eq!(
1258             super::from_lang_id(ENGLISH_BELIZE).primary_language(),
1259             PrimaryLanguage::English
1260         );
1261     }
1262 
1263     #[test]
it_recognizes_english_from_belize_as_belize_sub_language()1264     fn it_recognizes_english_from_belize_as_belize_sub_language() {
1265         assert_eq!(
1266             super::from_lang_id(ENGLISH_BELIZE).sub_language(),
1267             SubLanguage::Belize
1268         );
1269     }
1270 
1271     #[test]
it_recognizes_english_from_trinidad_as_english_language()1272     fn it_recognizes_english_from_trinidad_as_english_language() {
1273         assert_eq!(
1274             super::from_lang_id(ENGLISH_TRINIDAD).primary_language(),
1275             PrimaryLanguage::English
1276         );
1277     }
1278 
1279     #[test]
it_recognizes_english_from_trinidad_as_trinidad_sub_language()1280     fn it_recognizes_english_from_trinidad_as_trinidad_sub_language() {
1281         assert_eq!(
1282             super::from_lang_id(ENGLISH_TRINIDAD).sub_language(),
1283             SubLanguage::Trinidad
1284         );
1285     }
1286 
1287     #[test]
it_recognizes_english_from_zimbabwe_as_english_language()1288     fn it_recognizes_english_from_zimbabwe_as_english_language() {
1289         assert_eq!(
1290             super::from_lang_id(ENGLISH_ZIMBABWE).primary_language(),
1291             PrimaryLanguage::English
1292         );
1293     }
1294 
1295     #[test]
it_recognizes_english_from_zimbabwe_as_zimbabwe_sub_language()1296     fn it_recognizes_english_from_zimbabwe_as_zimbabwe_sub_language() {
1297         assert_eq!(
1298             super::from_lang_id(ENGLISH_ZIMBABWE).sub_language(),
1299             SubLanguage::Zimbabwe
1300         );
1301     }
1302 
1303     #[test]
it_recognizes_english_from_philippines_as_english_language()1304     fn it_recognizes_english_from_philippines_as_english_language() {
1305         assert_eq!(
1306             super::from_lang_id(ENGLISH_PHILIPPINES).primary_language(),
1307             PrimaryLanguage::English
1308         );
1309     }
1310 
1311     #[test]
it_recognizes_english_from_philippines_as_philippines_sub_language()1312     fn it_recognizes_english_from_philippines_as_philippines_sub_language() {
1313         assert_eq!(
1314             super::from_lang_id(ENGLISH_PHILIPPINES).sub_language(),
1315             SubLanguage::Philippines
1316         );
1317     }
1318 
1319     #[test]
it_recognizes_estonian_as_estonian_language()1320     fn it_recognizes_estonian_as_estonian_language() {
1321         assert_eq!(
1322             super::from_lang_id(ESTONIAN).primary_language(),
1323             PrimaryLanguage::Estonian
1324         );
1325     }
1326 
1327     #[test]
it_recognizes_faeroese_as_faeroese_language()1328     fn it_recognizes_faeroese_as_faeroese_language() {
1329         assert_eq!(
1330             super::from_lang_id(FAEROESE).primary_language(),
1331             PrimaryLanguage::Faeroese
1332         );
1333     }
1334 
1335     #[test]
it_recognizes_farsi_as_farsi_language()1336     fn it_recognizes_farsi_as_farsi_language() {
1337         assert_eq!(
1338             super::from_lang_id(FARSI).primary_language(),
1339             PrimaryLanguage::Farsi
1340         );
1341     }
1342 
1343     #[test]
it_recognizes_finnish_as_finnish_language()1344     fn it_recognizes_finnish_as_finnish_language() {
1345         assert_eq!(
1346             super::from_lang_id(FINNISH).primary_language(),
1347             PrimaryLanguage::Finnish
1348         );
1349     }
1350 
1351     #[test]
it_recognizes_french_standard_as_french_language()1352     fn it_recognizes_french_standard_as_french_language() {
1353         assert_eq!(
1354             super::from_lang_id(FRENCH_STANDARD).primary_language(),
1355             PrimaryLanguage::French
1356         );
1357     }
1358 
1359     #[test]
it_recognizes_french_standard_as_standard_sub_language()1360     fn it_recognizes_french_standard_as_standard_sub_language() {
1361         assert_eq!(
1362             super::from_lang_id(FRENCH_STANDARD).sub_language(),
1363             SubLanguage::Standard
1364         );
1365     }
1366 
1367     #[test]
it_recognizes_french_from_belgium_as_french_language()1368     fn it_recognizes_french_from_belgium_as_french_language() {
1369         assert_eq!(
1370             super::from_lang_id(FRENCH_BELGIAN).primary_language(),
1371             PrimaryLanguage::French
1372         );
1373     }
1374 
1375     #[test]
it_recognizes_french_from_belgium_as_belgium_sub_language()1376     fn it_recognizes_french_from_belgium_as_belgium_sub_language() {
1377         assert_eq!(
1378             super::from_lang_id(FRENCH_BELGIAN).sub_language(),
1379             SubLanguage::Belgium
1380         );
1381     }
1382 
1383     #[test]
it_recognizes_french_from_canada_as_french_language()1384     fn it_recognizes_french_from_canada_as_french_language() {
1385         assert_eq!(
1386             super::from_lang_id(FRENCH_CANADIAN).primary_language(),
1387             PrimaryLanguage::French
1388         );
1389     }
1390 
1391     #[test]
it_recognizes_french_from_canada_as_canada_sub_language()1392     fn it_recognizes_french_from_canada_as_canada_sub_language() {
1393         assert_eq!(
1394             super::from_lang_id(FRENCH_CANADIAN).sub_language(),
1395             SubLanguage::Canada
1396         );
1397     }
1398 
1399     #[test]
it_recognizes_french_from_switzerland_as_french_language()1400     fn it_recognizes_french_from_switzerland_as_french_language() {
1401         assert_eq!(
1402             super::from_lang_id(FRENCH_SWITZERLAND).primary_language(),
1403             PrimaryLanguage::French
1404         );
1405     }
1406 
1407     #[test]
it_recognizes_french_from_switzerland_as_switzerland_sub_language()1408     fn it_recognizes_french_from_switzerland_as_switzerland_sub_language() {
1409         assert_eq!(
1410             super::from_lang_id(FRENCH_SWITZERLAND).sub_language(),
1411             SubLanguage::Switzerland
1412         );
1413     }
1414 
1415     #[test]
it_recognizes_french_from_luxembourg_as_french_language()1416     fn it_recognizes_french_from_luxembourg_as_french_language() {
1417         assert_eq!(
1418             super::from_lang_id(FRENCH_LUXEMBOURG).primary_language(),
1419             PrimaryLanguage::French
1420         );
1421     }
1422 
1423     #[test]
it_recognizes_french_from_luxembourg_as_luxembourg_sub_language()1424     fn it_recognizes_french_from_luxembourg_as_luxembourg_sub_language() {
1425         assert_eq!(
1426             super::from_lang_id(FRENCH_LUXEMBOURG).sub_language(),
1427             SubLanguage::Luxembourg
1428         );
1429     }
1430 
1431     #[test]
it_recognizes_french_from_monaco_as_french_language()1432     fn it_recognizes_french_from_monaco_as_french_language() {
1433         assert_eq!(
1434             super::from_lang_id(FRENCH_MONACO).primary_language(),
1435             PrimaryLanguage::French
1436         );
1437     }
1438 
1439     #[test]
it_recognizes_french_from_monaco_as_monaco_sub_language()1440     fn it_recognizes_french_from_monaco_as_monaco_sub_language() {
1441         assert_eq!(
1442             super::from_lang_id(FRENCH_MONACO).sub_language(),
1443             SubLanguage::Monaco
1444         );
1445     }
1446 
1447     #[test]
it_recognizes_georgian_as_georgian_language()1448     fn it_recognizes_georgian_as_georgian_language() {
1449         assert_eq!(
1450             super::from_lang_id(GEORGIAN).primary_language(),
1451             PrimaryLanguage::Georgian
1452         );
1453     }
1454 
1455     #[test]
it_recognizes_german_standard_as_german_language()1456     fn it_recognizes_german_standard_as_german_language() {
1457         assert_eq!(
1458             super::from_lang_id(GERMAN_STANDARD).primary_language(),
1459             PrimaryLanguage::German
1460         );
1461     }
1462 
1463     #[test]
it_recognizes_german_standard_as_standard_sub_language()1464     fn it_recognizes_german_standard_as_standard_sub_language() {
1465         assert_eq!(
1466             super::from_lang_id(GERMAN_STANDARD).sub_language(),
1467             SubLanguage::Standard
1468         );
1469     }
1470 
1471     #[test]
it_recognizes_german_from_switzerland_as_german_language()1472     fn it_recognizes_german_from_switzerland_as_german_language() {
1473         assert_eq!(
1474             super::from_lang_id(GERMAN_SWITZERLAND).primary_language(),
1475             PrimaryLanguage::German
1476         );
1477     }
1478 
1479     #[test]
it_recognizes_german_from_switzerland_as_switzerland_sub_language()1480     fn it_recognizes_german_from_switzerland_as_switzerland_sub_language() {
1481         assert_eq!(
1482             super::from_lang_id(GERMAN_SWITZERLAND).sub_language(),
1483             SubLanguage::Switzerland
1484         );
1485     }
1486 
1487     #[test]
it_recognizes_german_from_austria_as_german_language()1488     fn it_recognizes_german_from_austria_as_german_language() {
1489         assert_eq!(
1490             super::from_lang_id(GERMAN_AUSTRIA).primary_language(),
1491             PrimaryLanguage::German
1492         );
1493     }
1494 
1495     #[test]
it_recognizes_german_from_austria_as_austria_sub_language()1496     fn it_recognizes_german_from_austria_as_austria_sub_language() {
1497         assert_eq!(
1498             super::from_lang_id(GERMAN_AUSTRIA).sub_language(),
1499             SubLanguage::Austria
1500         );
1501     }
1502 
1503     #[test]
it_recognizes_german_from_luxembourg_as_german_language()1504     fn it_recognizes_german_from_luxembourg_as_german_language() {
1505         assert_eq!(
1506             super::from_lang_id(GERMAN_LUXEMBOURG).primary_language(),
1507             PrimaryLanguage::German
1508         );
1509     }
1510 
1511     #[test]
it_recognizes_german_from_luxembourg_as_luxembourg_sub_language()1512     fn it_recognizes_german_from_luxembourg_as_luxembourg_sub_language() {
1513         assert_eq!(
1514             super::from_lang_id(GERMAN_LUXEMBOURG).sub_language(),
1515             SubLanguage::Luxembourg
1516         );
1517     }
1518 
1519     #[test]
it_recognizes_german_from_liechtenstein_as_german_language()1520     fn it_recognizes_german_from_liechtenstein_as_german_language() {
1521         assert_eq!(
1522             super::from_lang_id(GERMAN_LIECHTENSTEIN).primary_language(),
1523             PrimaryLanguage::German
1524         );
1525     }
1526 
1527     #[test]
it_recognizes_german_from_liechtenstein_as_liechtenstein_sub_language()1528     fn it_recognizes_german_from_liechtenstein_as_liechtenstein_sub_language() {
1529         assert_eq!(
1530             super::from_lang_id(GERMAN_LIECHTENSTEIN).sub_language(),
1531             SubLanguage::Liechtenstein
1532         );
1533     }
1534 
1535     #[test]
it_recognizes_greek_as_greek_language()1536     fn it_recognizes_greek_as_greek_language() {
1537         assert_eq!(
1538             super::from_lang_id(GREEK).primary_language(),
1539             PrimaryLanguage::Greek
1540         );
1541     }
1542 
1543     #[test]
it_recognizes_gujarati_as_gujarati_language()1544     fn it_recognizes_gujarati_as_gujarati_language() {
1545         assert_eq!(
1546             super::from_lang_id(GUJARATI).primary_language(),
1547             PrimaryLanguage::Gujarati
1548         );
1549     }
1550 
1551     #[test]
it_recognizes_hebrew_as_hebrew_language()1552     fn it_recognizes_hebrew_as_hebrew_language() {
1553         assert_eq!(
1554             super::from_lang_id(HEBREW).primary_language(),
1555             PrimaryLanguage::Hebrew
1556         );
1557     }
1558 
1559     #[test]
it_recognizes_hindi_as_hindi_language()1560     fn it_recognizes_hindi_as_hindi_language() {
1561         assert_eq!(
1562             super::from_lang_id(HINDI).primary_language(),
1563             PrimaryLanguage::Hindi
1564         );
1565     }
1566 
1567     #[test]
it_recognizes_hungarian_as_hungarian_language()1568     fn it_recognizes_hungarian_as_hungarian_language() {
1569         assert_eq!(
1570             super::from_lang_id(HUNGARIAN).primary_language(),
1571             PrimaryLanguage::Hungarian
1572         );
1573     }
1574 
1575     #[test]
it_recognizes_icelandic_as_icelandic_language()1576     fn it_recognizes_icelandic_as_icelandic_language() {
1577         assert_eq!(
1578             super::from_lang_id(ICELANDIC).primary_language(),
1579             PrimaryLanguage::Icelandic
1580         );
1581     }
1582 
1583     #[test]
it_recognizes_indonesian_as_indonesian_language()1584     fn it_recognizes_indonesian_as_indonesian_language() {
1585         assert_eq!(
1586             super::from_lang_id(INDONESIAN).primary_language(),
1587             PrimaryLanguage::Indonesian
1588         );
1589     }
1590 
1591     #[test]
it_recognizes_italian_standard_as_italian_language()1592     fn it_recognizes_italian_standard_as_italian_language() {
1593         assert_eq!(
1594             super::from_lang_id(ITALIAN_STANDARD).primary_language(),
1595             PrimaryLanguage::Italian
1596         );
1597     }
1598 
1599     #[test]
it_recognizes_italian_standard_as_standard_sub_language()1600     fn it_recognizes_italian_standard_as_standard_sub_language() {
1601         assert_eq!(
1602             super::from_lang_id(ITALIAN_STANDARD).sub_language(),
1603             SubLanguage::Standard
1604         );
1605     }
1606 
1607     #[test]
it_recognizes_italian_from_switzerland_as_italian_language()1608     fn it_recognizes_italian_from_switzerland_as_italian_language() {
1609         assert_eq!(
1610             super::from_lang_id(ITALIAN_SWITZERLAND).primary_language(),
1611             PrimaryLanguage::Italian
1612         );
1613     }
1614 
1615     #[test]
it_recognizes_italian_from_switzerland_as_switzerland_sub_language()1616     fn it_recognizes_italian_from_switzerland_as_switzerland_sub_language() {
1617         assert_eq!(
1618             super::from_lang_id(ITALIAN_SWITZERLAND).sub_language(),
1619             SubLanguage::Switzerland
1620         );
1621     }
1622 
1623     #[test]
it_recognizes_japanese_as_japanese_language()1624     fn it_recognizes_japanese_as_japanese_language() {
1625         assert_eq!(
1626             super::from_lang_id(JAPANESE).primary_language(),
1627             PrimaryLanguage::Japanese
1628         );
1629     }
1630 
1631     #[test]
it_recognizes_kannada_as_kannada_language()1632     fn it_recognizes_kannada_as_kannada_language() {
1633         assert_eq!(
1634             super::from_lang_id(KANNADA).primary_language(),
1635             PrimaryLanguage::Kannada
1636         );
1637     }
1638 
1639     #[test]
it_recognizes_kashmiri_as_kashmiri_language()1640     fn it_recognizes_kashmiri_as_kashmiri_language() {
1641         assert_eq!(
1642             super::from_lang_id(KASHMIRI_INDIA).primary_language(),
1643             PrimaryLanguage::Kashmiri
1644         );
1645     }
1646 
1647     #[test]
it_recognizes_kazakh_as_kazakh_language()1648     fn it_recognizes_kazakh_as_kazakh_language() {
1649         assert_eq!(
1650             super::from_lang_id(KAZAKH).primary_language(),
1651             PrimaryLanguage::Kazakh
1652         );
1653     }
1654 
1655     #[test]
it_recognizes_konkani_as_konkani_language()1656     fn it_recognizes_konkani_as_konkani_language() {
1657         assert_eq!(
1658             super::from_lang_id(KONKANI).primary_language(),
1659             PrimaryLanguage::Konkani
1660         );
1661     }
1662 
1663     #[test]
it_recognizes_korean_as_korean_language()1664     fn it_recognizes_korean_as_korean_language() {
1665         assert_eq!(
1666             super::from_lang_id(KOREAN).primary_language(),
1667             PrimaryLanguage::Korean
1668         );
1669     }
1670 
1671     #[test]
it_recognizes_korean_as_standard_sub_language()1672     fn it_recognizes_korean_as_standard_sub_language() {
1673         assert_eq!(
1674             super::from_lang_id(KOREAN).sub_language(),
1675             SubLanguage::Standard
1676         );
1677     }
1678 
1679     #[test]
it_recognizes_korean_johab_as_korean_language()1680     fn it_recognizes_korean_johab_as_korean_language() {
1681         assert_eq!(
1682             super::from_lang_id(KOREAN_JOHAB).primary_language(),
1683             PrimaryLanguage::Korean
1684         );
1685     }
1686 
1687     #[test]
it_recognizes_korean_johab_as_johab_sub_language()1688     fn it_recognizes_korean_johab_as_johab_sub_language() {
1689         assert_eq!(
1690             super::from_lang_id(KOREAN_JOHAB).sub_language(),
1691             SubLanguage::Johab
1692         );
1693     }
1694 
1695     #[test]
it_recognizes_latvian_as_latvian_language()1696     fn it_recognizes_latvian_as_latvian_language() {
1697         assert_eq!(
1698             super::from_lang_id(LATVIAN).primary_language(),
1699             PrimaryLanguage::Latvian
1700         );
1701     }
1702 
1703     #[test]
it_recognizes_lithuanian_as_lithuanian_language()1704     fn it_recognizes_lithuanian_as_lithuanian_language() {
1705         assert_eq!(
1706             super::from_lang_id(LITHUANIAN).primary_language(),
1707             PrimaryLanguage::Lithuanian
1708         );
1709     }
1710 
1711     #[test]
it_recognizes_lithuanian_as_standard_sub_language()1712     fn it_recognizes_lithuanian_as_standard_sub_language() {
1713         assert_eq!(
1714             super::from_lang_id(LITHUANIAN).sub_language(),
1715             SubLanguage::Standard
1716         );
1717     }
1718 
1719     #[test]
it_recognizes_lithuanian_classic_as_lithuanian_language()1720     fn it_recognizes_lithuanian_classic_as_lithuanian_language() {
1721         assert_eq!(
1722             super::from_lang_id(LITHUANIAN_CLASSIC).primary_language(),
1723             PrimaryLanguage::Lithuanian
1724         );
1725     }
1726 
1727     #[test]
it_recognizes_lithuanian_classic_as_classic_sub_language()1728     fn it_recognizes_lithuanian_classic_as_classic_sub_language() {
1729         assert_eq!(
1730             super::from_lang_id(LITHUANIAN_CLASSIC).sub_language(),
1731             SubLanguage::Classic
1732         );
1733     }
1734 
1735     #[test]
it_recognizes_macedonian_as_macedonian_language()1736     fn it_recognizes_macedonian_as_macedonian_language() {
1737         assert_eq!(
1738             super::from_lang_id(MACEDONIAN).primary_language(),
1739             PrimaryLanguage::Macedonian
1740         );
1741     }
1742 
1743     #[test]
it_recognizes_malay_from_malaysia_as_malay_language()1744     fn it_recognizes_malay_from_malaysia_as_malay_language() {
1745         assert_eq!(
1746             super::from_lang_id(MALAY_MALAYSIAN).primary_language(),
1747             PrimaryLanguage::Malay
1748         );
1749     }
1750 
1751     #[test]
it_recognizes_malay_from_malaysia_as_malaysia_sub_language()1752     fn it_recognizes_malay_from_malaysia_as_malaysia_sub_language() {
1753         assert_eq!(
1754             super::from_lang_id(MALAY_MALAYSIAN).sub_language(),
1755             SubLanguage::Malaysia
1756         );
1757     }
1758 
1759     #[test]
it_recognizes_malay_from_brunei_darussalam_as_malay_language()1760     fn it_recognizes_malay_from_brunei_darussalam_as_malay_language() {
1761         assert_eq!(
1762             super::from_lang_id(MALAY_BRUNEI_DARUSSALAM).primary_language(),
1763             PrimaryLanguage::Malay
1764         );
1765     }
1766 
1767     #[test]
it_recognizes_malay_from_brunei_darussalam_as_brunei_darussalam_sub_language()1768     fn it_recognizes_malay_from_brunei_darussalam_as_brunei_darussalam_sub_language() {
1769         assert_eq!(
1770             super::from_lang_id(MALAY_BRUNEI_DARUSSALAM).sub_language(),
1771             SubLanguage::BruneiDarussalam
1772         );
1773     }
1774 
1775     #[test]
it_recognizes_malayalam_as_malayalam_language()1776     fn it_recognizes_malayalam_as_malayalam_language() {
1777         assert_eq!(
1778             super::from_lang_id(MALAYALAM).primary_language(),
1779             PrimaryLanguage::Malayalam
1780         );
1781     }
1782 
1783     #[test]
it_recognizes_manipuri_as_manipuri_language()1784     fn it_recognizes_manipuri_as_manipuri_language() {
1785         assert_eq!(
1786             super::from_lang_id(MANIPURI).primary_language(),
1787             PrimaryLanguage::Manipuri
1788         );
1789     }
1790 
1791     #[test]
it_recognizes_marathi_as_marathi_language()1792     fn it_recognizes_marathi_as_marathi_language() {
1793         assert_eq!(
1794             super::from_lang_id(MARATHI).primary_language(),
1795             PrimaryLanguage::Marathi
1796         );
1797     }
1798 
1799     #[test]
it_recognizes_nepali_as_nepali_language()1800     fn it_recognizes_nepali_as_nepali_language() {
1801         assert_eq!(
1802             super::from_lang_id(NEPALI_INDIA).primary_language(),
1803             PrimaryLanguage::Nepali
1804         );
1805     }
1806 
1807     #[test]
it_recognizes_norwegian_bokmal_as_norwegian_language()1808     fn it_recognizes_norwegian_bokmal_as_norwegian_language() {
1809         assert_eq!(
1810             super::from_lang_id(NORWEGIAN_BOKMAL).primary_language(),
1811             PrimaryLanguage::Norwegian
1812         );
1813     }
1814 
1815     #[test]
it_recognizes_norwegian_bokmal_as_bokmal_sub_language()1816     fn it_recognizes_norwegian_bokmal_as_bokmal_sub_language() {
1817         assert_eq!(
1818             super::from_lang_id(NORWEGIAN_BOKMAL).sub_language(),
1819             SubLanguage::Bokmal
1820         );
1821     }
1822 
1823     #[test]
it_recognizes_norwegian_nynorsk_as_norwegian_language()1824     fn it_recognizes_norwegian_nynorsk_as_norwegian_language() {
1825         assert_eq!(
1826             super::from_lang_id(NORWEGIAN_NYNORSK).primary_language(),
1827             PrimaryLanguage::Norwegian
1828         );
1829     }
1830 
1831     #[test]
it_recognizes_norwegian_nynorsk_as_nynorsk_sub_language()1832     fn it_recognizes_norwegian_nynorsk_as_nynorsk_sub_language() {
1833         assert_eq!(
1834             super::from_lang_id(NORWEGIAN_NYNORSK).sub_language(),
1835             SubLanguage::Nynorsk
1836         );
1837     }
1838 
1839     #[test]
it_recognizes_oriya_as_oriya_language()1840     fn it_recognizes_oriya_as_oriya_language() {
1841         assert_eq!(
1842             super::from_lang_id(ORIYA).primary_language(),
1843             PrimaryLanguage::Oriya
1844         );
1845     }
1846 
1847     #[test]
it_recognizes_polish_as_polish_language()1848     fn it_recognizes_polish_as_polish_language() {
1849         assert_eq!(
1850             super::from_lang_id(POLISH).primary_language(),
1851             PrimaryLanguage::Polish
1852         );
1853     }
1854 
1855     #[test]
it_recognizes_portuguese_from_brazil_as_portuguese_language()1856     fn it_recognizes_portuguese_from_brazil_as_portuguese_language() {
1857         assert_eq!(
1858             super::from_lang_id(PORTUGUESE_BRAZIL).primary_language(),
1859             PrimaryLanguage::Portuguese
1860         );
1861     }
1862 
1863     #[test]
it_recognizes_portuguese_from_brazil_as_brazil_sub_language()1864     fn it_recognizes_portuguese_from_brazil_as_brazil_sub_language() {
1865         assert_eq!(
1866             super::from_lang_id(PORTUGUESE_BRAZIL).sub_language(),
1867             SubLanguage::Brazil
1868         );
1869     }
1870 
1871     #[test]
it_recognizes_portuguese_standard_as_portuguese_language()1872     fn it_recognizes_portuguese_standard_as_portuguese_language() {
1873         assert_eq!(
1874             super::from_lang_id(PORTUGUESE_STANDARD).primary_language(),
1875             PrimaryLanguage::Portuguese
1876         );
1877     }
1878 
1879     #[test]
it_recognizes_portuguese_standard_as_standard_sub_language()1880     fn it_recognizes_portuguese_standard_as_standard_sub_language() {
1881         assert_eq!(
1882             super::from_lang_id(PORTUGUESE_STANDARD).sub_language(),
1883             SubLanguage::Standard
1884         );
1885     }
1886 
1887     #[test]
it_recognizes_punjabi_as_punjabi_language()1888     fn it_recognizes_punjabi_as_punjabi_language() {
1889         assert_eq!(
1890             super::from_lang_id(PUNJABI).primary_language(),
1891             PrimaryLanguage::Punjabi
1892         );
1893     }
1894 
1895     #[test]
it_recognizes_romanian_as_romanian_language()1896     fn it_recognizes_romanian_as_romanian_language() {
1897         assert_eq!(
1898             super::from_lang_id(ROMANIAN).primary_language(),
1899             PrimaryLanguage::Romanian
1900         );
1901     }
1902 
1903     #[test]
it_recognizes_russian_as_russian_language()1904     fn it_recognizes_russian_as_russian_language() {
1905         assert_eq!(
1906             super::from_lang_id(RUSSIAN).primary_language(),
1907             PrimaryLanguage::Russian
1908         );
1909     }
1910 
1911     #[test]
it_recognizes_sanskrit_as_sanskrit_language()1912     fn it_recognizes_sanskrit_as_sanskrit_language() {
1913         assert_eq!(
1914             super::from_lang_id(SANSKRIT).primary_language(),
1915             PrimaryLanguage::Sanskrit
1916         );
1917     }
1918 
1919     #[test]
it_recognizes_serbian_cyrillic_as_serbian_language()1920     fn it_recognizes_serbian_cyrillic_as_serbian_language() {
1921         assert_eq!(
1922             super::from_lang_id(SERBIAN_CYRILLIC).primary_language(),
1923             PrimaryLanguage::Serbian
1924         );
1925     }
1926 
1927     #[test]
it_recognizes_serbian_cyrillic_as_cyrillic_sub_language()1928     fn it_recognizes_serbian_cyrillic_as_cyrillic_sub_language() {
1929         assert_eq!(
1930             super::from_lang_id(SERBIAN_CYRILLIC).sub_language(),
1931             SubLanguage::Cyrillic
1932         );
1933     }
1934 
1935     #[test]
it_recognizes_serbian_latin_as_serbian_language()1936     fn it_recognizes_serbian_latin_as_serbian_language() {
1937         assert_eq!(
1938             super::from_lang_id(SERBIAN_LATIN).primary_language(),
1939             PrimaryLanguage::Serbian
1940         );
1941     }
1942 
1943     #[test]
it_recognizes_serbian_latin_as_latin_sub_language()1944     fn it_recognizes_serbian_latin_as_latin_sub_language() {
1945         assert_eq!(
1946             super::from_lang_id(SERBIAN_LATIN).sub_language(),
1947             SubLanguage::Latin
1948         );
1949     }
1950 
1951     #[test]
it_recognizes_sindhi_as_sindhi_language()1952     fn it_recognizes_sindhi_as_sindhi_language() {
1953         assert_eq!(
1954             super::from_lang_id(SINDHI).primary_language(),
1955             PrimaryLanguage::Sindhi
1956         );
1957     }
1958 
1959     #[test]
it_recognizes_slovak_as_slovak_language()1960     fn it_recognizes_slovak_as_slovak_language() {
1961         assert_eq!(
1962             super::from_lang_id(SLOVAK).primary_language(),
1963             PrimaryLanguage::Slovak
1964         );
1965     }
1966 
1967     #[test]
it_recognizes_slovenian_as_slovenian_language()1968     fn it_recognizes_slovenian_as_slovenian_language() {
1969         assert_eq!(
1970             super::from_lang_id(SLOVENIAN).primary_language(),
1971             PrimaryLanguage::Slovenian
1972         );
1973     }
1974 
1975     #[test]
it_recognizes_spanish_traditional_sort_as_spanish_language()1976     fn it_recognizes_spanish_traditional_sort_as_spanish_language() {
1977         assert_eq!(
1978             super::from_lang_id(SPANISH_TRADITIONAL_SORT).primary_language(),
1979             PrimaryLanguage::Spanish
1980         );
1981     }
1982 
1983     #[test]
it_recognizes_spanish_traditional_sort_as_traditional_sub_language()1984     fn it_recognizes_spanish_traditional_sort_as_traditional_sub_language() {
1985         assert_eq!(
1986             super::from_lang_id(SPANISH_TRADITIONAL_SORT).sub_language(),
1987             SubLanguage::Traditional
1988         );
1989     }
1990 
1991     #[test]
it_recognizes_spanish_from_mexico_as_spanish_language()1992     fn it_recognizes_spanish_from_mexico_as_spanish_language() {
1993         assert_eq!(
1994             super::from_lang_id(SPANISH_MEXICAN).primary_language(),
1995             PrimaryLanguage::Spanish
1996         );
1997     }
1998 
1999     #[test]
it_recognizes_spanish_from_mexico_as_mexico_sub_language()2000     fn it_recognizes_spanish_from_mexico_as_mexico_sub_language() {
2001         assert_eq!(
2002             super::from_lang_id(SPANISH_MEXICAN).sub_language(),
2003             SubLanguage::Mexico
2004         );
2005     }
2006 
2007     #[test]
it_recognizes_spanish_modern_sort_as_spanish_language()2008     fn it_recognizes_spanish_modern_sort_as_spanish_language() {
2009         assert_eq!(
2010             super::from_lang_id(SPANISH_MODERN_SORT).primary_language(),
2011             PrimaryLanguage::Spanish
2012         );
2013     }
2014 
2015     #[test]
it_recognizes_spanish_modern_sort_as_modern_sub_language()2016     fn it_recognizes_spanish_modern_sort_as_modern_sub_language() {
2017         assert_eq!(
2018             super::from_lang_id(SPANISH_MODERN_SORT).sub_language(),
2019             SubLanguage::Modern
2020         );
2021     }
2022 
2023     #[test]
it_recognizes_spanish_from_guatemala_as_spanish_language()2024     fn it_recognizes_spanish_from_guatemala_as_spanish_language() {
2025         assert_eq!(
2026             super::from_lang_id(SPANISH_GUATEMALA).primary_language(),
2027             PrimaryLanguage::Spanish
2028         );
2029     }
2030 
2031     #[test]
it_recognizes_spanish_from_guatemala_as_guatemala_sub_language()2032     fn it_recognizes_spanish_from_guatemala_as_guatemala_sub_language() {
2033         assert_eq!(
2034             super::from_lang_id(SPANISH_GUATEMALA).sub_language(),
2035             SubLanguage::Guatemala
2036         );
2037     }
2038 
2039     #[test]
it_recognizes_spanish_from_costa_rica_as_spanish_language()2040     fn it_recognizes_spanish_from_costa_rica_as_spanish_language() {
2041         assert_eq!(
2042             super::from_lang_id(SPANISH_COSTA_RICA).primary_language(),
2043             PrimaryLanguage::Spanish
2044         );
2045     }
2046 
2047     #[test]
it_recognizes_spanish_from_costa_rica_as_costa_rica_sub_language()2048     fn it_recognizes_spanish_from_costa_rica_as_costa_rica_sub_language() {
2049         assert_eq!(
2050             super::from_lang_id(SPANISH_COSTA_RICA).sub_language(),
2051             SubLanguage::CostaRica
2052         );
2053     }
2054 
2055     #[test]
it_recognizes_spanish_from_panama_as_spanish_language()2056     fn it_recognizes_spanish_from_panama_as_spanish_language() {
2057         assert_eq!(
2058             super::from_lang_id(SPANISH_PANAMA).primary_language(),
2059             PrimaryLanguage::Spanish
2060         );
2061     }
2062 
2063     #[test]
it_recognizes_spanish_from_panama_as_panama_sub_language()2064     fn it_recognizes_spanish_from_panama_as_panama_sub_language() {
2065         assert_eq!(
2066             super::from_lang_id(SPANISH_PANAMA).sub_language(),
2067             SubLanguage::Panama
2068         );
2069     }
2070 
2071     #[test]
it_recognizes_spanish_from_dominican_republic_as_spanish_language()2072     fn it_recognizes_spanish_from_dominican_republic_as_spanish_language() {
2073         assert_eq!(
2074             super::from_lang_id(SPANISH_DOMINICAN_REPUBLIC).primary_language(),
2075             PrimaryLanguage::Spanish
2076         );
2077     }
2078 
2079     #[test]
it_recognizes_spanish_from_dominican_republic_as_dominican_republic_sub_language()2080     fn it_recognizes_spanish_from_dominican_republic_as_dominican_republic_sub_language() {
2081         assert_eq!(
2082             super::from_lang_id(SPANISH_DOMINICAN_REPUBLIC).sub_language(),
2083             SubLanguage::DominicanRepublic
2084         );
2085     }
2086 
2087     #[test]
it_recognizes_spanish_from_venezuela_as_spanish_language()2088     fn it_recognizes_spanish_from_venezuela_as_spanish_language() {
2089         assert_eq!(
2090             super::from_lang_id(SPANISH_VENEZUELA).primary_language(),
2091             PrimaryLanguage::Spanish
2092         );
2093     }
2094 
2095     #[test]
it_recognizes_spanish_from_venezuela_as_venezuela_sub_language()2096     fn it_recognizes_spanish_from_venezuela_as_venezuela_sub_language() {
2097         assert_eq!(
2098             super::from_lang_id(SPANISH_VENEZUELA).sub_language(),
2099             SubLanguage::Venezuela
2100         );
2101     }
2102 
2103     #[test]
it_recognizes_spanish_from_colombia_as_spanish_language()2104     fn it_recognizes_spanish_from_colombia_as_spanish_language() {
2105         assert_eq!(
2106             super::from_lang_id(SPANISH_COLOMBIA).primary_language(),
2107             PrimaryLanguage::Spanish
2108         );
2109     }
2110 
2111     #[test]
it_recognizes_spanish_from_colombia_as_colombia_sub_language()2112     fn it_recognizes_spanish_from_colombia_as_colombia_sub_language() {
2113         assert_eq!(
2114             super::from_lang_id(SPANISH_COLOMBIA).sub_language(),
2115             SubLanguage::Colombia
2116         );
2117     }
2118 
2119     #[test]
it_recognizes_spanish_from_peru_as_spanish_language()2120     fn it_recognizes_spanish_from_peru_as_spanish_language() {
2121         assert_eq!(
2122             super::from_lang_id(SPANISH_PERU).primary_language(),
2123             PrimaryLanguage::Spanish
2124         );
2125     }
2126 
2127     #[test]
it_recognizes_spanish_from_peru_as_peru_sub_language()2128     fn it_recognizes_spanish_from_peru_as_peru_sub_language() {
2129         assert_eq!(
2130             super::from_lang_id(SPANISH_PERU).sub_language(),
2131             SubLanguage::Peru
2132         );
2133     }
2134 
2135     #[test]
it_recognizes_spanish_from_argentina_as_spanish_language()2136     fn it_recognizes_spanish_from_argentina_as_spanish_language() {
2137         assert_eq!(
2138             super::from_lang_id(SPANISH_ARGENTINA).primary_language(),
2139             PrimaryLanguage::Spanish
2140         );
2141     }
2142 
2143     #[test]
it_recognizes_spanish_from_argentina_as_argentina_sub_language()2144     fn it_recognizes_spanish_from_argentina_as_argentina_sub_language() {
2145         assert_eq!(
2146             super::from_lang_id(SPANISH_ARGENTINA).sub_language(),
2147             SubLanguage::Argentina
2148         );
2149     }
2150 
2151     #[test]
it_recognizes_spanish_from_ecuador_as_spanish_language()2152     fn it_recognizes_spanish_from_ecuador_as_spanish_language() {
2153         assert_eq!(
2154             super::from_lang_id(SPANISH_ECUADOR).primary_language(),
2155             PrimaryLanguage::Spanish
2156         );
2157     }
2158 
2159     #[test]
it_recognizes_spanish_from_ecuador_as_ecuador_sub_language()2160     fn it_recognizes_spanish_from_ecuador_as_ecuador_sub_language() {
2161         assert_eq!(
2162             super::from_lang_id(SPANISH_ECUADOR).sub_language(),
2163             SubLanguage::Ecuador
2164         );
2165     }
2166 
2167     #[test]
it_recognizes_spanish_from_chile_as_spanish_language()2168     fn it_recognizes_spanish_from_chile_as_spanish_language() {
2169         assert_eq!(
2170             super::from_lang_id(SPANISH_CHILE).primary_language(),
2171             PrimaryLanguage::Spanish
2172         );
2173     }
2174 
2175     #[test]
it_recognizes_spanish_from_chile_as_chile_sub_language()2176     fn it_recognizes_spanish_from_chile_as_chile_sub_language() {
2177         assert_eq!(
2178             super::from_lang_id(SPANISH_CHILE).sub_language(),
2179             SubLanguage::Chile
2180         );
2181     }
2182 
2183     #[test]
it_recognizes_spanish_from_uruguay_as_spanish_language()2184     fn it_recognizes_spanish_from_uruguay_as_spanish_language() {
2185         assert_eq!(
2186             super::from_lang_id(SPANISH_URUGUAY).primary_language(),
2187             PrimaryLanguage::Spanish
2188         );
2189     }
2190 
2191     #[test]
it_recognizes_spanish_from_uruguay_as_uruguay_sub_language()2192     fn it_recognizes_spanish_from_uruguay_as_uruguay_sub_language() {
2193         assert_eq!(
2194             super::from_lang_id(SPANISH_URUGUAY).sub_language(),
2195             SubLanguage::Uruguay
2196         );
2197     }
2198 
2199     #[test]
it_recognizes_spanish_from_paraguay_as_spanish_language()2200     fn it_recognizes_spanish_from_paraguay_as_spanish_language() {
2201         assert_eq!(
2202             super::from_lang_id(SPANISH_PARAGUAY).primary_language(),
2203             PrimaryLanguage::Spanish
2204         );
2205     }
2206 
2207     #[test]
it_recognizes_spanish_from_paraguay_as_paraguay_sub_language()2208     fn it_recognizes_spanish_from_paraguay_as_paraguay_sub_language() {
2209         assert_eq!(
2210             super::from_lang_id(SPANISH_PARAGUAY).sub_language(),
2211             SubLanguage::Paraguay
2212         );
2213     }
2214 
2215     #[test]
it_recognizes_spanish_from_bolivia_as_spanish_language()2216     fn it_recognizes_spanish_from_bolivia_as_spanish_language() {
2217         assert_eq!(
2218             super::from_lang_id(SPANISH_BOLIVIA).primary_language(),
2219             PrimaryLanguage::Spanish
2220         );
2221     }
2222 
2223     #[test]
it_recognizes_spanish_from_bolivia_as_bolivia_sub_language()2224     fn it_recognizes_spanish_from_bolivia_as_bolivia_sub_language() {
2225         assert_eq!(
2226             super::from_lang_id(SPANISH_BOLIVIA).sub_language(),
2227             SubLanguage::Bolivia
2228         );
2229     }
2230 
2231     #[test]
it_recognizes_spanish_from_el_salvador_as_spanish_language()2232     fn it_recognizes_spanish_from_el_salvador_as_spanish_language() {
2233         assert_eq!(
2234             super::from_lang_id(SPANISH_EL_SALVADOR).primary_language(),
2235             PrimaryLanguage::Spanish
2236         );
2237     }
2238 
2239     #[test]
it_recognizes_spanish_from_el_salvador_as_el_salvador_sub_language()2240     fn it_recognizes_spanish_from_el_salvador_as_el_salvador_sub_language() {
2241         assert_eq!(
2242             super::from_lang_id(SPANISH_EL_SALVADOR).sub_language(),
2243             SubLanguage::ElSalvador
2244         );
2245     }
2246 
2247     #[test]
it_recognizes_spanish_from_honduras_as_spanish_language()2248     fn it_recognizes_spanish_from_honduras_as_spanish_language() {
2249         assert_eq!(
2250             super::from_lang_id(SPANISH_HONDURAS).primary_language(),
2251             PrimaryLanguage::Spanish
2252         );
2253     }
2254 
2255     #[test]
it_recognizes_spanish_from_honduras_as_honduras_sub_language()2256     fn it_recognizes_spanish_from_honduras_as_honduras_sub_language() {
2257         assert_eq!(
2258             super::from_lang_id(SPANISH_HONDURAS).sub_language(),
2259             SubLanguage::Honduras
2260         );
2261     }
2262 
2263     #[test]
it_recognizes_spanish_from_nicaragua_as_spanish_language()2264     fn it_recognizes_spanish_from_nicaragua_as_spanish_language() {
2265         assert_eq!(
2266             super::from_lang_id(SPANISH_NICARAGUA).primary_language(),
2267             PrimaryLanguage::Spanish
2268         );
2269     }
2270 
2271     #[test]
it_recognizes_spanish_from_nicaragua_as_nicaragua_sub_language()2272     fn it_recognizes_spanish_from_nicaragua_as_nicaragua_sub_language() {
2273         assert_eq!(
2274             super::from_lang_id(SPANISH_NICARAGUA).sub_language(),
2275             SubLanguage::Nicaragua
2276         );
2277     }
2278 
2279     #[test]
it_recognizes_spanish_from_puerto_rico_as_spanish_language()2280     fn it_recognizes_spanish_from_puerto_rico_as_spanish_language() {
2281         assert_eq!(
2282             super::from_lang_id(SPANISH_PUERTO_RICO).primary_language(),
2283             PrimaryLanguage::Spanish
2284         );
2285     }
2286 
2287     #[test]
it_recognizes_spanish_from_puerto_rico_as_puerto_rico_sub_language()2288     fn it_recognizes_spanish_from_puerto_rico_as_puerto_rico_sub_language() {
2289         assert_eq!(
2290             super::from_lang_id(SPANISH_PUERTO_RICO).sub_language(),
2291             SubLanguage::PuertoRico
2292         );
2293     }
2294 
2295     #[test]
it_recognizes_sutu_as_sutu_language()2296     fn it_recognizes_sutu_as_sutu_language() {
2297         assert_eq!(
2298             super::from_lang_id(SUTU).primary_language(),
2299             PrimaryLanguage::Sutu
2300         );
2301     }
2302 
2303     #[test]
it_recognizes_swahili_as_swahili_language()2304     fn it_recognizes_swahili_as_swahili_language() {
2305         assert_eq!(
2306             super::from_lang_id(SWAHILI_KENYA).primary_language(),
2307             PrimaryLanguage::Swahili
2308         );
2309     }
2310 
2311     #[test]
it_recognizes_swedish_as_swedish_language()2312     fn it_recognizes_swedish_as_swedish_language() {
2313         assert_eq!(
2314             super::from_lang_id(SWEDISH).primary_language(),
2315             PrimaryLanguage::Swedish
2316         );
2317     }
2318 
2319     #[test]
it_recognizes_swedish_as_standard_sub_language()2320     fn it_recognizes_swedish_as_standard_sub_language() {
2321         assert_eq!(
2322             super::from_lang_id(SWEDISH).sub_language(),
2323             SubLanguage::Standard
2324         );
2325     }
2326 
2327     #[test]
it_recognizes_swedish_from_finland_as_swedish_language()2328     fn it_recognizes_swedish_from_finland_as_swedish_language() {
2329         assert_eq!(
2330             super::from_lang_id(SWEDISH_FINLAND).primary_language(),
2331             PrimaryLanguage::Swedish
2332         );
2333     }
2334 
2335     #[test]
it_recognizes_swedish_from_finland_as_finland_sub_language()2336     fn it_recognizes_swedish_from_finland_as_finland_sub_language() {
2337         assert_eq!(
2338             super::from_lang_id(SWEDISH_FINLAND).sub_language(),
2339             SubLanguage::Finland
2340         );
2341     }
2342 
2343     #[test]
it_recognizes_tamil_as_tamil_language()2344     fn it_recognizes_tamil_as_tamil_language() {
2345         assert_eq!(
2346             super::from_lang_id(TAMIL).primary_language(),
2347             PrimaryLanguage::Tamil
2348         );
2349     }
2350 
2351     #[test]
it_recognizes_tatar_as_tatar_language()2352     fn it_recognizes_tatar_as_tatar_language() {
2353         assert_eq!(
2354             super::from_lang_id(TATAR_TATARSTAN).primary_language(),
2355             PrimaryLanguage::Tatar
2356         );
2357     }
2358 
2359     #[test]
it_recognizes_telugu_as_telugu_language()2360     fn it_recognizes_telugu_as_telugu_language() {
2361         assert_eq!(
2362             super::from_lang_id(TELUGU).primary_language(),
2363             PrimaryLanguage::Telugu
2364         );
2365     }
2366 
2367     #[test]
it_recognizes_thai_as_thai_language()2368     fn it_recognizes_thai_as_thai_language() {
2369         assert_eq!(
2370             super::from_lang_id(THAI).primary_language(),
2371             PrimaryLanguage::Thai
2372         );
2373     }
2374 
2375     #[test]
it_recognizes_turkish_as_turkish_language()2376     fn it_recognizes_turkish_as_turkish_language() {
2377         assert_eq!(
2378             super::from_lang_id(TURKISH).primary_language(),
2379             PrimaryLanguage::Turkish
2380         );
2381     }
2382 
2383     #[test]
it_recognizes_ukrainian_as_ukrainian_language()2384     fn it_recognizes_ukrainian_as_ukrainian_language() {
2385         assert_eq!(
2386             super::from_lang_id(UKRAINIAN).primary_language(),
2387             PrimaryLanguage::Ukrainian
2388         );
2389     }
2390 
2391     #[test]
it_recognizes_urdu_from_pakistan_as_urdu_language()2392     fn it_recognizes_urdu_from_pakistan_as_urdu_language() {
2393         assert_eq!(
2394             super::from_lang_id(URDU_PAKISTAN).primary_language(),
2395             PrimaryLanguage::Urdu
2396         );
2397     }
2398 
2399     #[test]
it_recognizes_urdu_from_pakistan_as_pakistan_sub_language()2400     fn it_recognizes_urdu_from_pakistan_as_pakistan_sub_language() {
2401         assert_eq!(
2402             super::from_lang_id(URDU_PAKISTAN).sub_language(),
2403             SubLanguage::Pakistan
2404         );
2405     }
2406 
2407     #[test]
it_recognizes_urdu_from_india_as_urdu_language()2408     fn it_recognizes_urdu_from_india_as_urdu_language() {
2409         assert_eq!(
2410             super::from_lang_id(URDU_INDIA).primary_language(),
2411             PrimaryLanguage::Urdu
2412         );
2413     }
2414 
2415     #[test]
it_recognizes_urdu_from_india_as_india_sub_language()2416     fn it_recognizes_urdu_from_india_as_india_sub_language() {
2417         assert_eq!(
2418             super::from_lang_id(URDU_INDIA).sub_language(),
2419             SubLanguage::India
2420         );
2421     }
2422 
2423     #[test]
it_recognizes_uzbek_latin_as_uzbek_language()2424     fn it_recognizes_uzbek_latin_as_uzbek_language() {
2425         assert_eq!(
2426             super::from_lang_id(UZBEK_LATIN).primary_language(),
2427             PrimaryLanguage::Uzbek
2428         );
2429     }
2430 
2431     #[test]
it_recognizes_uzbek_latin_as_latin_sub_language()2432     fn it_recognizes_uzbek_latin_as_latin_sub_language() {
2433         assert_eq!(
2434             super::from_lang_id(UZBEK_LATIN).sub_language(),
2435             SubLanguage::Latin
2436         );
2437     }
2438 
2439     #[test]
it_recognizes_uzbek_cyrillic_as_uzbek_language()2440     fn it_recognizes_uzbek_cyrillic_as_uzbek_language() {
2441         assert_eq!(
2442             super::from_lang_id(UZBEK_CYRILLIC).primary_language(),
2443             PrimaryLanguage::Uzbek
2444         );
2445     }
2446 
2447     #[test]
it_recognizes_uzbek_cyrillic_as_cyrillic_sub_language()2448     fn it_recognizes_uzbek_cyrillic_as_cyrillic_sub_language() {
2449         assert_eq!(
2450             super::from_lang_id(UZBEK_CYRILLIC).sub_language(),
2451             SubLanguage::Cyrillic
2452         );
2453     }
2454 
2455     #[test]
it_recognizes_vietnamese_as_vietnamese_language()2456     fn it_recognizes_vietnamese_as_vietnamese_language() {
2457         assert_eq!(
2458             super::from_lang_id(VIETNAMESE).primary_language(),
2459             PrimaryLanguage::Vietnamese
2460         );
2461     }
2462 
2463     #[test]
it_recognizes_hid_usage_data_descriptor_as_hid_language()2464     fn it_recognizes_hid_usage_data_descriptor_as_hid_language() {
2465         assert_eq!(
2466             super::from_lang_id(HID_USAGE_DATA_DESCRIPTOR).primary_language(),
2467             PrimaryLanguage::HID
2468         );
2469     }
2470 
2471     #[test]
it_recognizes_hid_usage_data_descriptor_as_usage_data_descriptor_sub_language()2472     fn it_recognizes_hid_usage_data_descriptor_as_usage_data_descriptor_sub_language() {
2473         assert_eq!(
2474             super::from_lang_id(HID_USAGE_DATA_DESCRIPTOR).sub_language(),
2475             SubLanguage::UsageDataDescriptor
2476         );
2477     }
2478 
2479     #[test]
it_recognizes_hid_vendor_defined_1_as_hid_language()2480     fn it_recognizes_hid_vendor_defined_1_as_hid_language() {
2481         assert_eq!(
2482             super::from_lang_id(HID_VENDOR_DEFINED_1).primary_language(),
2483             PrimaryLanguage::HID
2484         );
2485     }
2486 
2487     #[test]
it_recognizes_hid_vendor_defined_1_as_vendor_defined_1_sub_language()2488     fn it_recognizes_hid_vendor_defined_1_as_vendor_defined_1_sub_language() {
2489         assert_eq!(
2490             super::from_lang_id(HID_VENDOR_DEFINED_1).sub_language(),
2491             SubLanguage::VendorDefined1
2492         );
2493     }
2494 
2495     #[test]
it_recognizes_hid_vendor_defined_2_as_hid_language()2496     fn it_recognizes_hid_vendor_defined_2_as_hid_language() {
2497         assert_eq!(
2498             super::from_lang_id(HID_VENDOR_DEFINED_2).primary_language(),
2499             PrimaryLanguage::HID
2500         );
2501     }
2502 
2503     #[test]
it_recognizes_hid_vendor_defined_1_as_vendor_defined_2_sub_language()2504     fn it_recognizes_hid_vendor_defined_1_as_vendor_defined_2_sub_language() {
2505         assert_eq!(
2506             super::from_lang_id(HID_VENDOR_DEFINED_2).sub_language(),
2507             SubLanguage::VendorDefined2
2508         );
2509     }
2510 
2511     #[test]
it_recognizes_hid_vendor_defined_3_as_hid_language()2512     fn it_recognizes_hid_vendor_defined_3_as_hid_language() {
2513         assert_eq!(
2514             super::from_lang_id(HID_VENDOR_DEFINED_3).primary_language(),
2515             PrimaryLanguage::HID
2516         );
2517     }
2518 
2519     #[test]
it_recognizes_hid_vendor_defined_1_as_vendor_defined_3_sub_language()2520     fn it_recognizes_hid_vendor_defined_1_as_vendor_defined_3_sub_language() {
2521         assert_eq!(
2522             super::from_lang_id(HID_VENDOR_DEFINED_3).sub_language(),
2523             SubLanguage::VendorDefined3
2524         );
2525     }
2526 
2527     #[test]
it_recognizes_hid_vendor_defined_4_as_hid_language()2528     fn it_recognizes_hid_vendor_defined_4_as_hid_language() {
2529         assert_eq!(
2530             super::from_lang_id(HID_VENDOR_DEFINED_4).primary_language(),
2531             PrimaryLanguage::HID
2532         );
2533     }
2534 
2535     #[test]
it_recognizes_hid_vendor_defined_1_as_vendor_defined_4_sub_language()2536     fn it_recognizes_hid_vendor_defined_1_as_vendor_defined_4_sub_language() {
2537         assert_eq!(
2538             super::from_lang_id(HID_VENDOR_DEFINED_4).sub_language(),
2539             SubLanguage::VendorDefined4
2540         );
2541     }
2542 
2543     #[test]
it_recognizes_other_as_other_language()2544     fn it_recognizes_other_as_other_language() {
2545         assert_eq!(
2546             super::from_lang_id(0xFFFF).primary_language(),
2547             PrimaryLanguage::Other(PRIMARY_LANGUAGE_MASK)
2548         );
2549     }
2550 
2551     #[test]
it_recognizes_other_as_other_sub_language()2552     fn it_recognizes_other_as_other_sub_language() {
2553         assert_eq!(
2554             super::from_lang_id(0xFFFF).sub_language(),
2555             SubLanguage::Other(SUB_LANGUAGE_MASK)
2556         );
2557     }
2558 }
2559