thoth_api/language/
model.rs

1use serde::{Deserialize, Serialize};
2use std::fmt;
3use std::str::FromStr;
4use uuid::Uuid;
5
6use crate::errors::ThothError;
7#[cfg(feature = "backend")]
8use crate::schema::language;
9
10#[cfg_attr(feature = "backend", derive(DbEnum, juniper::GraphQLEnum))]
11#[cfg_attr(feature = "backend", DieselType = "Language_relation")]
12#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
13#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
14pub enum LanguageRelation {
15    Original,
16    #[cfg_attr(feature = "backend", db_rename = "translated-from")]
17    TranslatedFrom,
18    #[cfg_attr(feature = "backend", db_rename = "translated-into")]
19    TranslatedInto,
20}
21
22#[cfg_attr(feature = "backend", derive(Queryable))]
23pub struct Language {
24    pub language_id: Uuid,
25    pub work_id: Uuid,
26    pub language_code: LanguageCode,
27    pub language_relation: LanguageRelation,
28    pub main_language: bool,
29}
30
31#[cfg_attr(
32    feature = "backend",
33    derive(juniper::GraphQLInputObject, Insertable),
34    table_name = "language"
35)]
36pub struct NewLanguage {
37    pub work_id: Uuid,
38    pub language_code: LanguageCode,
39    pub language_relation: LanguageRelation,
40    pub main_language: bool,
41}
42
43#[cfg_attr(
44    feature = "backend",
45    derive(juniper::GraphQLInputObject, AsChangeset),
46    changeset_options(treat_none_as_null = "true"),
47    table_name = "language"
48)]
49pub struct PatchLanguage {
50    pub language_id: Uuid,
51    pub work_id: Uuid,
52    pub language_code: LanguageCode,
53    pub language_relation: LanguageRelation,
54    pub main_language: bool,
55}
56
57#[cfg_attr(feature = "backend", derive(DbEnum, juniper::GraphQLEnum))]
58#[cfg_attr(feature = "backend", DieselType = "Language_code")]
59#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
60#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
61pub enum LanguageCode {
62    Aar,
63    Abk,
64    Ace,
65    Ach,
66    Ada,
67    Ady,
68    Afa,
69    Afh,
70    Afr,
71    Ain,
72    Aka,
73    Akk,
74    Alb,
75    Ale,
76    Alg,
77    Alt,
78    Amh,
79    Ang,
80    Anp,
81    Apa,
82    Ara,
83    Arc,
84    Arg,
85    Arm,
86    Arn,
87    Arp,
88    Art,
89    Arw,
90    Asm,
91    Ast,
92    Ath,
93    Aus,
94    Ava,
95    Ave,
96    Awa,
97    Aym,
98    Aze,
99    Bad,
100    Bai,
101    Bak,
102    Bal,
103    Bam,
104    Ban,
105    Baq,
106    Bas,
107    Bat,
108    Bej,
109    Bel,
110    Bem,
111    Ben,
112    Ber,
113    Bho,
114    Bih,
115    Bik,
116    Bin,
117    Bis,
118    Bla,
119    Bnt,
120    Bos,
121    Bra,
122    Bre,
123    Btk,
124    Bua,
125    Bug,
126    Bul,
127    Bur,
128    Byn,
129    Cad,
130    Cai,
131    Car,
132    Cat,
133    Cau,
134    Ceb,
135    Cel,
136    Cha,
137    Chb,
138    Che,
139    Chg,
140    Chi,
141    Chk,
142    Chm,
143    Chn,
144    Cho,
145    Chp,
146    Chr,
147    Chu,
148    Chv,
149    Chy,
150    Cmc,
151    Cnr,
152    Cop,
153    Cor,
154    Cos,
155    Cpe,
156    Cpf,
157    Cpp,
158    Cre,
159    Crh,
160    Crp,
161    Csb,
162    Cus,
163    Cze,
164    Dak,
165    Dan,
166    Dar,
167    Day,
168    Del,
169    Den,
170    Dgr,
171    Din,
172    Div,
173    Doi,
174    Dra,
175    Dsb,
176    Dua,
177    Dum,
178    Dut,
179    Dyu,
180    Dzo,
181    Efi,
182    Egy,
183    Eka,
184    Elx,
185    Eng,
186    Enm,
187    Epo,
188    Est,
189    Ewe,
190    Ewo,
191    Fan,
192    Fao,
193    Fat,
194    Fij,
195    Fil,
196    Fin,
197    Fiu,
198    Fon,
199    Fre,
200    Frm,
201    Fro,
202    Frr,
203    Frs,
204    Fry,
205    Ful,
206    Fur,
207    Gaa,
208    Gay,
209    Gba,
210    Gem,
211    Geo,
212    Ger,
213    Gez,
214    Gil,
215    Gla,
216    Gle,
217    Glg,
218    Glv,
219    Gmh,
220    Goh,
221    Gon,
222    Gor,
223    Got,
224    Grb,
225    Grc,
226    Gre,
227    Grn,
228    Gsw,
229    Guj,
230    Gwi,
231    Hai,
232    Hat,
233    Hau,
234    Haw,
235    Heb,
236    Her,
237    Hil,
238    Him,
239    Hin,
240    Hit,
241    Hmn,
242    Hmo,
243    Hrv,
244    Hsb,
245    Hun,
246    Hup,
247    Iba,
248    Ibo,
249    Ice,
250    Ido,
251    Iii,
252    Ijo,
253    Iku,
254    Ile,
255    Ilo,
256    Ina,
257    Inc,
258    Ind,
259    Ine,
260    Inh,
261    Ipk,
262    Ira,
263    Iro,
264    Ita,
265    Jav,
266    Jbo,
267    Jpn,
268    Jpr,
269    Jrb,
270    Kaa,
271    Kab,
272    Kac,
273    Kal,
274    Kam,
275    Kan,
276    Kar,
277    Kas,
278    Kau,
279    Kaw,
280    Kaz,
281    Kbd,
282    Kha,
283    Khi,
284    Khm,
285    Kho,
286    Kik,
287    Kin,
288    Kir,
289    Kmb,
290    Kok,
291    Kom,
292    Kon,
293    Kor,
294    Kos,
295    Kpe,
296    Krc,
297    Krl,
298    Kro,
299    Kru,
300    Kua,
301    Kum,
302    Kur,
303    Kut,
304    Lad,
305    Lah,
306    Lam,
307    Lao,
308    Lat,
309    Lav,
310    Lez,
311    Lim,
312    Lin,
313    Lit,
314    Lol,
315    Loz,
316    Ltz,
317    Lua,
318    Lub,
319    Lug,
320    Lui,
321    Lun,
322    Luo,
323    Lus,
324    Mac,
325    Mad,
326    Mag,
327    Mah,
328    Mai,
329    Mak,
330    Mal,
331    Man,
332    Mao,
333    Map,
334    Mar,
335    Mas,
336    May,
337    Mdf,
338    Mdr,
339    Men,
340    Mga,
341    Mic,
342    Min,
343    Mis,
344    Mkh,
345    Mlg,
346    Mlt,
347    Mnc,
348    Mni,
349    Mno,
350    Moh,
351    Mon,
352    Mos,
353    Mul,
354    Mun,
355    Mus,
356    Mwl,
357    Mwr,
358    Myn,
359    Myv,
360    Nah,
361    Nai,
362    Nap,
363    Nau,
364    Nav,
365    Nbl,
366    Nde,
367    Ndo,
368    Nds,
369    Nep,
370    New,
371    Nia,
372    Nic,
373    Niu,
374    Nno,
375    Nob,
376    Nog,
377    Non,
378    Nor,
379    Nqo,
380    Nso,
381    Nub,
382    Nwc,
383    Nya,
384    Nym,
385    Nyn,
386    Nyo,
387    Nzi,
388    Oci,
389    Oji,
390    Ori,
391    Orm,
392    Osa,
393    Oss,
394    Ota,
395    Oto,
396    Paa,
397    Pag,
398    Pal,
399    Pam,
400    Pan,
401    Pap,
402    Pau,
403    Peo,
404    Per,
405    Phi,
406    Phn,
407    Pli,
408    Pol,
409    Pon,
410    Por,
411    Pra,
412    Pro,
413    Pus,
414    Qaa,
415    Que,
416    Raj,
417    Rap,
418    Rar,
419    Roa,
420    Roh,
421    Rom,
422    Rum,
423    Run,
424    Rup,
425    Rus,
426    Sad,
427    Sag,
428    Sah,
429    Sai,
430    Sal,
431    Sam,
432    San,
433    Sas,
434    Sat,
435    Scn,
436    Sco,
437    Sel,
438    Sem,
439    Sga,
440    Sgn,
441    Shn,
442    Sid,
443    Sin,
444    Sio,
445    Sit,
446    Sla,
447    Slo,
448    Slv,
449    Sma,
450    Sme,
451    Smi,
452    Smj,
453    Smn,
454    Smo,
455    Sms,
456    Sna,
457    Snd,
458    Snk,
459    Sog,
460    Som,
461    Son,
462    Sot,
463    Spa,
464    Srd,
465    Srn,
466    Srp,
467    Srr,
468    Ssa,
469    Ssw,
470    Suk,
471    Sun,
472    Sus,
473    Sux,
474    Swa,
475    Swe,
476    Syc,
477    Syr,
478    Tah,
479    Tai,
480    Tam,
481    Tat,
482    Tel,
483    Tem,
484    Ter,
485    Tet,
486    Tgk,
487    Tgl,
488    Tha,
489    Tib,
490    Tig,
491    Tir,
492    Tiv,
493    Tkl,
494    Tlh,
495    Tli,
496    Tmh,
497    Tog,
498    Ton,
499    Tpi,
500    Tsi,
501    Tsn,
502    Tso,
503    Tuk,
504    Tum,
505    Tup,
506    Tur,
507    Tut,
508    Tvl,
509    Twi,
510    Tyv,
511    Udm,
512    Uga,
513    Uig,
514    Ukr,
515    Umb,
516    Und,
517    Urd,
518    Uzb,
519    Vai,
520    Ven,
521    Vie,
522    Vol,
523    Vot,
524    Wak,
525    Wal,
526    War,
527    Was,
528    Wel,
529    Wen,
530    Wln,
531    Wol,
532    Xal,
533    Xho,
534    Yao,
535    Yap,
536    Yid,
537    Yor,
538    Ypk,
539    Zap,
540    Zbl,
541    Zen,
542    Zgh,
543    Zha,
544    Znd,
545    Zul,
546    Zun,
547    Zxx,
548    Zza,
549}
550
551impl Default for LanguageCode {
552    fn default() -> LanguageCode {
553        LanguageCode::Eng
554    }
555}
556
557impl Default for LanguageRelation {
558    fn default() -> LanguageRelation {
559        LanguageRelation::Original
560    }
561}
562
563impl fmt::Display for LanguageRelation {
564    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
565        match self {
566            LanguageRelation::Original => write!(f, "Original"),
567            LanguageRelation::TranslatedFrom => write!(f, "Translated From"),
568            LanguageRelation::TranslatedInto => write!(f, "Translated Into"),
569        }
570    }
571}
572
573impl fmt::Display for LanguageCode {
574    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
575        match self {
576            LanguageCode::Aar => write!(f, "AAR"),
577            LanguageCode::Abk => write!(f, "ABK"),
578            LanguageCode::Ace => write!(f, "ACE"),
579            LanguageCode::Ach => write!(f, "ACH"),
580            LanguageCode::Ada => write!(f, "ADA"),
581            LanguageCode::Ady => write!(f, "ADY"),
582            LanguageCode::Afa => write!(f, "AFA"),
583            LanguageCode::Afh => write!(f, "AFH"),
584            LanguageCode::Afr => write!(f, "AFR"),
585            LanguageCode::Ain => write!(f, "AIN"),
586            LanguageCode::Aka => write!(f, "AKA"),
587            LanguageCode::Akk => write!(f, "AKK"),
588            LanguageCode::Alb => write!(f, "ALB"),
589            LanguageCode::Ale => write!(f, "ALE"),
590            LanguageCode::Alg => write!(f, "ALG"),
591            LanguageCode::Alt => write!(f, "ALT"),
592            LanguageCode::Amh => write!(f, "AMH"),
593            LanguageCode::Ang => write!(f, "ANG"),
594            LanguageCode::Anp => write!(f, "ANP"),
595            LanguageCode::Apa => write!(f, "APA"),
596            LanguageCode::Ara => write!(f, "ARA"),
597            LanguageCode::Arc => write!(f, "ARC"),
598            LanguageCode::Arg => write!(f, "ARG"),
599            LanguageCode::Arm => write!(f, "ARM"),
600            LanguageCode::Arn => write!(f, "ARN"),
601            LanguageCode::Arp => write!(f, "ARP"),
602            LanguageCode::Art => write!(f, "ART"),
603            LanguageCode::Arw => write!(f, "ARW"),
604            LanguageCode::Asm => write!(f, "ASM"),
605            LanguageCode::Ast => write!(f, "AST"),
606            LanguageCode::Ath => write!(f, "ATH"),
607            LanguageCode::Aus => write!(f, "AUS"),
608            LanguageCode::Ava => write!(f, "AVA"),
609            LanguageCode::Ave => write!(f, "AVE"),
610            LanguageCode::Awa => write!(f, "AWA"),
611            LanguageCode::Aym => write!(f, "AYM"),
612            LanguageCode::Aze => write!(f, "AZE"),
613            LanguageCode::Bad => write!(f, "BAD"),
614            LanguageCode::Bai => write!(f, "BAI"),
615            LanguageCode::Bak => write!(f, "BAK"),
616            LanguageCode::Bal => write!(f, "BAL"),
617            LanguageCode::Bam => write!(f, "BAM"),
618            LanguageCode::Ban => write!(f, "BAN"),
619            LanguageCode::Baq => write!(f, "BAQ"),
620            LanguageCode::Bas => write!(f, "BAS"),
621            LanguageCode::Bat => write!(f, "BAT"),
622            LanguageCode::Bej => write!(f, "BEJ"),
623            LanguageCode::Bel => write!(f, "BEL"),
624            LanguageCode::Bem => write!(f, "BEM"),
625            LanguageCode::Ben => write!(f, "BEN"),
626            LanguageCode::Ber => write!(f, "BER"),
627            LanguageCode::Bho => write!(f, "BHO"),
628            LanguageCode::Bih => write!(f, "BIH"),
629            LanguageCode::Bik => write!(f, "BIK"),
630            LanguageCode::Bin => write!(f, "BIN"),
631            LanguageCode::Bis => write!(f, "BIS"),
632            LanguageCode::Bla => write!(f, "BLA"),
633            LanguageCode::Bnt => write!(f, "BNT"),
634            LanguageCode::Bos => write!(f, "BOS"),
635            LanguageCode::Bra => write!(f, "BRA"),
636            LanguageCode::Bre => write!(f, "BRE"),
637            LanguageCode::Btk => write!(f, "BTK"),
638            LanguageCode::Bua => write!(f, "BUA"),
639            LanguageCode::Bug => write!(f, "BUG"),
640            LanguageCode::Bul => write!(f, "BUL"),
641            LanguageCode::Bur => write!(f, "BUR"),
642            LanguageCode::Byn => write!(f, "BYN"),
643            LanguageCode::Cad => write!(f, "CAD"),
644            LanguageCode::Cai => write!(f, "CAI"),
645            LanguageCode::Car => write!(f, "CAR"),
646            LanguageCode::Cat => write!(f, "CAT"),
647            LanguageCode::Cau => write!(f, "CAU"),
648            LanguageCode::Ceb => write!(f, "CEB"),
649            LanguageCode::Cel => write!(f, "CEL"),
650            LanguageCode::Cha => write!(f, "CHA"),
651            LanguageCode::Chb => write!(f, "CHB"),
652            LanguageCode::Che => write!(f, "CHE"),
653            LanguageCode::Chg => write!(f, "CHG"),
654            LanguageCode::Chi => write!(f, "CHI"),
655            LanguageCode::Chk => write!(f, "CHK"),
656            LanguageCode::Chm => write!(f, "CHM"),
657            LanguageCode::Chn => write!(f, "CHN"),
658            LanguageCode::Cho => write!(f, "CHO"),
659            LanguageCode::Chp => write!(f, "CHP"),
660            LanguageCode::Chr => write!(f, "CHR"),
661            LanguageCode::Chu => write!(f, "CHU"),
662            LanguageCode::Chv => write!(f, "CHV"),
663            LanguageCode::Chy => write!(f, "CHY"),
664            LanguageCode::Cmc => write!(f, "CMC"),
665            LanguageCode::Cnr => write!(f, "CNR"),
666            LanguageCode::Cop => write!(f, "COP"),
667            LanguageCode::Cor => write!(f, "COR"),
668            LanguageCode::Cos => write!(f, "COS"),
669            LanguageCode::Cpe => write!(f, "CPE"),
670            LanguageCode::Cpf => write!(f, "CPF"),
671            LanguageCode::Cpp => write!(f, "CPP"),
672            LanguageCode::Cre => write!(f, "CRE"),
673            LanguageCode::Crh => write!(f, "CRH"),
674            LanguageCode::Crp => write!(f, "CRP"),
675            LanguageCode::Csb => write!(f, "CSB"),
676            LanguageCode::Cus => write!(f, "CUS"),
677            LanguageCode::Cze => write!(f, "CZE"),
678            LanguageCode::Dak => write!(f, "DAK"),
679            LanguageCode::Dan => write!(f, "DAN"),
680            LanguageCode::Dar => write!(f, "DAR"),
681            LanguageCode::Day => write!(f, "DAY"),
682            LanguageCode::Del => write!(f, "DEL"),
683            LanguageCode::Den => write!(f, "DEN"),
684            LanguageCode::Dgr => write!(f, "DGR"),
685            LanguageCode::Din => write!(f, "DIN"),
686            LanguageCode::Div => write!(f, "DIV"),
687            LanguageCode::Doi => write!(f, "DOI"),
688            LanguageCode::Dra => write!(f, "DRA"),
689            LanguageCode::Dsb => write!(f, "DSB"),
690            LanguageCode::Dua => write!(f, "DUA"),
691            LanguageCode::Dum => write!(f, "DUM"),
692            LanguageCode::Dut => write!(f, "DUT"),
693            LanguageCode::Dyu => write!(f, "DYU"),
694            LanguageCode::Dzo => write!(f, "DZO"),
695            LanguageCode::Efi => write!(f, "EFI"),
696            LanguageCode::Egy => write!(f, "EGY"),
697            LanguageCode::Eka => write!(f, "EKA"),
698            LanguageCode::Elx => write!(f, "ELX"),
699            LanguageCode::Eng => write!(f, "ENG"),
700            LanguageCode::Enm => write!(f, "ENM"),
701            LanguageCode::Epo => write!(f, "EPO"),
702            LanguageCode::Est => write!(f, "EST"),
703            LanguageCode::Ewe => write!(f, "EWE"),
704            LanguageCode::Ewo => write!(f, "EWO"),
705            LanguageCode::Fan => write!(f, "FAN"),
706            LanguageCode::Fao => write!(f, "FAO"),
707            LanguageCode::Fat => write!(f, "FAT"),
708            LanguageCode::Fij => write!(f, "FIJ"),
709            LanguageCode::Fil => write!(f, "FIL"),
710            LanguageCode::Fin => write!(f, "FIN"),
711            LanguageCode::Fiu => write!(f, "FIU"),
712            LanguageCode::Fon => write!(f, "FON"),
713            LanguageCode::Fre => write!(f, "FRE"),
714            LanguageCode::Frm => write!(f, "FRM"),
715            LanguageCode::Fro => write!(f, "FRO"),
716            LanguageCode::Frr => write!(f, "FRR"),
717            LanguageCode::Frs => write!(f, "FRS"),
718            LanguageCode::Fry => write!(f, "FRY"),
719            LanguageCode::Ful => write!(f, "FUL"),
720            LanguageCode::Fur => write!(f, "FUR"),
721            LanguageCode::Gaa => write!(f, "GAA"),
722            LanguageCode::Gay => write!(f, "GAY"),
723            LanguageCode::Gba => write!(f, "GBA"),
724            LanguageCode::Gem => write!(f, "GEM"),
725            LanguageCode::Geo => write!(f, "GEO"),
726            LanguageCode::Ger => write!(f, "GER"),
727            LanguageCode::Gez => write!(f, "GEZ"),
728            LanguageCode::Gil => write!(f, "GIL"),
729            LanguageCode::Gla => write!(f, "GLA"),
730            LanguageCode::Gle => write!(f, "GLE"),
731            LanguageCode::Glg => write!(f, "GLG"),
732            LanguageCode::Glv => write!(f, "GLV"),
733            LanguageCode::Gmh => write!(f, "GMH"),
734            LanguageCode::Goh => write!(f, "GOH"),
735            LanguageCode::Gon => write!(f, "GON"),
736            LanguageCode::Gor => write!(f, "GOR"),
737            LanguageCode::Got => write!(f, "GOT"),
738            LanguageCode::Grb => write!(f, "GRB"),
739            LanguageCode::Grc => write!(f, "GRC"),
740            LanguageCode::Gre => write!(f, "GRE"),
741            LanguageCode::Grn => write!(f, "GRN"),
742            LanguageCode::Gsw => write!(f, "GSW"),
743            LanguageCode::Guj => write!(f, "GUJ"),
744            LanguageCode::Gwi => write!(f, "GWI"),
745            LanguageCode::Hai => write!(f, "HAI"),
746            LanguageCode::Hat => write!(f, "HAT"),
747            LanguageCode::Hau => write!(f, "HAU"),
748            LanguageCode::Haw => write!(f, "HAW"),
749            LanguageCode::Heb => write!(f, "HEB"),
750            LanguageCode::Her => write!(f, "HER"),
751            LanguageCode::Hil => write!(f, "HIL"),
752            LanguageCode::Him => write!(f, "HIM"),
753            LanguageCode::Hin => write!(f, "HIN"),
754            LanguageCode::Hit => write!(f, "HIT"),
755            LanguageCode::Hmn => write!(f, "HMN"),
756            LanguageCode::Hmo => write!(f, "HMO"),
757            LanguageCode::Hrv => write!(f, "HRV"),
758            LanguageCode::Hsb => write!(f, "HSB"),
759            LanguageCode::Hun => write!(f, "HUN"),
760            LanguageCode::Hup => write!(f, "HUP"),
761            LanguageCode::Iba => write!(f, "IBA"),
762            LanguageCode::Ibo => write!(f, "IBO"),
763            LanguageCode::Ice => write!(f, "ICE"),
764            LanguageCode::Ido => write!(f, "IDO"),
765            LanguageCode::Iii => write!(f, "III"),
766            LanguageCode::Ijo => write!(f, "IJO"),
767            LanguageCode::Iku => write!(f, "IKU"),
768            LanguageCode::Ile => write!(f, "ILE"),
769            LanguageCode::Ilo => write!(f, "ILO"),
770            LanguageCode::Ina => write!(f, "INA"),
771            LanguageCode::Inc => write!(f, "INC"),
772            LanguageCode::Ind => write!(f, "IND"),
773            LanguageCode::Ine => write!(f, "INE"),
774            LanguageCode::Inh => write!(f, "INH"),
775            LanguageCode::Ipk => write!(f, "IPK"),
776            LanguageCode::Ira => write!(f, "IRA"),
777            LanguageCode::Iro => write!(f, "IRO"),
778            LanguageCode::Ita => write!(f, "ITA"),
779            LanguageCode::Jav => write!(f, "JAV"),
780            LanguageCode::Jbo => write!(f, "JBO"),
781            LanguageCode::Jpn => write!(f, "JPN"),
782            LanguageCode::Jpr => write!(f, "JPR"),
783            LanguageCode::Jrb => write!(f, "JRB"),
784            LanguageCode::Kaa => write!(f, "KAA"),
785            LanguageCode::Kab => write!(f, "KAB"),
786            LanguageCode::Kac => write!(f, "KAC"),
787            LanguageCode::Kal => write!(f, "KAL"),
788            LanguageCode::Kam => write!(f, "KAM"),
789            LanguageCode::Kan => write!(f, "KAN"),
790            LanguageCode::Kar => write!(f, "KAR"),
791            LanguageCode::Kas => write!(f, "KAS"),
792            LanguageCode::Kau => write!(f, "KAU"),
793            LanguageCode::Kaw => write!(f, "KAW"),
794            LanguageCode::Kaz => write!(f, "KAZ"),
795            LanguageCode::Kbd => write!(f, "KBD"),
796            LanguageCode::Kha => write!(f, "KHA"),
797            LanguageCode::Khi => write!(f, "KHI"),
798            LanguageCode::Khm => write!(f, "KHM"),
799            LanguageCode::Kho => write!(f, "KHO"),
800            LanguageCode::Kik => write!(f, "KIK"),
801            LanguageCode::Kin => write!(f, "KIN"),
802            LanguageCode::Kir => write!(f, "KIR"),
803            LanguageCode::Kmb => write!(f, "KMB"),
804            LanguageCode::Kok => write!(f, "KOK"),
805            LanguageCode::Kom => write!(f, "KOM"),
806            LanguageCode::Kon => write!(f, "KON"),
807            LanguageCode::Kor => write!(f, "KOR"),
808            LanguageCode::Kos => write!(f, "KOS"),
809            LanguageCode::Kpe => write!(f, "KPE"),
810            LanguageCode::Krc => write!(f, "KRC"),
811            LanguageCode::Krl => write!(f, "KRL"),
812            LanguageCode::Kro => write!(f, "KRO"),
813            LanguageCode::Kru => write!(f, "KRU"),
814            LanguageCode::Kua => write!(f, "KUA"),
815            LanguageCode::Kum => write!(f, "KUM"),
816            LanguageCode::Kur => write!(f, "KUR"),
817            LanguageCode::Kut => write!(f, "KUT"),
818            LanguageCode::Lad => write!(f, "LAD"),
819            LanguageCode::Lah => write!(f, "LAH"),
820            LanguageCode::Lam => write!(f, "LAM"),
821            LanguageCode::Lao => write!(f, "LAO"),
822            LanguageCode::Lat => write!(f, "LAT"),
823            LanguageCode::Lav => write!(f, "LAV"),
824            LanguageCode::Lez => write!(f, "LEZ"),
825            LanguageCode::Lim => write!(f, "LIM"),
826            LanguageCode::Lin => write!(f, "LIN"),
827            LanguageCode::Lit => write!(f, "LIT"),
828            LanguageCode::Lol => write!(f, "LOL"),
829            LanguageCode::Loz => write!(f, "LOZ"),
830            LanguageCode::Ltz => write!(f, "LTZ"),
831            LanguageCode::Lua => write!(f, "LUA"),
832            LanguageCode::Lub => write!(f, "LUB"),
833            LanguageCode::Lug => write!(f, "LUG"),
834            LanguageCode::Lui => write!(f, "LUI"),
835            LanguageCode::Lun => write!(f, "LUN"),
836            LanguageCode::Luo => write!(f, "LUO"),
837            LanguageCode::Lus => write!(f, "LUS"),
838            LanguageCode::Mac => write!(f, "MAC"),
839            LanguageCode::Mad => write!(f, "MAD"),
840            LanguageCode::Mag => write!(f, "MAG"),
841            LanguageCode::Mah => write!(f, "MAH"),
842            LanguageCode::Mai => write!(f, "MAI"),
843            LanguageCode::Mak => write!(f, "MAK"),
844            LanguageCode::Mal => write!(f, "MAL"),
845            LanguageCode::Man => write!(f, "MAN"),
846            LanguageCode::Mao => write!(f, "MAO"),
847            LanguageCode::Map => write!(f, "MAP"),
848            LanguageCode::Mar => write!(f, "MAR"),
849            LanguageCode::Mas => write!(f, "MAS"),
850            LanguageCode::May => write!(f, "MAY"),
851            LanguageCode::Mdf => write!(f, "MDF"),
852            LanguageCode::Mdr => write!(f, "MDR"),
853            LanguageCode::Men => write!(f, "MEN"),
854            LanguageCode::Mga => write!(f, "MGA"),
855            LanguageCode::Mic => write!(f, "MIC"),
856            LanguageCode::Min => write!(f, "MIN"),
857            LanguageCode::Mis => write!(f, "MIS"),
858            LanguageCode::Mkh => write!(f, "MKH"),
859            LanguageCode::Mlg => write!(f, "MLG"),
860            LanguageCode::Mlt => write!(f, "MLT"),
861            LanguageCode::Mnc => write!(f, "MNC"),
862            LanguageCode::Mni => write!(f, "MNI"),
863            LanguageCode::Mno => write!(f, "MNO"),
864            LanguageCode::Moh => write!(f, "MOH"),
865            LanguageCode::Mon => write!(f, "MON"),
866            LanguageCode::Mos => write!(f, "MOS"),
867            LanguageCode::Mul => write!(f, "MUL"),
868            LanguageCode::Mun => write!(f, "MUN"),
869            LanguageCode::Mus => write!(f, "MUS"),
870            LanguageCode::Mwl => write!(f, "MWL"),
871            LanguageCode::Mwr => write!(f, "MWR"),
872            LanguageCode::Myn => write!(f, "MYN"),
873            LanguageCode::Myv => write!(f, "MYV"),
874            LanguageCode::Nah => write!(f, "NAH"),
875            LanguageCode::Nai => write!(f, "NAI"),
876            LanguageCode::Nap => write!(f, "NAP"),
877            LanguageCode::Nau => write!(f, "NAU"),
878            LanguageCode::Nav => write!(f, "NAV"),
879            LanguageCode::Nbl => write!(f, "NBL"),
880            LanguageCode::Nde => write!(f, "NDE"),
881            LanguageCode::Ndo => write!(f, "NDO"),
882            LanguageCode::Nds => write!(f, "NDS"),
883            LanguageCode::Nep => write!(f, "NEP"),
884            LanguageCode::New => write!(f, "NEW"),
885            LanguageCode::Nia => write!(f, "NIA"),
886            LanguageCode::Nic => write!(f, "NIC"),
887            LanguageCode::Niu => write!(f, "NIU"),
888            LanguageCode::Nno => write!(f, "NNO"),
889            LanguageCode::Nob => write!(f, "NOB"),
890            LanguageCode::Nog => write!(f, "NOG"),
891            LanguageCode::Non => write!(f, "NON"),
892            LanguageCode::Nor => write!(f, "NOR"),
893            LanguageCode::Nqo => write!(f, "NQO"),
894            LanguageCode::Nso => write!(f, "NSO"),
895            LanguageCode::Nub => write!(f, "NUB"),
896            LanguageCode::Nwc => write!(f, "NWC"),
897            LanguageCode::Nya => write!(f, "NYA"),
898            LanguageCode::Nym => write!(f, "NYM"),
899            LanguageCode::Nyn => write!(f, "NYN"),
900            LanguageCode::Nyo => write!(f, "NYO"),
901            LanguageCode::Nzi => write!(f, "NZI"),
902            LanguageCode::Oci => write!(f, "OCI"),
903            LanguageCode::Oji => write!(f, "OJI"),
904            LanguageCode::Ori => write!(f, "ORI"),
905            LanguageCode::Orm => write!(f, "ORM"),
906            LanguageCode::Osa => write!(f, "OSA"),
907            LanguageCode::Oss => write!(f, "OSS"),
908            LanguageCode::Ota => write!(f, "OTA"),
909            LanguageCode::Oto => write!(f, "OTO"),
910            LanguageCode::Paa => write!(f, "PAA"),
911            LanguageCode::Pag => write!(f, "PAG"),
912            LanguageCode::Pal => write!(f, "PAL"),
913            LanguageCode::Pam => write!(f, "PAM"),
914            LanguageCode::Pan => write!(f, "PAN"),
915            LanguageCode::Pap => write!(f, "PAP"),
916            LanguageCode::Pau => write!(f, "PAU"),
917            LanguageCode::Peo => write!(f, "PEO"),
918            LanguageCode::Per => write!(f, "PER"),
919            LanguageCode::Phi => write!(f, "PHI"),
920            LanguageCode::Phn => write!(f, "PHN"),
921            LanguageCode::Pli => write!(f, "PLI"),
922            LanguageCode::Pol => write!(f, "POL"),
923            LanguageCode::Pon => write!(f, "PON"),
924            LanguageCode::Por => write!(f, "POR"),
925            LanguageCode::Pra => write!(f, "PRA"),
926            LanguageCode::Pro => write!(f, "PRO"),
927            LanguageCode::Pus => write!(f, "PUS"),
928            LanguageCode::Qaa => write!(f, "QAA"),
929            LanguageCode::Que => write!(f, "QUE"),
930            LanguageCode::Raj => write!(f, "RAJ"),
931            LanguageCode::Rap => write!(f, "RAP"),
932            LanguageCode::Rar => write!(f, "RAR"),
933            LanguageCode::Roa => write!(f, "ROA"),
934            LanguageCode::Roh => write!(f, "ROH"),
935            LanguageCode::Rom => write!(f, "ROM"),
936            LanguageCode::Rum => write!(f, "RUM"),
937            LanguageCode::Run => write!(f, "RUN"),
938            LanguageCode::Rup => write!(f, "RUP"),
939            LanguageCode::Rus => write!(f, "RUS"),
940            LanguageCode::Sad => write!(f, "SAD"),
941            LanguageCode::Sag => write!(f, "SAG"),
942            LanguageCode::Sah => write!(f, "SAH"),
943            LanguageCode::Sai => write!(f, "SAI"),
944            LanguageCode::Sal => write!(f, "SAL"),
945            LanguageCode::Sam => write!(f, "SAM"),
946            LanguageCode::San => write!(f, "SAN"),
947            LanguageCode::Sas => write!(f, "SAS"),
948            LanguageCode::Sat => write!(f, "SAT"),
949            LanguageCode::Scn => write!(f, "SCN"),
950            LanguageCode::Sco => write!(f, "SCO"),
951            LanguageCode::Sel => write!(f, "SEL"),
952            LanguageCode::Sem => write!(f, "SEM"),
953            LanguageCode::Sga => write!(f, "SGA"),
954            LanguageCode::Sgn => write!(f, "SGN"),
955            LanguageCode::Shn => write!(f, "SHN"),
956            LanguageCode::Sid => write!(f, "SID"),
957            LanguageCode::Sin => write!(f, "SIN"),
958            LanguageCode::Sio => write!(f, "SIO"),
959            LanguageCode::Sit => write!(f, "SIT"),
960            LanguageCode::Sla => write!(f, "SLA"),
961            LanguageCode::Slo => write!(f, "SLO"),
962            LanguageCode::Slv => write!(f, "SLV"),
963            LanguageCode::Sma => write!(f, "SMA"),
964            LanguageCode::Sme => write!(f, "SME"),
965            LanguageCode::Smi => write!(f, "SMI"),
966            LanguageCode::Smj => write!(f, "SMJ"),
967            LanguageCode::Smn => write!(f, "SMN"),
968            LanguageCode::Smo => write!(f, "SMO"),
969            LanguageCode::Sms => write!(f, "SMS"),
970            LanguageCode::Sna => write!(f, "SNA"),
971            LanguageCode::Snd => write!(f, "SND"),
972            LanguageCode::Snk => write!(f, "SNK"),
973            LanguageCode::Sog => write!(f, "SOG"),
974            LanguageCode::Som => write!(f, "SOM"),
975            LanguageCode::Son => write!(f, "SON"),
976            LanguageCode::Sot => write!(f, "SOT"),
977            LanguageCode::Spa => write!(f, "SPA"),
978            LanguageCode::Srd => write!(f, "SRD"),
979            LanguageCode::Srn => write!(f, "SRN"),
980            LanguageCode::Srp => write!(f, "SRP"),
981            LanguageCode::Srr => write!(f, "SRR"),
982            LanguageCode::Ssa => write!(f, "SSA"),
983            LanguageCode::Ssw => write!(f, "SSW"),
984            LanguageCode::Suk => write!(f, "SUK"),
985            LanguageCode::Sun => write!(f, "SUN"),
986            LanguageCode::Sus => write!(f, "SUS"),
987            LanguageCode::Sux => write!(f, "SUX"),
988            LanguageCode::Swa => write!(f, "SWA"),
989            LanguageCode::Swe => write!(f, "SWE"),
990            LanguageCode::Syc => write!(f, "SYC"),
991            LanguageCode::Syr => write!(f, "SYR"),
992            LanguageCode::Tah => write!(f, "TAH"),
993            LanguageCode::Tai => write!(f, "TAI"),
994            LanguageCode::Tam => write!(f, "TAM"),
995            LanguageCode::Tat => write!(f, "TAT"),
996            LanguageCode::Tel => write!(f, "TEL"),
997            LanguageCode::Tem => write!(f, "TEM"),
998            LanguageCode::Ter => write!(f, "TER"),
999            LanguageCode::Tet => write!(f, "TET"),
1000            LanguageCode::Tgk => write!(f, "TGK"),
1001            LanguageCode::Tgl => write!(f, "TGL"),
1002            LanguageCode::Tha => write!(f, "THA"),
1003            LanguageCode::Tib => write!(f, "TIB"),
1004            LanguageCode::Tig => write!(f, "TIG"),
1005            LanguageCode::Tir => write!(f, "TIR"),
1006            LanguageCode::Tiv => write!(f, "TIV"),
1007            LanguageCode::Tkl => write!(f, "TKL"),
1008            LanguageCode::Tlh => write!(f, "TLH"),
1009            LanguageCode::Tli => write!(f, "TLI"),
1010            LanguageCode::Tmh => write!(f, "TMH"),
1011            LanguageCode::Tog => write!(f, "TOG"),
1012            LanguageCode::Ton => write!(f, "TON"),
1013            LanguageCode::Tpi => write!(f, "TPI"),
1014            LanguageCode::Tsi => write!(f, "TSI"),
1015            LanguageCode::Tsn => write!(f, "TSN"),
1016            LanguageCode::Tso => write!(f, "TSO"),
1017            LanguageCode::Tuk => write!(f, "TUK"),
1018            LanguageCode::Tum => write!(f, "TUM"),
1019            LanguageCode::Tup => write!(f, "TUP"),
1020            LanguageCode::Tur => write!(f, "TUR"),
1021            LanguageCode::Tut => write!(f, "TUT"),
1022            LanguageCode::Tvl => write!(f, "TVL"),
1023            LanguageCode::Twi => write!(f, "TWI"),
1024            LanguageCode::Tyv => write!(f, "TYV"),
1025            LanguageCode::Udm => write!(f, "UDM"),
1026            LanguageCode::Uga => write!(f, "UGA"),
1027            LanguageCode::Uig => write!(f, "UIG"),
1028            LanguageCode::Ukr => write!(f, "UKR"),
1029            LanguageCode::Umb => write!(f, "UMB"),
1030            LanguageCode::Und => write!(f, "UND"),
1031            LanguageCode::Urd => write!(f, "URD"),
1032            LanguageCode::Uzb => write!(f, "UZB"),
1033            LanguageCode::Vai => write!(f, "VAI"),
1034            LanguageCode::Ven => write!(f, "VEN"),
1035            LanguageCode::Vie => write!(f, "VIE"),
1036            LanguageCode::Vol => write!(f, "VOL"),
1037            LanguageCode::Vot => write!(f, "VOT"),
1038            LanguageCode::Wak => write!(f, "WAK"),
1039            LanguageCode::Wal => write!(f, "WAL"),
1040            LanguageCode::War => write!(f, "WAR"),
1041            LanguageCode::Was => write!(f, "WAS"),
1042            LanguageCode::Wel => write!(f, "WEL"),
1043            LanguageCode::Wen => write!(f, "WEN"),
1044            LanguageCode::Wln => write!(f, "WLN"),
1045            LanguageCode::Wol => write!(f, "WOL"),
1046            LanguageCode::Xal => write!(f, "XAL"),
1047            LanguageCode::Xho => write!(f, "XHO"),
1048            LanguageCode::Yao => write!(f, "YAO"),
1049            LanguageCode::Yap => write!(f, "YAP"),
1050            LanguageCode::Yid => write!(f, "YID"),
1051            LanguageCode::Yor => write!(f, "YOR"),
1052            LanguageCode::Ypk => write!(f, "YPK"),
1053            LanguageCode::Zap => write!(f, "ZAP"),
1054            LanguageCode::Zbl => write!(f, "ZBL"),
1055            LanguageCode::Zen => write!(f, "ZEN"),
1056            LanguageCode::Zgh => write!(f, "ZGH"),
1057            LanguageCode::Zha => write!(f, "ZHA"),
1058            LanguageCode::Znd => write!(f, "ZND"),
1059            LanguageCode::Zul => write!(f, "ZUL"),
1060            LanguageCode::Zun => write!(f, "ZUN"),
1061            LanguageCode::Zxx => write!(f, "ZXX"),
1062            LanguageCode::Zza => write!(f, "ZZA"),
1063        }
1064    }
1065}
1066
1067impl FromStr for LanguageRelation {
1068    type Err = ThothError;
1069
1070    fn from_str(input: &str) -> std::result::Result<LanguageRelation, ThothError> {
1071        match input {
1072            "Original" => Ok(LanguageRelation::Original),
1073            "Translated From" => Ok(LanguageRelation::TranslatedFrom),
1074            "Translated Into" => Ok(LanguageRelation::TranslatedInto),
1075            _ => Err(ThothError::InvalidLanguageRelation(input.to_string())),
1076        }
1077    }
1078}
1079
1080impl FromStr for LanguageCode {
1081    type Err = ThothError;
1082
1083    fn from_str(input: &str) -> std::result::Result<LanguageCode, ThothError> {
1084        match input {
1085            "AAR" => Ok(LanguageCode::Aar),
1086            "ABK" => Ok(LanguageCode::Abk),
1087            "ACE" => Ok(LanguageCode::Ace),
1088            "ACH" => Ok(LanguageCode::Ach),
1089            "ADA" => Ok(LanguageCode::Ada),
1090            "ADY" => Ok(LanguageCode::Ady),
1091            "AFA" => Ok(LanguageCode::Afa),
1092            "AFH" => Ok(LanguageCode::Afh),
1093            "AFR" => Ok(LanguageCode::Afr),
1094            "AIN" => Ok(LanguageCode::Ain),
1095            "AKA" => Ok(LanguageCode::Aka),
1096            "AKK" => Ok(LanguageCode::Akk),
1097            "ALB" => Ok(LanguageCode::Alb),
1098            "ALE" => Ok(LanguageCode::Ale),
1099            "ALG" => Ok(LanguageCode::Alg),
1100            "ALT" => Ok(LanguageCode::Alt),
1101            "AMH" => Ok(LanguageCode::Amh),
1102            "ANG" => Ok(LanguageCode::Ang),
1103            "ANP" => Ok(LanguageCode::Anp),
1104            "APA" => Ok(LanguageCode::Apa),
1105            "ARA" => Ok(LanguageCode::Ara),
1106            "ARC" => Ok(LanguageCode::Arc),
1107            "ARG" => Ok(LanguageCode::Arg),
1108            "ARM" => Ok(LanguageCode::Arm),
1109            "ARN" => Ok(LanguageCode::Arn),
1110            "ARP" => Ok(LanguageCode::Arp),
1111            "ART" => Ok(LanguageCode::Art),
1112            "ARW" => Ok(LanguageCode::Arw),
1113            "ASM" => Ok(LanguageCode::Asm),
1114            "AST" => Ok(LanguageCode::Ast),
1115            "ATH" => Ok(LanguageCode::Ath),
1116            "AUS" => Ok(LanguageCode::Aus),
1117            "AVA" => Ok(LanguageCode::Ava),
1118            "AVE" => Ok(LanguageCode::Ave),
1119            "AWA" => Ok(LanguageCode::Awa),
1120            "AYM" => Ok(LanguageCode::Aym),
1121            "AZE" => Ok(LanguageCode::Aze),
1122            "BAD" => Ok(LanguageCode::Bad),
1123            "BAI" => Ok(LanguageCode::Bai),
1124            "BAK" => Ok(LanguageCode::Bak),
1125            "BAL" => Ok(LanguageCode::Bal),
1126            "BAM" => Ok(LanguageCode::Bam),
1127            "BAN" => Ok(LanguageCode::Ban),
1128            "BAQ" => Ok(LanguageCode::Baq),
1129            "BAS" => Ok(LanguageCode::Bas),
1130            "BAT" => Ok(LanguageCode::Bat),
1131            "BEJ" => Ok(LanguageCode::Bej),
1132            "BEL" => Ok(LanguageCode::Bel),
1133            "BEM" => Ok(LanguageCode::Bem),
1134            "BEN" => Ok(LanguageCode::Ben),
1135            "BER" => Ok(LanguageCode::Ber),
1136            "BHO" => Ok(LanguageCode::Bho),
1137            "BIH" => Ok(LanguageCode::Bih),
1138            "BIK" => Ok(LanguageCode::Bik),
1139            "BIN" => Ok(LanguageCode::Bin),
1140            "BIS" => Ok(LanguageCode::Bis),
1141            "BLA" => Ok(LanguageCode::Bla),
1142            "BNT" => Ok(LanguageCode::Bnt),
1143            "BOS" => Ok(LanguageCode::Bos),
1144            "BRA" => Ok(LanguageCode::Bra),
1145            "BRE" => Ok(LanguageCode::Bre),
1146            "BTK" => Ok(LanguageCode::Btk),
1147            "BUA" => Ok(LanguageCode::Bua),
1148            "BUG" => Ok(LanguageCode::Bug),
1149            "BUL" => Ok(LanguageCode::Bul),
1150            "BUR" => Ok(LanguageCode::Bur),
1151            "BYN" => Ok(LanguageCode::Byn),
1152            "CAD" => Ok(LanguageCode::Cad),
1153            "CAI" => Ok(LanguageCode::Cai),
1154            "CAR" => Ok(LanguageCode::Car),
1155            "CAT" => Ok(LanguageCode::Cat),
1156            "CAU" => Ok(LanguageCode::Cau),
1157            "CEB" => Ok(LanguageCode::Ceb),
1158            "CEL" => Ok(LanguageCode::Cel),
1159            "CHA" => Ok(LanguageCode::Cha),
1160            "CHB" => Ok(LanguageCode::Chb),
1161            "CHE" => Ok(LanguageCode::Che),
1162            "CHG" => Ok(LanguageCode::Chg),
1163            "CHI" => Ok(LanguageCode::Chi),
1164            "CHK" => Ok(LanguageCode::Chk),
1165            "CHM" => Ok(LanguageCode::Chm),
1166            "CHN" => Ok(LanguageCode::Chn),
1167            "CHO" => Ok(LanguageCode::Cho),
1168            "CHP" => Ok(LanguageCode::Chp),
1169            "CHR" => Ok(LanguageCode::Chr),
1170            "CHU" => Ok(LanguageCode::Chu),
1171            "CHV" => Ok(LanguageCode::Chv),
1172            "CHY" => Ok(LanguageCode::Chy),
1173            "CMC" => Ok(LanguageCode::Cmc),
1174            "CNR" => Ok(LanguageCode::Cnr),
1175            "COP" => Ok(LanguageCode::Cop),
1176            "COR" => Ok(LanguageCode::Cor),
1177            "COS" => Ok(LanguageCode::Cos),
1178            "CPE" => Ok(LanguageCode::Cpe),
1179            "CPF" => Ok(LanguageCode::Cpf),
1180            "CPP" => Ok(LanguageCode::Cpp),
1181            "CRE" => Ok(LanguageCode::Cre),
1182            "CRH" => Ok(LanguageCode::Crh),
1183            "CRP" => Ok(LanguageCode::Crp),
1184            "CSB" => Ok(LanguageCode::Csb),
1185            "CUS" => Ok(LanguageCode::Cus),
1186            "CZE" => Ok(LanguageCode::Cze),
1187            "DAK" => Ok(LanguageCode::Dak),
1188            "DAN" => Ok(LanguageCode::Dan),
1189            "DAR" => Ok(LanguageCode::Dar),
1190            "DAY" => Ok(LanguageCode::Day),
1191            "DEL" => Ok(LanguageCode::Del),
1192            "DEN" => Ok(LanguageCode::Den),
1193            "DGR" => Ok(LanguageCode::Dgr),
1194            "DIN" => Ok(LanguageCode::Din),
1195            "DIV" => Ok(LanguageCode::Div),
1196            "DOI" => Ok(LanguageCode::Doi),
1197            "DRA" => Ok(LanguageCode::Dra),
1198            "DSB" => Ok(LanguageCode::Dsb),
1199            "DUA" => Ok(LanguageCode::Dua),
1200            "DUM" => Ok(LanguageCode::Dum),
1201            "DUT" => Ok(LanguageCode::Dut),
1202            "DYU" => Ok(LanguageCode::Dyu),
1203            "DZO" => Ok(LanguageCode::Dzo),
1204            "EFI" => Ok(LanguageCode::Efi),
1205            "EGY" => Ok(LanguageCode::Egy),
1206            "EKA" => Ok(LanguageCode::Eka),
1207            "ELX" => Ok(LanguageCode::Elx),
1208            "ENG" => Ok(LanguageCode::Eng),
1209            "ENM" => Ok(LanguageCode::Enm),
1210            "EPO" => Ok(LanguageCode::Epo),
1211            "EST" => Ok(LanguageCode::Est),
1212            "EWE" => Ok(LanguageCode::Ewe),
1213            "EWO" => Ok(LanguageCode::Ewo),
1214            "FAN" => Ok(LanguageCode::Fan),
1215            "FAO" => Ok(LanguageCode::Fao),
1216            "FAT" => Ok(LanguageCode::Fat),
1217            "FIJ" => Ok(LanguageCode::Fij),
1218            "FIL" => Ok(LanguageCode::Fil),
1219            "FIN" => Ok(LanguageCode::Fin),
1220            "FIU" => Ok(LanguageCode::Fiu),
1221            "FON" => Ok(LanguageCode::Fon),
1222            "FRE" => Ok(LanguageCode::Fre),
1223            "FRM" => Ok(LanguageCode::Frm),
1224            "FRO" => Ok(LanguageCode::Fro),
1225            "FRR" => Ok(LanguageCode::Frr),
1226            "FRS" => Ok(LanguageCode::Frs),
1227            "FRY" => Ok(LanguageCode::Fry),
1228            "FUL" => Ok(LanguageCode::Ful),
1229            "FUR" => Ok(LanguageCode::Fur),
1230            "GAA" => Ok(LanguageCode::Gaa),
1231            "GAY" => Ok(LanguageCode::Gay),
1232            "GBA" => Ok(LanguageCode::Gba),
1233            "GEM" => Ok(LanguageCode::Gem),
1234            "GEO" => Ok(LanguageCode::Geo),
1235            "GER" => Ok(LanguageCode::Ger),
1236            "GEZ" => Ok(LanguageCode::Gez),
1237            "GIL" => Ok(LanguageCode::Gil),
1238            "GLA" => Ok(LanguageCode::Gla),
1239            "GLE" => Ok(LanguageCode::Gle),
1240            "GLG" => Ok(LanguageCode::Glg),
1241            "GLV" => Ok(LanguageCode::Glv),
1242            "GMH" => Ok(LanguageCode::Gmh),
1243            "GOH" => Ok(LanguageCode::Goh),
1244            "GON" => Ok(LanguageCode::Gon),
1245            "GOR" => Ok(LanguageCode::Gor),
1246            "GOT" => Ok(LanguageCode::Got),
1247            "GRB" => Ok(LanguageCode::Grb),
1248            "GRC" => Ok(LanguageCode::Grc),
1249            "GRE" => Ok(LanguageCode::Gre),
1250            "GRN" => Ok(LanguageCode::Grn),
1251            "GSW" => Ok(LanguageCode::Gsw),
1252            "GUJ" => Ok(LanguageCode::Guj),
1253            "GWI" => Ok(LanguageCode::Gwi),
1254            "HAI" => Ok(LanguageCode::Hai),
1255            "HAT" => Ok(LanguageCode::Hat),
1256            "HAU" => Ok(LanguageCode::Hau),
1257            "HAW" => Ok(LanguageCode::Haw),
1258            "HEB" => Ok(LanguageCode::Heb),
1259            "HER" => Ok(LanguageCode::Her),
1260            "HIL" => Ok(LanguageCode::Hil),
1261            "HIM" => Ok(LanguageCode::Him),
1262            "HIN" => Ok(LanguageCode::Hin),
1263            "HIT" => Ok(LanguageCode::Hit),
1264            "HMN" => Ok(LanguageCode::Hmn),
1265            "HMO" => Ok(LanguageCode::Hmo),
1266            "HRV" => Ok(LanguageCode::Hrv),
1267            "HSB" => Ok(LanguageCode::Hsb),
1268            "HUN" => Ok(LanguageCode::Hun),
1269            "HUP" => Ok(LanguageCode::Hup),
1270            "IBA" => Ok(LanguageCode::Iba),
1271            "IBO" => Ok(LanguageCode::Ibo),
1272            "ICE" => Ok(LanguageCode::Ice),
1273            "IDO" => Ok(LanguageCode::Ido),
1274            "III" => Ok(LanguageCode::Iii),
1275            "IJO" => Ok(LanguageCode::Ijo),
1276            "IKU" => Ok(LanguageCode::Iku),
1277            "ILE" => Ok(LanguageCode::Ile),
1278            "ILO" => Ok(LanguageCode::Ilo),
1279            "INA" => Ok(LanguageCode::Ina),
1280            "INC" => Ok(LanguageCode::Inc),
1281            "IND" => Ok(LanguageCode::Ind),
1282            "INE" => Ok(LanguageCode::Ine),
1283            "INH" => Ok(LanguageCode::Inh),
1284            "IPK" => Ok(LanguageCode::Ipk),
1285            "IRA" => Ok(LanguageCode::Ira),
1286            "IRO" => Ok(LanguageCode::Iro),
1287            "ITA" => Ok(LanguageCode::Ita),
1288            "JAV" => Ok(LanguageCode::Jav),
1289            "JBO" => Ok(LanguageCode::Jbo),
1290            "JPN" => Ok(LanguageCode::Jpn),
1291            "JPR" => Ok(LanguageCode::Jpr),
1292            "JRB" => Ok(LanguageCode::Jrb),
1293            "KAA" => Ok(LanguageCode::Kaa),
1294            "KAB" => Ok(LanguageCode::Kab),
1295            "KAC" => Ok(LanguageCode::Kac),
1296            "KAL" => Ok(LanguageCode::Kal),
1297            "KAM" => Ok(LanguageCode::Kam),
1298            "KAN" => Ok(LanguageCode::Kan),
1299            "KAR" => Ok(LanguageCode::Kar),
1300            "KAS" => Ok(LanguageCode::Kas),
1301            "KAU" => Ok(LanguageCode::Kau),
1302            "KAW" => Ok(LanguageCode::Kaw),
1303            "KAZ" => Ok(LanguageCode::Kaz),
1304            "KBD" => Ok(LanguageCode::Kbd),
1305            "KHA" => Ok(LanguageCode::Kha),
1306            "KHI" => Ok(LanguageCode::Khi),
1307            "KHM" => Ok(LanguageCode::Khm),
1308            "KHO" => Ok(LanguageCode::Kho),
1309            "KIK" => Ok(LanguageCode::Kik),
1310            "KIN" => Ok(LanguageCode::Kin),
1311            "KIR" => Ok(LanguageCode::Kir),
1312            "KMB" => Ok(LanguageCode::Kmb),
1313            "KOK" => Ok(LanguageCode::Kok),
1314            "KOM" => Ok(LanguageCode::Kom),
1315            "KON" => Ok(LanguageCode::Kon),
1316            "KOR" => Ok(LanguageCode::Kor),
1317            "KOS" => Ok(LanguageCode::Kos),
1318            "KPE" => Ok(LanguageCode::Kpe),
1319            "KRC" => Ok(LanguageCode::Krc),
1320            "KRL" => Ok(LanguageCode::Krl),
1321            "KRO" => Ok(LanguageCode::Kro),
1322            "KRU" => Ok(LanguageCode::Kru),
1323            "KUA" => Ok(LanguageCode::Kua),
1324            "KUM" => Ok(LanguageCode::Kum),
1325            "KUR" => Ok(LanguageCode::Kur),
1326            "KUT" => Ok(LanguageCode::Kut),
1327            "LAD" => Ok(LanguageCode::Lad),
1328            "LAH" => Ok(LanguageCode::Lah),
1329            "LAM" => Ok(LanguageCode::Lam),
1330            "LAO" => Ok(LanguageCode::Lao),
1331            "LAT" => Ok(LanguageCode::Lat),
1332            "LAV" => Ok(LanguageCode::Lav),
1333            "LEZ" => Ok(LanguageCode::Lez),
1334            "LIM" => Ok(LanguageCode::Lim),
1335            "LIN" => Ok(LanguageCode::Lin),
1336            "LIT" => Ok(LanguageCode::Lit),
1337            "LOL" => Ok(LanguageCode::Lol),
1338            "LOZ" => Ok(LanguageCode::Loz),
1339            "LTZ" => Ok(LanguageCode::Ltz),
1340            "LUA" => Ok(LanguageCode::Lua),
1341            "LUB" => Ok(LanguageCode::Lub),
1342            "LUG" => Ok(LanguageCode::Lug),
1343            "LUI" => Ok(LanguageCode::Lui),
1344            "LUN" => Ok(LanguageCode::Lun),
1345            "LUO" => Ok(LanguageCode::Luo),
1346            "LUS" => Ok(LanguageCode::Lus),
1347            "MAC" => Ok(LanguageCode::Mac),
1348            "MAD" => Ok(LanguageCode::Mad),
1349            "MAG" => Ok(LanguageCode::Mag),
1350            "MAH" => Ok(LanguageCode::Mah),
1351            "MAI" => Ok(LanguageCode::Mai),
1352            "MAK" => Ok(LanguageCode::Mak),
1353            "MAL" => Ok(LanguageCode::Mal),
1354            "MAN" => Ok(LanguageCode::Man),
1355            "MAO" => Ok(LanguageCode::Mao),
1356            "MAP" => Ok(LanguageCode::Map),
1357            "MAR" => Ok(LanguageCode::Mar),
1358            "MAS" => Ok(LanguageCode::Mas),
1359            "MAY" => Ok(LanguageCode::May),
1360            "MDF" => Ok(LanguageCode::Mdf),
1361            "MDR" => Ok(LanguageCode::Mdr),
1362            "MEN" => Ok(LanguageCode::Men),
1363            "MGA" => Ok(LanguageCode::Mga),
1364            "MIC" => Ok(LanguageCode::Mic),
1365            "MIN" => Ok(LanguageCode::Min),
1366            "MIS" => Ok(LanguageCode::Mis),
1367            "MKH" => Ok(LanguageCode::Mkh),
1368            "MLG" => Ok(LanguageCode::Mlg),
1369            "MLT" => Ok(LanguageCode::Mlt),
1370            "MNC" => Ok(LanguageCode::Mnc),
1371            "MNI" => Ok(LanguageCode::Mni),
1372            "MNO" => Ok(LanguageCode::Mno),
1373            "MOH" => Ok(LanguageCode::Moh),
1374            "MON" => Ok(LanguageCode::Mon),
1375            "MOS" => Ok(LanguageCode::Mos),
1376            "MUL" => Ok(LanguageCode::Mul),
1377            "MUN" => Ok(LanguageCode::Mun),
1378            "MUS" => Ok(LanguageCode::Mus),
1379            "MWL" => Ok(LanguageCode::Mwl),
1380            "MWR" => Ok(LanguageCode::Mwr),
1381            "MYN" => Ok(LanguageCode::Myn),
1382            "MYV" => Ok(LanguageCode::Myv),
1383            "NAH" => Ok(LanguageCode::Nah),
1384            "NAI" => Ok(LanguageCode::Nai),
1385            "NAP" => Ok(LanguageCode::Nap),
1386            "NAU" => Ok(LanguageCode::Nau),
1387            "NAV" => Ok(LanguageCode::Nav),
1388            "NBL" => Ok(LanguageCode::Nbl),
1389            "NDE" => Ok(LanguageCode::Nde),
1390            "NDO" => Ok(LanguageCode::Ndo),
1391            "NDS" => Ok(LanguageCode::Nds),
1392            "NEP" => Ok(LanguageCode::Nep),
1393            "NEW" => Ok(LanguageCode::New),
1394            "NIA" => Ok(LanguageCode::Nia),
1395            "NIC" => Ok(LanguageCode::Nic),
1396            "NIU" => Ok(LanguageCode::Niu),
1397            "NNO" => Ok(LanguageCode::Nno),
1398            "NOB" => Ok(LanguageCode::Nob),
1399            "NOG" => Ok(LanguageCode::Nog),
1400            "NON" => Ok(LanguageCode::Non),
1401            "NOR" => Ok(LanguageCode::Nor),
1402            "NQO" => Ok(LanguageCode::Nqo),
1403            "NSO" => Ok(LanguageCode::Nso),
1404            "NUB" => Ok(LanguageCode::Nub),
1405            "NWC" => Ok(LanguageCode::Nwc),
1406            "NYA" => Ok(LanguageCode::Nya),
1407            "NYM" => Ok(LanguageCode::Nym),
1408            "NYN" => Ok(LanguageCode::Nyn),
1409            "NYO" => Ok(LanguageCode::Nyo),
1410            "NZI" => Ok(LanguageCode::Nzi),
1411            "OCI" => Ok(LanguageCode::Oci),
1412            "OJI" => Ok(LanguageCode::Oji),
1413            "ORI" => Ok(LanguageCode::Ori),
1414            "ORM" => Ok(LanguageCode::Orm),
1415            "OSA" => Ok(LanguageCode::Osa),
1416            "OSS" => Ok(LanguageCode::Oss),
1417            "OTA" => Ok(LanguageCode::Ota),
1418            "OTO" => Ok(LanguageCode::Oto),
1419            "PAA" => Ok(LanguageCode::Paa),
1420            "PAG" => Ok(LanguageCode::Pag),
1421            "PAL" => Ok(LanguageCode::Pal),
1422            "PAM" => Ok(LanguageCode::Pam),
1423            "PAN" => Ok(LanguageCode::Pan),
1424            "PAP" => Ok(LanguageCode::Pap),
1425            "PAU" => Ok(LanguageCode::Pau),
1426            "PEO" => Ok(LanguageCode::Peo),
1427            "PER" => Ok(LanguageCode::Per),
1428            "PHI" => Ok(LanguageCode::Phi),
1429            "PHN" => Ok(LanguageCode::Phn),
1430            "PLI" => Ok(LanguageCode::Pli),
1431            "POL" => Ok(LanguageCode::Pol),
1432            "PON" => Ok(LanguageCode::Pon),
1433            "POR" => Ok(LanguageCode::Por),
1434            "PRA" => Ok(LanguageCode::Pra),
1435            "PRO" => Ok(LanguageCode::Pro),
1436            "PUS" => Ok(LanguageCode::Pus),
1437            "QAA" => Ok(LanguageCode::Qaa),
1438            "QUE" => Ok(LanguageCode::Que),
1439            "RAJ" => Ok(LanguageCode::Raj),
1440            "RAP" => Ok(LanguageCode::Rap),
1441            "RAR" => Ok(LanguageCode::Rar),
1442            "ROA" => Ok(LanguageCode::Roa),
1443            "ROH" => Ok(LanguageCode::Roh),
1444            "ROM" => Ok(LanguageCode::Rom),
1445            "RUM" => Ok(LanguageCode::Rum),
1446            "RUN" => Ok(LanguageCode::Run),
1447            "RUP" => Ok(LanguageCode::Rup),
1448            "RUS" => Ok(LanguageCode::Rus),
1449            "SAD" => Ok(LanguageCode::Sad),
1450            "SAG" => Ok(LanguageCode::Sag),
1451            "SAH" => Ok(LanguageCode::Sah),
1452            "SAI" => Ok(LanguageCode::Sai),
1453            "SAL" => Ok(LanguageCode::Sal),
1454            "SAM" => Ok(LanguageCode::Sam),
1455            "SAN" => Ok(LanguageCode::San),
1456            "SAS" => Ok(LanguageCode::Sas),
1457            "SAT" => Ok(LanguageCode::Sat),
1458            "SCN" => Ok(LanguageCode::Scn),
1459            "SCO" => Ok(LanguageCode::Sco),
1460            "SEL" => Ok(LanguageCode::Sel),
1461            "SEM" => Ok(LanguageCode::Sem),
1462            "SGA" => Ok(LanguageCode::Sga),
1463            "SGN" => Ok(LanguageCode::Sgn),
1464            "SHN" => Ok(LanguageCode::Shn),
1465            "SID" => Ok(LanguageCode::Sid),
1466            "SIN" => Ok(LanguageCode::Sin),
1467            "SIO" => Ok(LanguageCode::Sio),
1468            "SIT" => Ok(LanguageCode::Sit),
1469            "SLA" => Ok(LanguageCode::Sla),
1470            "SLO" => Ok(LanguageCode::Slo),
1471            "SLV" => Ok(LanguageCode::Slv),
1472            "SMA" => Ok(LanguageCode::Sma),
1473            "SME" => Ok(LanguageCode::Sme),
1474            "SMI" => Ok(LanguageCode::Smi),
1475            "SMJ" => Ok(LanguageCode::Smj),
1476            "SMN" => Ok(LanguageCode::Smn),
1477            "SMO" => Ok(LanguageCode::Smo),
1478            "SMS" => Ok(LanguageCode::Sms),
1479            "SNA" => Ok(LanguageCode::Sna),
1480            "SND" => Ok(LanguageCode::Snd),
1481            "SNK" => Ok(LanguageCode::Snk),
1482            "SOG" => Ok(LanguageCode::Sog),
1483            "SOM" => Ok(LanguageCode::Som),
1484            "SON" => Ok(LanguageCode::Son),
1485            "SOT" => Ok(LanguageCode::Sot),
1486            "SPA" => Ok(LanguageCode::Spa),
1487            "SRD" => Ok(LanguageCode::Srd),
1488            "SRN" => Ok(LanguageCode::Srn),
1489            "SRP" => Ok(LanguageCode::Srp),
1490            "SRR" => Ok(LanguageCode::Srr),
1491            "SSA" => Ok(LanguageCode::Ssa),
1492            "SSW" => Ok(LanguageCode::Ssw),
1493            "SUK" => Ok(LanguageCode::Suk),
1494            "SUN" => Ok(LanguageCode::Sun),
1495            "SUS" => Ok(LanguageCode::Sus),
1496            "SUX" => Ok(LanguageCode::Sux),
1497            "SWA" => Ok(LanguageCode::Swa),
1498            "SWE" => Ok(LanguageCode::Swe),
1499            "SYC" => Ok(LanguageCode::Syc),
1500            "SYR" => Ok(LanguageCode::Syr),
1501            "TAH" => Ok(LanguageCode::Tah),
1502            "TAI" => Ok(LanguageCode::Tai),
1503            "TAM" => Ok(LanguageCode::Tam),
1504            "TAT" => Ok(LanguageCode::Tat),
1505            "TEL" => Ok(LanguageCode::Tel),
1506            "TEM" => Ok(LanguageCode::Tem),
1507            "TER" => Ok(LanguageCode::Ter),
1508            "TET" => Ok(LanguageCode::Tet),
1509            "TGK" => Ok(LanguageCode::Tgk),
1510            "TGL" => Ok(LanguageCode::Tgl),
1511            "THA" => Ok(LanguageCode::Tha),
1512            "TIB" => Ok(LanguageCode::Tib),
1513            "TIG" => Ok(LanguageCode::Tig),
1514            "TIR" => Ok(LanguageCode::Tir),
1515            "TIV" => Ok(LanguageCode::Tiv),
1516            "TKL" => Ok(LanguageCode::Tkl),
1517            "TLH" => Ok(LanguageCode::Tlh),
1518            "TLI" => Ok(LanguageCode::Tli),
1519            "TMH" => Ok(LanguageCode::Tmh),
1520            "TOG" => Ok(LanguageCode::Tog),
1521            "TON" => Ok(LanguageCode::Ton),
1522            "TPI" => Ok(LanguageCode::Tpi),
1523            "TSI" => Ok(LanguageCode::Tsi),
1524            "TSN" => Ok(LanguageCode::Tsn),
1525            "TSO" => Ok(LanguageCode::Tso),
1526            "TUK" => Ok(LanguageCode::Tuk),
1527            "TUM" => Ok(LanguageCode::Tum),
1528            "TUP" => Ok(LanguageCode::Tup),
1529            "TUR" => Ok(LanguageCode::Tur),
1530            "TUT" => Ok(LanguageCode::Tut),
1531            "TVL" => Ok(LanguageCode::Tvl),
1532            "TWI" => Ok(LanguageCode::Twi),
1533            "TYV" => Ok(LanguageCode::Tyv),
1534            "UDM" => Ok(LanguageCode::Udm),
1535            "UGA" => Ok(LanguageCode::Uga),
1536            "UIG" => Ok(LanguageCode::Uig),
1537            "UKR" => Ok(LanguageCode::Ukr),
1538            "UMB" => Ok(LanguageCode::Umb),
1539            "UND" => Ok(LanguageCode::Und),
1540            "URD" => Ok(LanguageCode::Urd),
1541            "UZB" => Ok(LanguageCode::Uzb),
1542            "VAI" => Ok(LanguageCode::Vai),
1543            "VEN" => Ok(LanguageCode::Ven),
1544            "VIE" => Ok(LanguageCode::Vie),
1545            "VOL" => Ok(LanguageCode::Vol),
1546            "VOT" => Ok(LanguageCode::Vot),
1547            "WAK" => Ok(LanguageCode::Wak),
1548            "WAL" => Ok(LanguageCode::Wal),
1549            "WAR" => Ok(LanguageCode::War),
1550            "WAS" => Ok(LanguageCode::Was),
1551            "WEL" => Ok(LanguageCode::Wel),
1552            "WEN" => Ok(LanguageCode::Wen),
1553            "WLN" => Ok(LanguageCode::Wln),
1554            "WOL" => Ok(LanguageCode::Wol),
1555            "XAL" => Ok(LanguageCode::Xal),
1556            "XHO" => Ok(LanguageCode::Xho),
1557            "YAO" => Ok(LanguageCode::Yao),
1558            "YAP" => Ok(LanguageCode::Yap),
1559            "YID" => Ok(LanguageCode::Yid),
1560            "YOR" => Ok(LanguageCode::Yor),
1561            "YPK" => Ok(LanguageCode::Ypk),
1562            "ZAP" => Ok(LanguageCode::Zap),
1563            "ZBL" => Ok(LanguageCode::Zbl),
1564            "ZEN" => Ok(LanguageCode::Zen),
1565            "ZGH" => Ok(LanguageCode::Zgh),
1566            "ZHA" => Ok(LanguageCode::Zha),
1567            "ZND" => Ok(LanguageCode::Znd),
1568            "ZUL" => Ok(LanguageCode::Zul),
1569            "ZUN" => Ok(LanguageCode::Zun),
1570            "ZXX" => Ok(LanguageCode::Zxx),
1571            "ZZA" => Ok(LanguageCode::Zza),
1572            _ => Err(ThothError::InvalidLanguageCode(input.to_string())),
1573        }
1574    }
1575}
1576
1577#[test]
1578fn test_languagecode_default() {
1579    let langcode: LanguageCode = Default::default();
1580    assert_eq!(langcode, LanguageCode::Eng);
1581}
1582
1583#[test]
1584fn test_languagerelation_default() {
1585    let langrelation: LanguageRelation = Default::default();
1586    assert_eq!(langrelation, LanguageRelation::Original);
1587}
1588
1589#[test]
1590fn test_languagerelation_display() {
1591    assert_eq!(format!("{}", LanguageRelation::Original), "Original");
1592    assert_eq!(
1593        format!("{}", LanguageRelation::TranslatedFrom),
1594        "Translated From"
1595    );
1596    assert_eq!(
1597        format!("{}", LanguageRelation::TranslatedInto),
1598        "Translated Into"
1599    );
1600}
1601
1602#[test]
1603fn test_languagecode_display() {
1604    assert_eq!(format!("{}", LanguageCode::Aar), "AAR");
1605    assert_eq!(format!("{}", LanguageCode::Abk), "ABK");
1606    assert_eq!(format!("{}", LanguageCode::Ace), "ACE");
1607    assert_eq!(format!("{}", LanguageCode::Ach), "ACH");
1608    assert_eq!(format!("{}", LanguageCode::Ada), "ADA");
1609    assert_eq!(format!("{}", LanguageCode::Ady), "ADY");
1610    assert_eq!(format!("{}", LanguageCode::Afa), "AFA");
1611    assert_eq!(format!("{}", LanguageCode::Afh), "AFH");
1612    assert_eq!(format!("{}", LanguageCode::Afr), "AFR");
1613    assert_eq!(format!("{}", LanguageCode::Ain), "AIN");
1614    assert_eq!(format!("{}", LanguageCode::Aka), "AKA");
1615    assert_eq!(format!("{}", LanguageCode::Akk), "AKK");
1616    assert_eq!(format!("{}", LanguageCode::Alb), "ALB");
1617    assert_eq!(format!("{}", LanguageCode::Ale), "ALE");
1618    assert_eq!(format!("{}", LanguageCode::Alg), "ALG");
1619    assert_eq!(format!("{}", LanguageCode::Alt), "ALT");
1620    assert_eq!(format!("{}", LanguageCode::Amh), "AMH");
1621    assert_eq!(format!("{}", LanguageCode::Ang), "ANG");
1622    assert_eq!(format!("{}", LanguageCode::Anp), "ANP");
1623    assert_eq!(format!("{}", LanguageCode::Apa), "APA");
1624    assert_eq!(format!("{}", LanguageCode::Ara), "ARA");
1625    assert_eq!(format!("{}", LanguageCode::Arc), "ARC");
1626    assert_eq!(format!("{}", LanguageCode::Arg), "ARG");
1627    assert_eq!(format!("{}", LanguageCode::Arm), "ARM");
1628    assert_eq!(format!("{}", LanguageCode::Arn), "ARN");
1629    assert_eq!(format!("{}", LanguageCode::Arp), "ARP");
1630    assert_eq!(format!("{}", LanguageCode::Art), "ART");
1631    assert_eq!(format!("{}", LanguageCode::Arw), "ARW");
1632    assert_eq!(format!("{}", LanguageCode::Asm), "ASM");
1633    assert_eq!(format!("{}", LanguageCode::Ast), "AST");
1634    assert_eq!(format!("{}", LanguageCode::Ath), "ATH");
1635    assert_eq!(format!("{}", LanguageCode::Aus), "AUS");
1636    assert_eq!(format!("{}", LanguageCode::Ava), "AVA");
1637    assert_eq!(format!("{}", LanguageCode::Ave), "AVE");
1638    assert_eq!(format!("{}", LanguageCode::Awa), "AWA");
1639    assert_eq!(format!("{}", LanguageCode::Aym), "AYM");
1640    assert_eq!(format!("{}", LanguageCode::Aze), "AZE");
1641    assert_eq!(format!("{}", LanguageCode::Bad), "BAD");
1642    assert_eq!(format!("{}", LanguageCode::Bai), "BAI");
1643    assert_eq!(format!("{}", LanguageCode::Bak), "BAK");
1644    assert_eq!(format!("{}", LanguageCode::Bal), "BAL");
1645    assert_eq!(format!("{}", LanguageCode::Bam), "BAM");
1646    assert_eq!(format!("{}", LanguageCode::Ban), "BAN");
1647    assert_eq!(format!("{}", LanguageCode::Baq), "BAQ");
1648    assert_eq!(format!("{}", LanguageCode::Bas), "BAS");
1649    assert_eq!(format!("{}", LanguageCode::Bat), "BAT");
1650    assert_eq!(format!("{}", LanguageCode::Bej), "BEJ");
1651    assert_eq!(format!("{}", LanguageCode::Bel), "BEL");
1652    assert_eq!(format!("{}", LanguageCode::Bem), "BEM");
1653    assert_eq!(format!("{}", LanguageCode::Ben), "BEN");
1654    assert_eq!(format!("{}", LanguageCode::Ber), "BER");
1655    assert_eq!(format!("{}", LanguageCode::Bho), "BHO");
1656    assert_eq!(format!("{}", LanguageCode::Bih), "BIH");
1657    assert_eq!(format!("{}", LanguageCode::Bik), "BIK");
1658    assert_eq!(format!("{}", LanguageCode::Bin), "BIN");
1659    assert_eq!(format!("{}", LanguageCode::Bis), "BIS");
1660    assert_eq!(format!("{}", LanguageCode::Bla), "BLA");
1661    assert_eq!(format!("{}", LanguageCode::Bnt), "BNT");
1662    assert_eq!(format!("{}", LanguageCode::Bos), "BOS");
1663    assert_eq!(format!("{}", LanguageCode::Bra), "BRA");
1664    assert_eq!(format!("{}", LanguageCode::Bre), "BRE");
1665    assert_eq!(format!("{}", LanguageCode::Btk), "BTK");
1666    assert_eq!(format!("{}", LanguageCode::Bua), "BUA");
1667    assert_eq!(format!("{}", LanguageCode::Bug), "BUG");
1668    assert_eq!(format!("{}", LanguageCode::Bul), "BUL");
1669    assert_eq!(format!("{}", LanguageCode::Bur), "BUR");
1670    assert_eq!(format!("{}", LanguageCode::Byn), "BYN");
1671    assert_eq!(format!("{}", LanguageCode::Cad), "CAD");
1672    assert_eq!(format!("{}", LanguageCode::Cai), "CAI");
1673    assert_eq!(format!("{}", LanguageCode::Car), "CAR");
1674    assert_eq!(format!("{}", LanguageCode::Cat), "CAT");
1675    assert_eq!(format!("{}", LanguageCode::Cau), "CAU");
1676    assert_eq!(format!("{}", LanguageCode::Ceb), "CEB");
1677    assert_eq!(format!("{}", LanguageCode::Cel), "CEL");
1678    assert_eq!(format!("{}", LanguageCode::Cha), "CHA");
1679    assert_eq!(format!("{}", LanguageCode::Chb), "CHB");
1680    assert_eq!(format!("{}", LanguageCode::Che), "CHE");
1681    assert_eq!(format!("{}", LanguageCode::Chg), "CHG");
1682    assert_eq!(format!("{}", LanguageCode::Chi), "CHI");
1683    assert_eq!(format!("{}", LanguageCode::Chk), "CHK");
1684    assert_eq!(format!("{}", LanguageCode::Chm), "CHM");
1685    assert_eq!(format!("{}", LanguageCode::Chn), "CHN");
1686    assert_eq!(format!("{}", LanguageCode::Cho), "CHO");
1687    assert_eq!(format!("{}", LanguageCode::Chp), "CHP");
1688    assert_eq!(format!("{}", LanguageCode::Chr), "CHR");
1689    assert_eq!(format!("{}", LanguageCode::Chu), "CHU");
1690    assert_eq!(format!("{}", LanguageCode::Chv), "CHV");
1691    assert_eq!(format!("{}", LanguageCode::Chy), "CHY");
1692    assert_eq!(format!("{}", LanguageCode::Cmc), "CMC");
1693    assert_eq!(format!("{}", LanguageCode::Cnr), "CNR");
1694    assert_eq!(format!("{}", LanguageCode::Cop), "COP");
1695    assert_eq!(format!("{}", LanguageCode::Cor), "COR");
1696    assert_eq!(format!("{}", LanguageCode::Cos), "COS");
1697    assert_eq!(format!("{}", LanguageCode::Cpe), "CPE");
1698    assert_eq!(format!("{}", LanguageCode::Cpf), "CPF");
1699    assert_eq!(format!("{}", LanguageCode::Cpp), "CPP");
1700    assert_eq!(format!("{}", LanguageCode::Cre), "CRE");
1701    assert_eq!(format!("{}", LanguageCode::Crh), "CRH");
1702    assert_eq!(format!("{}", LanguageCode::Crp), "CRP");
1703    assert_eq!(format!("{}", LanguageCode::Csb), "CSB");
1704    assert_eq!(format!("{}", LanguageCode::Cus), "CUS");
1705    assert_eq!(format!("{}", LanguageCode::Cze), "CZE");
1706    assert_eq!(format!("{}", LanguageCode::Dak), "DAK");
1707    assert_eq!(format!("{}", LanguageCode::Dan), "DAN");
1708    assert_eq!(format!("{}", LanguageCode::Dar), "DAR");
1709    assert_eq!(format!("{}", LanguageCode::Day), "DAY");
1710    assert_eq!(format!("{}", LanguageCode::Del), "DEL");
1711    assert_eq!(format!("{}", LanguageCode::Den), "DEN");
1712    assert_eq!(format!("{}", LanguageCode::Dgr), "DGR");
1713    assert_eq!(format!("{}", LanguageCode::Din), "DIN");
1714    assert_eq!(format!("{}", LanguageCode::Div), "DIV");
1715    assert_eq!(format!("{}", LanguageCode::Doi), "DOI");
1716    assert_eq!(format!("{}", LanguageCode::Dra), "DRA");
1717    assert_eq!(format!("{}", LanguageCode::Dsb), "DSB");
1718    assert_eq!(format!("{}", LanguageCode::Dua), "DUA");
1719    assert_eq!(format!("{}", LanguageCode::Dum), "DUM");
1720    assert_eq!(format!("{}", LanguageCode::Dut), "DUT");
1721    assert_eq!(format!("{}", LanguageCode::Dyu), "DYU");
1722    assert_eq!(format!("{}", LanguageCode::Dzo), "DZO");
1723    assert_eq!(format!("{}", LanguageCode::Efi), "EFI");
1724    assert_eq!(format!("{}", LanguageCode::Egy), "EGY");
1725    assert_eq!(format!("{}", LanguageCode::Eka), "EKA");
1726    assert_eq!(format!("{}", LanguageCode::Elx), "ELX");
1727    assert_eq!(format!("{}", LanguageCode::Eng), "ENG");
1728    assert_eq!(format!("{}", LanguageCode::Enm), "ENM");
1729    assert_eq!(format!("{}", LanguageCode::Epo), "EPO");
1730    assert_eq!(format!("{}", LanguageCode::Est), "EST");
1731    assert_eq!(format!("{}", LanguageCode::Ewe), "EWE");
1732    assert_eq!(format!("{}", LanguageCode::Ewo), "EWO");
1733    assert_eq!(format!("{}", LanguageCode::Fan), "FAN");
1734    assert_eq!(format!("{}", LanguageCode::Fao), "FAO");
1735    assert_eq!(format!("{}", LanguageCode::Fat), "FAT");
1736    assert_eq!(format!("{}", LanguageCode::Fij), "FIJ");
1737    assert_eq!(format!("{}", LanguageCode::Fil), "FIL");
1738    assert_eq!(format!("{}", LanguageCode::Fin), "FIN");
1739    assert_eq!(format!("{}", LanguageCode::Fiu), "FIU");
1740    assert_eq!(format!("{}", LanguageCode::Fon), "FON");
1741    assert_eq!(format!("{}", LanguageCode::Fre), "FRE");
1742    assert_eq!(format!("{}", LanguageCode::Frm), "FRM");
1743    assert_eq!(format!("{}", LanguageCode::Fro), "FRO");
1744    assert_eq!(format!("{}", LanguageCode::Frr), "FRR");
1745    assert_eq!(format!("{}", LanguageCode::Frs), "FRS");
1746    assert_eq!(format!("{}", LanguageCode::Fry), "FRY");
1747    assert_eq!(format!("{}", LanguageCode::Ful), "FUL");
1748    assert_eq!(format!("{}", LanguageCode::Fur), "FUR");
1749    assert_eq!(format!("{}", LanguageCode::Gaa), "GAA");
1750    assert_eq!(format!("{}", LanguageCode::Gay), "GAY");
1751    assert_eq!(format!("{}", LanguageCode::Gba), "GBA");
1752    assert_eq!(format!("{}", LanguageCode::Gem), "GEM");
1753    assert_eq!(format!("{}", LanguageCode::Geo), "GEO");
1754    assert_eq!(format!("{}", LanguageCode::Ger), "GER");
1755    assert_eq!(format!("{}", LanguageCode::Gez), "GEZ");
1756    assert_eq!(format!("{}", LanguageCode::Gil), "GIL");
1757    assert_eq!(format!("{}", LanguageCode::Gla), "GLA");
1758    assert_eq!(format!("{}", LanguageCode::Gle), "GLE");
1759    assert_eq!(format!("{}", LanguageCode::Glg), "GLG");
1760    assert_eq!(format!("{}", LanguageCode::Glv), "GLV");
1761    assert_eq!(format!("{}", LanguageCode::Gmh), "GMH");
1762    assert_eq!(format!("{}", LanguageCode::Goh), "GOH");
1763    assert_eq!(format!("{}", LanguageCode::Gon), "GON");
1764    assert_eq!(format!("{}", LanguageCode::Gor), "GOR");
1765    assert_eq!(format!("{}", LanguageCode::Got), "GOT");
1766    assert_eq!(format!("{}", LanguageCode::Grb), "GRB");
1767    assert_eq!(format!("{}", LanguageCode::Grc), "GRC");
1768    assert_eq!(format!("{}", LanguageCode::Gre), "GRE");
1769    assert_eq!(format!("{}", LanguageCode::Grn), "GRN");
1770    assert_eq!(format!("{}", LanguageCode::Gsw), "GSW");
1771    assert_eq!(format!("{}", LanguageCode::Guj), "GUJ");
1772    assert_eq!(format!("{}", LanguageCode::Gwi), "GWI");
1773    assert_eq!(format!("{}", LanguageCode::Hai), "HAI");
1774    assert_eq!(format!("{}", LanguageCode::Hat), "HAT");
1775    assert_eq!(format!("{}", LanguageCode::Hau), "HAU");
1776    assert_eq!(format!("{}", LanguageCode::Haw), "HAW");
1777    assert_eq!(format!("{}", LanguageCode::Heb), "HEB");
1778    assert_eq!(format!("{}", LanguageCode::Her), "HER");
1779    assert_eq!(format!("{}", LanguageCode::Hil), "HIL");
1780    assert_eq!(format!("{}", LanguageCode::Him), "HIM");
1781    assert_eq!(format!("{}", LanguageCode::Hin), "HIN");
1782    assert_eq!(format!("{}", LanguageCode::Hit), "HIT");
1783    assert_eq!(format!("{}", LanguageCode::Hmn), "HMN");
1784    assert_eq!(format!("{}", LanguageCode::Hmo), "HMO");
1785    assert_eq!(format!("{}", LanguageCode::Hrv), "HRV");
1786    assert_eq!(format!("{}", LanguageCode::Hsb), "HSB");
1787    assert_eq!(format!("{}", LanguageCode::Hun), "HUN");
1788    assert_eq!(format!("{}", LanguageCode::Hup), "HUP");
1789    assert_eq!(format!("{}", LanguageCode::Iba), "IBA");
1790    assert_eq!(format!("{}", LanguageCode::Ibo), "IBO");
1791    assert_eq!(format!("{}", LanguageCode::Ice), "ICE");
1792    assert_eq!(format!("{}", LanguageCode::Ido), "IDO");
1793    assert_eq!(format!("{}", LanguageCode::Iii), "III");
1794    assert_eq!(format!("{}", LanguageCode::Ijo), "IJO");
1795    assert_eq!(format!("{}", LanguageCode::Iku), "IKU");
1796    assert_eq!(format!("{}", LanguageCode::Ile), "ILE");
1797    assert_eq!(format!("{}", LanguageCode::Ilo), "ILO");
1798    assert_eq!(format!("{}", LanguageCode::Ina), "INA");
1799    assert_eq!(format!("{}", LanguageCode::Inc), "INC");
1800    assert_eq!(format!("{}", LanguageCode::Ind), "IND");
1801    assert_eq!(format!("{}", LanguageCode::Ine), "INE");
1802    assert_eq!(format!("{}", LanguageCode::Inh), "INH");
1803    assert_eq!(format!("{}", LanguageCode::Ipk), "IPK");
1804    assert_eq!(format!("{}", LanguageCode::Ira), "IRA");
1805    assert_eq!(format!("{}", LanguageCode::Iro), "IRO");
1806    assert_eq!(format!("{}", LanguageCode::Ita), "ITA");
1807    assert_eq!(format!("{}", LanguageCode::Jav), "JAV");
1808    assert_eq!(format!("{}", LanguageCode::Jbo), "JBO");
1809    assert_eq!(format!("{}", LanguageCode::Jpn), "JPN");
1810    assert_eq!(format!("{}", LanguageCode::Jpr), "JPR");
1811    assert_eq!(format!("{}", LanguageCode::Jrb), "JRB");
1812    assert_eq!(format!("{}", LanguageCode::Kaa), "KAA");
1813    assert_eq!(format!("{}", LanguageCode::Kab), "KAB");
1814    assert_eq!(format!("{}", LanguageCode::Kac), "KAC");
1815    assert_eq!(format!("{}", LanguageCode::Kal), "KAL");
1816    assert_eq!(format!("{}", LanguageCode::Kam), "KAM");
1817    assert_eq!(format!("{}", LanguageCode::Kan), "KAN");
1818    assert_eq!(format!("{}", LanguageCode::Kar), "KAR");
1819    assert_eq!(format!("{}", LanguageCode::Kas), "KAS");
1820    assert_eq!(format!("{}", LanguageCode::Kau), "KAU");
1821    assert_eq!(format!("{}", LanguageCode::Kaw), "KAW");
1822    assert_eq!(format!("{}", LanguageCode::Kaz), "KAZ");
1823    assert_eq!(format!("{}", LanguageCode::Kbd), "KBD");
1824    assert_eq!(format!("{}", LanguageCode::Kha), "KHA");
1825    assert_eq!(format!("{}", LanguageCode::Khi), "KHI");
1826    assert_eq!(format!("{}", LanguageCode::Khm), "KHM");
1827    assert_eq!(format!("{}", LanguageCode::Kho), "KHO");
1828    assert_eq!(format!("{}", LanguageCode::Kik), "KIK");
1829    assert_eq!(format!("{}", LanguageCode::Kin), "KIN");
1830    assert_eq!(format!("{}", LanguageCode::Kir), "KIR");
1831    assert_eq!(format!("{}", LanguageCode::Kmb), "KMB");
1832    assert_eq!(format!("{}", LanguageCode::Kok), "KOK");
1833    assert_eq!(format!("{}", LanguageCode::Kom), "KOM");
1834    assert_eq!(format!("{}", LanguageCode::Kon), "KON");
1835    assert_eq!(format!("{}", LanguageCode::Kor), "KOR");
1836    assert_eq!(format!("{}", LanguageCode::Kos), "KOS");
1837    assert_eq!(format!("{}", LanguageCode::Kpe), "KPE");
1838    assert_eq!(format!("{}", LanguageCode::Krc), "KRC");
1839    assert_eq!(format!("{}", LanguageCode::Krl), "KRL");
1840    assert_eq!(format!("{}", LanguageCode::Kro), "KRO");
1841    assert_eq!(format!("{}", LanguageCode::Kru), "KRU");
1842    assert_eq!(format!("{}", LanguageCode::Kua), "KUA");
1843    assert_eq!(format!("{}", LanguageCode::Kum), "KUM");
1844    assert_eq!(format!("{}", LanguageCode::Kur), "KUR");
1845    assert_eq!(format!("{}", LanguageCode::Kut), "KUT");
1846    assert_eq!(format!("{}", LanguageCode::Lad), "LAD");
1847    assert_eq!(format!("{}", LanguageCode::Lah), "LAH");
1848    assert_eq!(format!("{}", LanguageCode::Lam), "LAM");
1849    assert_eq!(format!("{}", LanguageCode::Lao), "LAO");
1850    assert_eq!(format!("{}", LanguageCode::Lat), "LAT");
1851    assert_eq!(format!("{}", LanguageCode::Lav), "LAV");
1852    assert_eq!(format!("{}", LanguageCode::Lez), "LEZ");
1853    assert_eq!(format!("{}", LanguageCode::Lim), "LIM");
1854    assert_eq!(format!("{}", LanguageCode::Lin), "LIN");
1855    assert_eq!(format!("{}", LanguageCode::Lit), "LIT");
1856    assert_eq!(format!("{}", LanguageCode::Lol), "LOL");
1857    assert_eq!(format!("{}", LanguageCode::Loz), "LOZ");
1858    assert_eq!(format!("{}", LanguageCode::Ltz), "LTZ");
1859    assert_eq!(format!("{}", LanguageCode::Lua), "LUA");
1860    assert_eq!(format!("{}", LanguageCode::Lub), "LUB");
1861    assert_eq!(format!("{}", LanguageCode::Lug), "LUG");
1862    assert_eq!(format!("{}", LanguageCode::Lui), "LUI");
1863    assert_eq!(format!("{}", LanguageCode::Lun), "LUN");
1864    assert_eq!(format!("{}", LanguageCode::Luo), "LUO");
1865    assert_eq!(format!("{}", LanguageCode::Lus), "LUS");
1866    assert_eq!(format!("{}", LanguageCode::Mac), "MAC");
1867    assert_eq!(format!("{}", LanguageCode::Mad), "MAD");
1868    assert_eq!(format!("{}", LanguageCode::Mag), "MAG");
1869    assert_eq!(format!("{}", LanguageCode::Mah), "MAH");
1870    assert_eq!(format!("{}", LanguageCode::Mai), "MAI");
1871    assert_eq!(format!("{}", LanguageCode::Mak), "MAK");
1872    assert_eq!(format!("{}", LanguageCode::Mal), "MAL");
1873    assert_eq!(format!("{}", LanguageCode::Man), "MAN");
1874    assert_eq!(format!("{}", LanguageCode::Mao), "MAO");
1875    assert_eq!(format!("{}", LanguageCode::Map), "MAP");
1876    assert_eq!(format!("{}", LanguageCode::Mar), "MAR");
1877    assert_eq!(format!("{}", LanguageCode::Mas), "MAS");
1878    assert_eq!(format!("{}", LanguageCode::May), "MAY");
1879    assert_eq!(format!("{}", LanguageCode::Mdf), "MDF");
1880    assert_eq!(format!("{}", LanguageCode::Mdr), "MDR");
1881    assert_eq!(format!("{}", LanguageCode::Men), "MEN");
1882    assert_eq!(format!("{}", LanguageCode::Mga), "MGA");
1883    assert_eq!(format!("{}", LanguageCode::Mic), "MIC");
1884    assert_eq!(format!("{}", LanguageCode::Min), "MIN");
1885    assert_eq!(format!("{}", LanguageCode::Mis), "MIS");
1886    assert_eq!(format!("{}", LanguageCode::Mkh), "MKH");
1887    assert_eq!(format!("{}", LanguageCode::Mlg), "MLG");
1888    assert_eq!(format!("{}", LanguageCode::Mlt), "MLT");
1889    assert_eq!(format!("{}", LanguageCode::Mnc), "MNC");
1890    assert_eq!(format!("{}", LanguageCode::Mni), "MNI");
1891    assert_eq!(format!("{}", LanguageCode::Mno), "MNO");
1892    assert_eq!(format!("{}", LanguageCode::Moh), "MOH");
1893    assert_eq!(format!("{}", LanguageCode::Mon), "MON");
1894    assert_eq!(format!("{}", LanguageCode::Mos), "MOS");
1895    assert_eq!(format!("{}", LanguageCode::Mul), "MUL");
1896    assert_eq!(format!("{}", LanguageCode::Mun), "MUN");
1897    assert_eq!(format!("{}", LanguageCode::Mus), "MUS");
1898    assert_eq!(format!("{}", LanguageCode::Mwl), "MWL");
1899    assert_eq!(format!("{}", LanguageCode::Mwr), "MWR");
1900    assert_eq!(format!("{}", LanguageCode::Myn), "MYN");
1901    assert_eq!(format!("{}", LanguageCode::Myv), "MYV");
1902    assert_eq!(format!("{}", LanguageCode::Nah), "NAH");
1903    assert_eq!(format!("{}", LanguageCode::Nai), "NAI");
1904    assert_eq!(format!("{}", LanguageCode::Nap), "NAP");
1905    assert_eq!(format!("{}", LanguageCode::Nau), "NAU");
1906    assert_eq!(format!("{}", LanguageCode::Nav), "NAV");
1907    assert_eq!(format!("{}", LanguageCode::Nbl), "NBL");
1908    assert_eq!(format!("{}", LanguageCode::Nde), "NDE");
1909    assert_eq!(format!("{}", LanguageCode::Ndo), "NDO");
1910    assert_eq!(format!("{}", LanguageCode::Nds), "NDS");
1911    assert_eq!(format!("{}", LanguageCode::Nep), "NEP");
1912    assert_eq!(format!("{}", LanguageCode::New), "NEW");
1913    assert_eq!(format!("{}", LanguageCode::Nia), "NIA");
1914    assert_eq!(format!("{}", LanguageCode::Nic), "NIC");
1915    assert_eq!(format!("{}", LanguageCode::Niu), "NIU");
1916    assert_eq!(format!("{}", LanguageCode::Nno), "NNO");
1917    assert_eq!(format!("{}", LanguageCode::Nob), "NOB");
1918    assert_eq!(format!("{}", LanguageCode::Nog), "NOG");
1919    assert_eq!(format!("{}", LanguageCode::Non), "NON");
1920    assert_eq!(format!("{}", LanguageCode::Nor), "NOR");
1921    assert_eq!(format!("{}", LanguageCode::Nqo), "NQO");
1922    assert_eq!(format!("{}", LanguageCode::Nso), "NSO");
1923    assert_eq!(format!("{}", LanguageCode::Nub), "NUB");
1924    assert_eq!(format!("{}", LanguageCode::Nwc), "NWC");
1925    assert_eq!(format!("{}", LanguageCode::Nya), "NYA");
1926    assert_eq!(format!("{}", LanguageCode::Nym), "NYM");
1927    assert_eq!(format!("{}", LanguageCode::Nyn), "NYN");
1928    assert_eq!(format!("{}", LanguageCode::Nyo), "NYO");
1929    assert_eq!(format!("{}", LanguageCode::Nzi), "NZI");
1930    assert_eq!(format!("{}", LanguageCode::Oci), "OCI");
1931    assert_eq!(format!("{}", LanguageCode::Oji), "OJI");
1932    assert_eq!(format!("{}", LanguageCode::Ori), "ORI");
1933    assert_eq!(format!("{}", LanguageCode::Orm), "ORM");
1934    assert_eq!(format!("{}", LanguageCode::Osa), "OSA");
1935    assert_eq!(format!("{}", LanguageCode::Oss), "OSS");
1936    assert_eq!(format!("{}", LanguageCode::Ota), "OTA");
1937    assert_eq!(format!("{}", LanguageCode::Oto), "OTO");
1938    assert_eq!(format!("{}", LanguageCode::Paa), "PAA");
1939    assert_eq!(format!("{}", LanguageCode::Pag), "PAG");
1940    assert_eq!(format!("{}", LanguageCode::Pal), "PAL");
1941    assert_eq!(format!("{}", LanguageCode::Pam), "PAM");
1942    assert_eq!(format!("{}", LanguageCode::Pan), "PAN");
1943    assert_eq!(format!("{}", LanguageCode::Pap), "PAP");
1944    assert_eq!(format!("{}", LanguageCode::Pau), "PAU");
1945    assert_eq!(format!("{}", LanguageCode::Peo), "PEO");
1946    assert_eq!(format!("{}", LanguageCode::Per), "PER");
1947    assert_eq!(format!("{}", LanguageCode::Phi), "PHI");
1948    assert_eq!(format!("{}", LanguageCode::Phn), "PHN");
1949    assert_eq!(format!("{}", LanguageCode::Pli), "PLI");
1950    assert_eq!(format!("{}", LanguageCode::Pol), "POL");
1951    assert_eq!(format!("{}", LanguageCode::Pon), "PON");
1952    assert_eq!(format!("{}", LanguageCode::Por), "POR");
1953    assert_eq!(format!("{}", LanguageCode::Pra), "PRA");
1954    assert_eq!(format!("{}", LanguageCode::Pro), "PRO");
1955    assert_eq!(format!("{}", LanguageCode::Pus), "PUS");
1956    assert_eq!(format!("{}", LanguageCode::Qaa), "QAA");
1957    assert_eq!(format!("{}", LanguageCode::Que), "QUE");
1958    assert_eq!(format!("{}", LanguageCode::Raj), "RAJ");
1959    assert_eq!(format!("{}", LanguageCode::Rap), "RAP");
1960    assert_eq!(format!("{}", LanguageCode::Rar), "RAR");
1961    assert_eq!(format!("{}", LanguageCode::Roa), "ROA");
1962    assert_eq!(format!("{}", LanguageCode::Roh), "ROH");
1963    assert_eq!(format!("{}", LanguageCode::Rom), "ROM");
1964    assert_eq!(format!("{}", LanguageCode::Rum), "RUM");
1965    assert_eq!(format!("{}", LanguageCode::Run), "RUN");
1966    assert_eq!(format!("{}", LanguageCode::Rup), "RUP");
1967    assert_eq!(format!("{}", LanguageCode::Rus), "RUS");
1968    assert_eq!(format!("{}", LanguageCode::Sad), "SAD");
1969    assert_eq!(format!("{}", LanguageCode::Sag), "SAG");
1970    assert_eq!(format!("{}", LanguageCode::Sah), "SAH");
1971    assert_eq!(format!("{}", LanguageCode::Sai), "SAI");
1972    assert_eq!(format!("{}", LanguageCode::Sal), "SAL");
1973    assert_eq!(format!("{}", LanguageCode::Sam), "SAM");
1974    assert_eq!(format!("{}", LanguageCode::San), "SAN");
1975    assert_eq!(format!("{}", LanguageCode::Sas), "SAS");
1976    assert_eq!(format!("{}", LanguageCode::Sat), "SAT");
1977    assert_eq!(format!("{}", LanguageCode::Scn), "SCN");
1978    assert_eq!(format!("{}", LanguageCode::Sco), "SCO");
1979    assert_eq!(format!("{}", LanguageCode::Sel), "SEL");
1980    assert_eq!(format!("{}", LanguageCode::Sem), "SEM");
1981    assert_eq!(format!("{}", LanguageCode::Sga), "SGA");
1982    assert_eq!(format!("{}", LanguageCode::Sgn), "SGN");
1983    assert_eq!(format!("{}", LanguageCode::Shn), "SHN");
1984    assert_eq!(format!("{}", LanguageCode::Sid), "SID");
1985    assert_eq!(format!("{}", LanguageCode::Sin), "SIN");
1986    assert_eq!(format!("{}", LanguageCode::Sio), "SIO");
1987    assert_eq!(format!("{}", LanguageCode::Sit), "SIT");
1988    assert_eq!(format!("{}", LanguageCode::Sla), "SLA");
1989    assert_eq!(format!("{}", LanguageCode::Slo), "SLO");
1990    assert_eq!(format!("{}", LanguageCode::Slv), "SLV");
1991    assert_eq!(format!("{}", LanguageCode::Sma), "SMA");
1992    assert_eq!(format!("{}", LanguageCode::Sme), "SME");
1993    assert_eq!(format!("{}", LanguageCode::Smi), "SMI");
1994    assert_eq!(format!("{}", LanguageCode::Smj), "SMJ");
1995    assert_eq!(format!("{}", LanguageCode::Smn), "SMN");
1996    assert_eq!(format!("{}", LanguageCode::Smo), "SMO");
1997    assert_eq!(format!("{}", LanguageCode::Sms), "SMS");
1998    assert_eq!(format!("{}", LanguageCode::Sna), "SNA");
1999    assert_eq!(format!("{}", LanguageCode::Snd), "SND");
2000    assert_eq!(format!("{}", LanguageCode::Snk), "SNK");
2001    assert_eq!(format!("{}", LanguageCode::Sog), "SOG");
2002    assert_eq!(format!("{}", LanguageCode::Som), "SOM");
2003    assert_eq!(format!("{}", LanguageCode::Son), "SON");
2004    assert_eq!(format!("{}", LanguageCode::Sot), "SOT");
2005    assert_eq!(format!("{}", LanguageCode::Spa), "SPA");
2006    assert_eq!(format!("{}", LanguageCode::Srd), "SRD");
2007    assert_eq!(format!("{}", LanguageCode::Srn), "SRN");
2008    assert_eq!(format!("{}", LanguageCode::Srp), "SRP");
2009    assert_eq!(format!("{}", LanguageCode::Srr), "SRR");
2010    assert_eq!(format!("{}", LanguageCode::Ssa), "SSA");
2011    assert_eq!(format!("{}", LanguageCode::Ssw), "SSW");
2012    assert_eq!(format!("{}", LanguageCode::Suk), "SUK");
2013    assert_eq!(format!("{}", LanguageCode::Sun), "SUN");
2014    assert_eq!(format!("{}", LanguageCode::Sus), "SUS");
2015    assert_eq!(format!("{}", LanguageCode::Sux), "SUX");
2016    assert_eq!(format!("{}", LanguageCode::Swa), "SWA");
2017    assert_eq!(format!("{}", LanguageCode::Swe), "SWE");
2018    assert_eq!(format!("{}", LanguageCode::Syc), "SYC");
2019    assert_eq!(format!("{}", LanguageCode::Syr), "SYR");
2020    assert_eq!(format!("{}", LanguageCode::Tah), "TAH");
2021    assert_eq!(format!("{}", LanguageCode::Tai), "TAI");
2022    assert_eq!(format!("{}", LanguageCode::Tam), "TAM");
2023    assert_eq!(format!("{}", LanguageCode::Tat), "TAT");
2024    assert_eq!(format!("{}", LanguageCode::Tel), "TEL");
2025    assert_eq!(format!("{}", LanguageCode::Tem), "TEM");
2026    assert_eq!(format!("{}", LanguageCode::Ter), "TER");
2027    assert_eq!(format!("{}", LanguageCode::Tet), "TET");
2028    assert_eq!(format!("{}", LanguageCode::Tgk), "TGK");
2029    assert_eq!(format!("{}", LanguageCode::Tgl), "TGL");
2030    assert_eq!(format!("{}", LanguageCode::Tha), "THA");
2031    assert_eq!(format!("{}", LanguageCode::Tib), "TIB");
2032    assert_eq!(format!("{}", LanguageCode::Tig), "TIG");
2033    assert_eq!(format!("{}", LanguageCode::Tir), "TIR");
2034    assert_eq!(format!("{}", LanguageCode::Tiv), "TIV");
2035    assert_eq!(format!("{}", LanguageCode::Tkl), "TKL");
2036    assert_eq!(format!("{}", LanguageCode::Tlh), "TLH");
2037    assert_eq!(format!("{}", LanguageCode::Tli), "TLI");
2038    assert_eq!(format!("{}", LanguageCode::Tmh), "TMH");
2039    assert_eq!(format!("{}", LanguageCode::Tog), "TOG");
2040    assert_eq!(format!("{}", LanguageCode::Ton), "TON");
2041    assert_eq!(format!("{}", LanguageCode::Tpi), "TPI");
2042    assert_eq!(format!("{}", LanguageCode::Tsi), "TSI");
2043    assert_eq!(format!("{}", LanguageCode::Tsn), "TSN");
2044    assert_eq!(format!("{}", LanguageCode::Tso), "TSO");
2045    assert_eq!(format!("{}", LanguageCode::Tuk), "TUK");
2046    assert_eq!(format!("{}", LanguageCode::Tum), "TUM");
2047    assert_eq!(format!("{}", LanguageCode::Tup), "TUP");
2048    assert_eq!(format!("{}", LanguageCode::Tur), "TUR");
2049    assert_eq!(format!("{}", LanguageCode::Tut), "TUT");
2050    assert_eq!(format!("{}", LanguageCode::Tvl), "TVL");
2051    assert_eq!(format!("{}", LanguageCode::Twi), "TWI");
2052    assert_eq!(format!("{}", LanguageCode::Tyv), "TYV");
2053    assert_eq!(format!("{}", LanguageCode::Udm), "UDM");
2054    assert_eq!(format!("{}", LanguageCode::Uga), "UGA");
2055    assert_eq!(format!("{}", LanguageCode::Uig), "UIG");
2056    assert_eq!(format!("{}", LanguageCode::Ukr), "UKR");
2057    assert_eq!(format!("{}", LanguageCode::Umb), "UMB");
2058    assert_eq!(format!("{}", LanguageCode::Und), "UND");
2059    assert_eq!(format!("{}", LanguageCode::Urd), "URD");
2060    assert_eq!(format!("{}", LanguageCode::Uzb), "UZB");
2061    assert_eq!(format!("{}", LanguageCode::Vai), "VAI");
2062    assert_eq!(format!("{}", LanguageCode::Ven), "VEN");
2063    assert_eq!(format!("{}", LanguageCode::Vie), "VIE");
2064    assert_eq!(format!("{}", LanguageCode::Vol), "VOL");
2065    assert_eq!(format!("{}", LanguageCode::Vot), "VOT");
2066    assert_eq!(format!("{}", LanguageCode::Wak), "WAK");
2067    assert_eq!(format!("{}", LanguageCode::Wal), "WAL");
2068    assert_eq!(format!("{}", LanguageCode::War), "WAR");
2069    assert_eq!(format!("{}", LanguageCode::Was), "WAS");
2070    assert_eq!(format!("{}", LanguageCode::Wel), "WEL");
2071    assert_eq!(format!("{}", LanguageCode::Wen), "WEN");
2072    assert_eq!(format!("{}", LanguageCode::Wln), "WLN");
2073    assert_eq!(format!("{}", LanguageCode::Wol), "WOL");
2074    assert_eq!(format!("{}", LanguageCode::Xal), "XAL");
2075    assert_eq!(format!("{}", LanguageCode::Xho), "XHO");
2076    assert_eq!(format!("{}", LanguageCode::Yao), "YAO");
2077    assert_eq!(format!("{}", LanguageCode::Yap), "YAP");
2078    assert_eq!(format!("{}", LanguageCode::Yid), "YID");
2079    assert_eq!(format!("{}", LanguageCode::Yor), "YOR");
2080    assert_eq!(format!("{}", LanguageCode::Ypk), "YPK");
2081    assert_eq!(format!("{}", LanguageCode::Zap), "ZAP");
2082    assert_eq!(format!("{}", LanguageCode::Zbl), "ZBL");
2083    assert_eq!(format!("{}", LanguageCode::Zen), "ZEN");
2084    assert_eq!(format!("{}", LanguageCode::Zgh), "ZGH");
2085    assert_eq!(format!("{}", LanguageCode::Zha), "ZHA");
2086    assert_eq!(format!("{}", LanguageCode::Znd), "ZND");
2087    assert_eq!(format!("{}", LanguageCode::Zul), "ZUL");
2088    assert_eq!(format!("{}", LanguageCode::Zun), "ZUN");
2089    assert_eq!(format!("{}", LanguageCode::Zxx), "ZXX");
2090    assert_eq!(format!("{}", LanguageCode::Zza), "ZZA");
2091}
2092
2093#[test]
2094fn test_languagerelation_fromstr() {
2095    assert_eq!(
2096        LanguageRelation::from_str("Original").unwrap(),
2097        LanguageRelation::Original
2098    );
2099    assert_eq!(
2100        LanguageRelation::from_str("Translated From").unwrap(),
2101        LanguageRelation::TranslatedFrom
2102    );
2103    assert_eq!(
2104        LanguageRelation::from_str("Translated Into").unwrap(),
2105        LanguageRelation::TranslatedInto
2106    );
2107
2108    assert!(LanguageRelation::from_str("Invented").is_err());
2109}
2110
2111#[test]
2112fn test_languagecode_fromstr() {
2113    assert_eq!(LanguageCode::from_str("AAR").unwrap(), LanguageCode::Aar);
2114    assert_eq!(LanguageCode::from_str("ABK").unwrap(), LanguageCode::Abk);
2115    assert_eq!(LanguageCode::from_str("ACE").unwrap(), LanguageCode::Ace);
2116    assert_eq!(LanguageCode::from_str("ACH").unwrap(), LanguageCode::Ach);
2117    assert_eq!(LanguageCode::from_str("ADA").unwrap(), LanguageCode::Ada);
2118    assert_eq!(LanguageCode::from_str("ADY").unwrap(), LanguageCode::Ady);
2119    assert_eq!(LanguageCode::from_str("AFA").unwrap(), LanguageCode::Afa);
2120    assert_eq!(LanguageCode::from_str("AFH").unwrap(), LanguageCode::Afh);
2121    assert_eq!(LanguageCode::from_str("AFR").unwrap(), LanguageCode::Afr);
2122    assert_eq!(LanguageCode::from_str("AIN").unwrap(), LanguageCode::Ain);
2123    assert_eq!(LanguageCode::from_str("AKA").unwrap(), LanguageCode::Aka);
2124    assert_eq!(LanguageCode::from_str("AKK").unwrap(), LanguageCode::Akk);
2125    assert_eq!(LanguageCode::from_str("ALB").unwrap(), LanguageCode::Alb);
2126    assert_eq!(LanguageCode::from_str("ALE").unwrap(), LanguageCode::Ale);
2127    assert_eq!(LanguageCode::from_str("ALG").unwrap(), LanguageCode::Alg);
2128    assert_eq!(LanguageCode::from_str("ALT").unwrap(), LanguageCode::Alt);
2129    assert_eq!(LanguageCode::from_str("AMH").unwrap(), LanguageCode::Amh);
2130    assert_eq!(LanguageCode::from_str("ANG").unwrap(), LanguageCode::Ang);
2131    assert_eq!(LanguageCode::from_str("ANP").unwrap(), LanguageCode::Anp);
2132    assert_eq!(LanguageCode::from_str("APA").unwrap(), LanguageCode::Apa);
2133    assert_eq!(LanguageCode::from_str("ARA").unwrap(), LanguageCode::Ara);
2134    assert_eq!(LanguageCode::from_str("ARC").unwrap(), LanguageCode::Arc);
2135    assert_eq!(LanguageCode::from_str("ARG").unwrap(), LanguageCode::Arg);
2136    assert_eq!(LanguageCode::from_str("ARM").unwrap(), LanguageCode::Arm);
2137    assert_eq!(LanguageCode::from_str("ARN").unwrap(), LanguageCode::Arn);
2138    assert_eq!(LanguageCode::from_str("ARP").unwrap(), LanguageCode::Arp);
2139    assert_eq!(LanguageCode::from_str("ART").unwrap(), LanguageCode::Art);
2140    assert_eq!(LanguageCode::from_str("ARW").unwrap(), LanguageCode::Arw);
2141    assert_eq!(LanguageCode::from_str("ASM").unwrap(), LanguageCode::Asm);
2142    assert_eq!(LanguageCode::from_str("AST").unwrap(), LanguageCode::Ast);
2143    assert_eq!(LanguageCode::from_str("ATH").unwrap(), LanguageCode::Ath);
2144    assert_eq!(LanguageCode::from_str("AUS").unwrap(), LanguageCode::Aus);
2145    assert_eq!(LanguageCode::from_str("AVA").unwrap(), LanguageCode::Ava);
2146    assert_eq!(LanguageCode::from_str("AVE").unwrap(), LanguageCode::Ave);
2147    assert_eq!(LanguageCode::from_str("AWA").unwrap(), LanguageCode::Awa);
2148    assert_eq!(LanguageCode::from_str("AYM").unwrap(), LanguageCode::Aym);
2149    assert_eq!(LanguageCode::from_str("AZE").unwrap(), LanguageCode::Aze);
2150    assert_eq!(LanguageCode::from_str("BAD").unwrap(), LanguageCode::Bad);
2151    assert_eq!(LanguageCode::from_str("BAI").unwrap(), LanguageCode::Bai);
2152    assert_eq!(LanguageCode::from_str("BAK").unwrap(), LanguageCode::Bak);
2153    assert_eq!(LanguageCode::from_str("BAL").unwrap(), LanguageCode::Bal);
2154    assert_eq!(LanguageCode::from_str("BAM").unwrap(), LanguageCode::Bam);
2155    assert_eq!(LanguageCode::from_str("BAN").unwrap(), LanguageCode::Ban);
2156    assert_eq!(LanguageCode::from_str("BAQ").unwrap(), LanguageCode::Baq);
2157    assert_eq!(LanguageCode::from_str("BAS").unwrap(), LanguageCode::Bas);
2158    assert_eq!(LanguageCode::from_str("BAT").unwrap(), LanguageCode::Bat);
2159    assert_eq!(LanguageCode::from_str("BEJ").unwrap(), LanguageCode::Bej);
2160    assert_eq!(LanguageCode::from_str("BEL").unwrap(), LanguageCode::Bel);
2161    assert_eq!(LanguageCode::from_str("BEM").unwrap(), LanguageCode::Bem);
2162    assert_eq!(LanguageCode::from_str("BEN").unwrap(), LanguageCode::Ben);
2163    assert_eq!(LanguageCode::from_str("BER").unwrap(), LanguageCode::Ber);
2164    assert_eq!(LanguageCode::from_str("BHO").unwrap(), LanguageCode::Bho);
2165    assert_eq!(LanguageCode::from_str("BIH").unwrap(), LanguageCode::Bih);
2166    assert_eq!(LanguageCode::from_str("BIK").unwrap(), LanguageCode::Bik);
2167    assert_eq!(LanguageCode::from_str("BIN").unwrap(), LanguageCode::Bin);
2168    assert_eq!(LanguageCode::from_str("BIS").unwrap(), LanguageCode::Bis);
2169    assert_eq!(LanguageCode::from_str("BLA").unwrap(), LanguageCode::Bla);
2170    assert_eq!(LanguageCode::from_str("BNT").unwrap(), LanguageCode::Bnt);
2171    assert_eq!(LanguageCode::from_str("BOS").unwrap(), LanguageCode::Bos);
2172    assert_eq!(LanguageCode::from_str("BRA").unwrap(), LanguageCode::Bra);
2173    assert_eq!(LanguageCode::from_str("BRE").unwrap(), LanguageCode::Bre);
2174    assert_eq!(LanguageCode::from_str("BTK").unwrap(), LanguageCode::Btk);
2175    assert_eq!(LanguageCode::from_str("BUA").unwrap(), LanguageCode::Bua);
2176    assert_eq!(LanguageCode::from_str("BUG").unwrap(), LanguageCode::Bug);
2177    assert_eq!(LanguageCode::from_str("BUL").unwrap(), LanguageCode::Bul);
2178    assert_eq!(LanguageCode::from_str("BUR").unwrap(), LanguageCode::Bur);
2179    assert_eq!(LanguageCode::from_str("BYN").unwrap(), LanguageCode::Byn);
2180    assert_eq!(LanguageCode::from_str("CAD").unwrap(), LanguageCode::Cad);
2181    assert_eq!(LanguageCode::from_str("CAI").unwrap(), LanguageCode::Cai);
2182    assert_eq!(LanguageCode::from_str("CAR").unwrap(), LanguageCode::Car);
2183    assert_eq!(LanguageCode::from_str("CAT").unwrap(), LanguageCode::Cat);
2184    assert_eq!(LanguageCode::from_str("CAU").unwrap(), LanguageCode::Cau);
2185    assert_eq!(LanguageCode::from_str("CEB").unwrap(), LanguageCode::Ceb);
2186    assert_eq!(LanguageCode::from_str("CEL").unwrap(), LanguageCode::Cel);
2187    assert_eq!(LanguageCode::from_str("CHA").unwrap(), LanguageCode::Cha);
2188    assert_eq!(LanguageCode::from_str("CHB").unwrap(), LanguageCode::Chb);
2189    assert_eq!(LanguageCode::from_str("CHE").unwrap(), LanguageCode::Che);
2190    assert_eq!(LanguageCode::from_str("CHG").unwrap(), LanguageCode::Chg);
2191    assert_eq!(LanguageCode::from_str("CHI").unwrap(), LanguageCode::Chi);
2192    assert_eq!(LanguageCode::from_str("CHK").unwrap(), LanguageCode::Chk);
2193    assert_eq!(LanguageCode::from_str("CHM").unwrap(), LanguageCode::Chm);
2194    assert_eq!(LanguageCode::from_str("CHN").unwrap(), LanguageCode::Chn);
2195    assert_eq!(LanguageCode::from_str("CHO").unwrap(), LanguageCode::Cho);
2196    assert_eq!(LanguageCode::from_str("CHP").unwrap(), LanguageCode::Chp);
2197    assert_eq!(LanguageCode::from_str("CHR").unwrap(), LanguageCode::Chr);
2198    assert_eq!(LanguageCode::from_str("CHU").unwrap(), LanguageCode::Chu);
2199    assert_eq!(LanguageCode::from_str("CHV").unwrap(), LanguageCode::Chv);
2200    assert_eq!(LanguageCode::from_str("CHY").unwrap(), LanguageCode::Chy);
2201    assert_eq!(LanguageCode::from_str("CMC").unwrap(), LanguageCode::Cmc);
2202    assert_eq!(LanguageCode::from_str("CNR").unwrap(), LanguageCode::Cnr);
2203    assert_eq!(LanguageCode::from_str("COP").unwrap(), LanguageCode::Cop);
2204    assert_eq!(LanguageCode::from_str("COR").unwrap(), LanguageCode::Cor);
2205    assert_eq!(LanguageCode::from_str("COS").unwrap(), LanguageCode::Cos);
2206    assert_eq!(LanguageCode::from_str("CPE").unwrap(), LanguageCode::Cpe);
2207    assert_eq!(LanguageCode::from_str("CPF").unwrap(), LanguageCode::Cpf);
2208    assert_eq!(LanguageCode::from_str("CPP").unwrap(), LanguageCode::Cpp);
2209    assert_eq!(LanguageCode::from_str("CRE").unwrap(), LanguageCode::Cre);
2210    assert_eq!(LanguageCode::from_str("CRH").unwrap(), LanguageCode::Crh);
2211    assert_eq!(LanguageCode::from_str("CRP").unwrap(), LanguageCode::Crp);
2212    assert_eq!(LanguageCode::from_str("CSB").unwrap(), LanguageCode::Csb);
2213    assert_eq!(LanguageCode::from_str("CUS").unwrap(), LanguageCode::Cus);
2214    assert_eq!(LanguageCode::from_str("CZE").unwrap(), LanguageCode::Cze);
2215    assert_eq!(LanguageCode::from_str("DAK").unwrap(), LanguageCode::Dak);
2216    assert_eq!(LanguageCode::from_str("DAN").unwrap(), LanguageCode::Dan);
2217    assert_eq!(LanguageCode::from_str("DAR").unwrap(), LanguageCode::Dar);
2218    assert_eq!(LanguageCode::from_str("DAY").unwrap(), LanguageCode::Day);
2219    assert_eq!(LanguageCode::from_str("DEL").unwrap(), LanguageCode::Del);
2220    assert_eq!(LanguageCode::from_str("DEN").unwrap(), LanguageCode::Den);
2221    assert_eq!(LanguageCode::from_str("DGR").unwrap(), LanguageCode::Dgr);
2222    assert_eq!(LanguageCode::from_str("DIN").unwrap(), LanguageCode::Din);
2223    assert_eq!(LanguageCode::from_str("DIV").unwrap(), LanguageCode::Div);
2224    assert_eq!(LanguageCode::from_str("DOI").unwrap(), LanguageCode::Doi);
2225    assert_eq!(LanguageCode::from_str("DRA").unwrap(), LanguageCode::Dra);
2226    assert_eq!(LanguageCode::from_str("DSB").unwrap(), LanguageCode::Dsb);
2227    assert_eq!(LanguageCode::from_str("DUA").unwrap(), LanguageCode::Dua);
2228    assert_eq!(LanguageCode::from_str("DUM").unwrap(), LanguageCode::Dum);
2229    assert_eq!(LanguageCode::from_str("DUT").unwrap(), LanguageCode::Dut);
2230    assert_eq!(LanguageCode::from_str("DYU").unwrap(), LanguageCode::Dyu);
2231    assert_eq!(LanguageCode::from_str("DZO").unwrap(), LanguageCode::Dzo);
2232    assert_eq!(LanguageCode::from_str("EFI").unwrap(), LanguageCode::Efi);
2233    assert_eq!(LanguageCode::from_str("EGY").unwrap(), LanguageCode::Egy);
2234    assert_eq!(LanguageCode::from_str("EKA").unwrap(), LanguageCode::Eka);
2235    assert_eq!(LanguageCode::from_str("ELX").unwrap(), LanguageCode::Elx);
2236    assert_eq!(LanguageCode::from_str("ENG").unwrap(), LanguageCode::Eng);
2237    assert_eq!(LanguageCode::from_str("ENM").unwrap(), LanguageCode::Enm);
2238    assert_eq!(LanguageCode::from_str("EPO").unwrap(), LanguageCode::Epo);
2239    assert_eq!(LanguageCode::from_str("EST").unwrap(), LanguageCode::Est);
2240    assert_eq!(LanguageCode::from_str("EWE").unwrap(), LanguageCode::Ewe);
2241    assert_eq!(LanguageCode::from_str("EWO").unwrap(), LanguageCode::Ewo);
2242    assert_eq!(LanguageCode::from_str("FAN").unwrap(), LanguageCode::Fan);
2243    assert_eq!(LanguageCode::from_str("FAO").unwrap(), LanguageCode::Fao);
2244    assert_eq!(LanguageCode::from_str("FAT").unwrap(), LanguageCode::Fat);
2245    assert_eq!(LanguageCode::from_str("FIJ").unwrap(), LanguageCode::Fij);
2246    assert_eq!(LanguageCode::from_str("FIL").unwrap(), LanguageCode::Fil);
2247    assert_eq!(LanguageCode::from_str("FIN").unwrap(), LanguageCode::Fin);
2248    assert_eq!(LanguageCode::from_str("FIU").unwrap(), LanguageCode::Fiu);
2249    assert_eq!(LanguageCode::from_str("FON").unwrap(), LanguageCode::Fon);
2250    assert_eq!(LanguageCode::from_str("FRE").unwrap(), LanguageCode::Fre);
2251    assert_eq!(LanguageCode::from_str("FRM").unwrap(), LanguageCode::Frm);
2252    assert_eq!(LanguageCode::from_str("FRO").unwrap(), LanguageCode::Fro);
2253    assert_eq!(LanguageCode::from_str("FRR").unwrap(), LanguageCode::Frr);
2254    assert_eq!(LanguageCode::from_str("FRS").unwrap(), LanguageCode::Frs);
2255    assert_eq!(LanguageCode::from_str("FRY").unwrap(), LanguageCode::Fry);
2256    assert_eq!(LanguageCode::from_str("FUL").unwrap(), LanguageCode::Ful);
2257    assert_eq!(LanguageCode::from_str("FUR").unwrap(), LanguageCode::Fur);
2258    assert_eq!(LanguageCode::from_str("GAA").unwrap(), LanguageCode::Gaa);
2259    assert_eq!(LanguageCode::from_str("GAY").unwrap(), LanguageCode::Gay);
2260    assert_eq!(LanguageCode::from_str("GBA").unwrap(), LanguageCode::Gba);
2261    assert_eq!(LanguageCode::from_str("GEM").unwrap(), LanguageCode::Gem);
2262    assert_eq!(LanguageCode::from_str("GEO").unwrap(), LanguageCode::Geo);
2263    assert_eq!(LanguageCode::from_str("GER").unwrap(), LanguageCode::Ger);
2264    assert_eq!(LanguageCode::from_str("GEZ").unwrap(), LanguageCode::Gez);
2265    assert_eq!(LanguageCode::from_str("GIL").unwrap(), LanguageCode::Gil);
2266    assert_eq!(LanguageCode::from_str("GLA").unwrap(), LanguageCode::Gla);
2267    assert_eq!(LanguageCode::from_str("GLE").unwrap(), LanguageCode::Gle);
2268    assert_eq!(LanguageCode::from_str("GLG").unwrap(), LanguageCode::Glg);
2269    assert_eq!(LanguageCode::from_str("GLV").unwrap(), LanguageCode::Glv);
2270    assert_eq!(LanguageCode::from_str("GMH").unwrap(), LanguageCode::Gmh);
2271    assert_eq!(LanguageCode::from_str("GOH").unwrap(), LanguageCode::Goh);
2272    assert_eq!(LanguageCode::from_str("GON").unwrap(), LanguageCode::Gon);
2273    assert_eq!(LanguageCode::from_str("GOR").unwrap(), LanguageCode::Gor);
2274    assert_eq!(LanguageCode::from_str("GOT").unwrap(), LanguageCode::Got);
2275    assert_eq!(LanguageCode::from_str("GRB").unwrap(), LanguageCode::Grb);
2276    assert_eq!(LanguageCode::from_str("GRC").unwrap(), LanguageCode::Grc);
2277    assert_eq!(LanguageCode::from_str("GRE").unwrap(), LanguageCode::Gre);
2278    assert_eq!(LanguageCode::from_str("GRN").unwrap(), LanguageCode::Grn);
2279    assert_eq!(LanguageCode::from_str("GSW").unwrap(), LanguageCode::Gsw);
2280    assert_eq!(LanguageCode::from_str("GUJ").unwrap(), LanguageCode::Guj);
2281    assert_eq!(LanguageCode::from_str("GWI").unwrap(), LanguageCode::Gwi);
2282    assert_eq!(LanguageCode::from_str("HAI").unwrap(), LanguageCode::Hai);
2283    assert_eq!(LanguageCode::from_str("HAT").unwrap(), LanguageCode::Hat);
2284    assert_eq!(LanguageCode::from_str("HAU").unwrap(), LanguageCode::Hau);
2285    assert_eq!(LanguageCode::from_str("HAW").unwrap(), LanguageCode::Haw);
2286    assert_eq!(LanguageCode::from_str("HEB").unwrap(), LanguageCode::Heb);
2287    assert_eq!(LanguageCode::from_str("HER").unwrap(), LanguageCode::Her);
2288    assert_eq!(LanguageCode::from_str("HIL").unwrap(), LanguageCode::Hil);
2289    assert_eq!(LanguageCode::from_str("HIM").unwrap(), LanguageCode::Him);
2290    assert_eq!(LanguageCode::from_str("HIN").unwrap(), LanguageCode::Hin);
2291    assert_eq!(LanguageCode::from_str("HIT").unwrap(), LanguageCode::Hit);
2292    assert_eq!(LanguageCode::from_str("HMN").unwrap(), LanguageCode::Hmn);
2293    assert_eq!(LanguageCode::from_str("HMO").unwrap(), LanguageCode::Hmo);
2294    assert_eq!(LanguageCode::from_str("HRV").unwrap(), LanguageCode::Hrv);
2295    assert_eq!(LanguageCode::from_str("HSB").unwrap(), LanguageCode::Hsb);
2296    assert_eq!(LanguageCode::from_str("HUN").unwrap(), LanguageCode::Hun);
2297    assert_eq!(LanguageCode::from_str("HUP").unwrap(), LanguageCode::Hup);
2298    assert_eq!(LanguageCode::from_str("IBA").unwrap(), LanguageCode::Iba);
2299    assert_eq!(LanguageCode::from_str("IBO").unwrap(), LanguageCode::Ibo);
2300    assert_eq!(LanguageCode::from_str("ICE").unwrap(), LanguageCode::Ice);
2301    assert_eq!(LanguageCode::from_str("IDO").unwrap(), LanguageCode::Ido);
2302    assert_eq!(LanguageCode::from_str("III").unwrap(), LanguageCode::Iii);
2303    assert_eq!(LanguageCode::from_str("IJO").unwrap(), LanguageCode::Ijo);
2304    assert_eq!(LanguageCode::from_str("IKU").unwrap(), LanguageCode::Iku);
2305    assert_eq!(LanguageCode::from_str("ILE").unwrap(), LanguageCode::Ile);
2306    assert_eq!(LanguageCode::from_str("ILO").unwrap(), LanguageCode::Ilo);
2307    assert_eq!(LanguageCode::from_str("INA").unwrap(), LanguageCode::Ina);
2308    assert_eq!(LanguageCode::from_str("INC").unwrap(), LanguageCode::Inc);
2309    assert_eq!(LanguageCode::from_str("IND").unwrap(), LanguageCode::Ind);
2310    assert_eq!(LanguageCode::from_str("INE").unwrap(), LanguageCode::Ine);
2311    assert_eq!(LanguageCode::from_str("INH").unwrap(), LanguageCode::Inh);
2312    assert_eq!(LanguageCode::from_str("IPK").unwrap(), LanguageCode::Ipk);
2313    assert_eq!(LanguageCode::from_str("IRA").unwrap(), LanguageCode::Ira);
2314    assert_eq!(LanguageCode::from_str("IRO").unwrap(), LanguageCode::Iro);
2315    assert_eq!(LanguageCode::from_str("ITA").unwrap(), LanguageCode::Ita);
2316    assert_eq!(LanguageCode::from_str("JAV").unwrap(), LanguageCode::Jav);
2317    assert_eq!(LanguageCode::from_str("JBO").unwrap(), LanguageCode::Jbo);
2318    assert_eq!(LanguageCode::from_str("JPN").unwrap(), LanguageCode::Jpn);
2319    assert_eq!(LanguageCode::from_str("JPR").unwrap(), LanguageCode::Jpr);
2320    assert_eq!(LanguageCode::from_str("JRB").unwrap(), LanguageCode::Jrb);
2321    assert_eq!(LanguageCode::from_str("KAA").unwrap(), LanguageCode::Kaa);
2322    assert_eq!(LanguageCode::from_str("KAB").unwrap(), LanguageCode::Kab);
2323    assert_eq!(LanguageCode::from_str("KAC").unwrap(), LanguageCode::Kac);
2324    assert_eq!(LanguageCode::from_str("KAL").unwrap(), LanguageCode::Kal);
2325    assert_eq!(LanguageCode::from_str("KAM").unwrap(), LanguageCode::Kam);
2326    assert_eq!(LanguageCode::from_str("KAN").unwrap(), LanguageCode::Kan);
2327    assert_eq!(LanguageCode::from_str("KAR").unwrap(), LanguageCode::Kar);
2328    assert_eq!(LanguageCode::from_str("KAS").unwrap(), LanguageCode::Kas);
2329    assert_eq!(LanguageCode::from_str("KAU").unwrap(), LanguageCode::Kau);
2330    assert_eq!(LanguageCode::from_str("KAW").unwrap(), LanguageCode::Kaw);
2331    assert_eq!(LanguageCode::from_str("KAZ").unwrap(), LanguageCode::Kaz);
2332    assert_eq!(LanguageCode::from_str("KBD").unwrap(), LanguageCode::Kbd);
2333    assert_eq!(LanguageCode::from_str("KHA").unwrap(), LanguageCode::Kha);
2334    assert_eq!(LanguageCode::from_str("KHI").unwrap(), LanguageCode::Khi);
2335    assert_eq!(LanguageCode::from_str("KHM").unwrap(), LanguageCode::Khm);
2336    assert_eq!(LanguageCode::from_str("KHO").unwrap(), LanguageCode::Kho);
2337    assert_eq!(LanguageCode::from_str("KIK").unwrap(), LanguageCode::Kik);
2338    assert_eq!(LanguageCode::from_str("KIN").unwrap(), LanguageCode::Kin);
2339    assert_eq!(LanguageCode::from_str("KIR").unwrap(), LanguageCode::Kir);
2340    assert_eq!(LanguageCode::from_str("KMB").unwrap(), LanguageCode::Kmb);
2341    assert_eq!(LanguageCode::from_str("KOK").unwrap(), LanguageCode::Kok);
2342    assert_eq!(LanguageCode::from_str("KOM").unwrap(), LanguageCode::Kom);
2343    assert_eq!(LanguageCode::from_str("KON").unwrap(), LanguageCode::Kon);
2344    assert_eq!(LanguageCode::from_str("KOR").unwrap(), LanguageCode::Kor);
2345    assert_eq!(LanguageCode::from_str("KOS").unwrap(), LanguageCode::Kos);
2346    assert_eq!(LanguageCode::from_str("KPE").unwrap(), LanguageCode::Kpe);
2347    assert_eq!(LanguageCode::from_str("KRC").unwrap(), LanguageCode::Krc);
2348    assert_eq!(LanguageCode::from_str("KRL").unwrap(), LanguageCode::Krl);
2349    assert_eq!(LanguageCode::from_str("KRO").unwrap(), LanguageCode::Kro);
2350    assert_eq!(LanguageCode::from_str("KRU").unwrap(), LanguageCode::Kru);
2351    assert_eq!(LanguageCode::from_str("KUA").unwrap(), LanguageCode::Kua);
2352    assert_eq!(LanguageCode::from_str("KUM").unwrap(), LanguageCode::Kum);
2353    assert_eq!(LanguageCode::from_str("KUR").unwrap(), LanguageCode::Kur);
2354    assert_eq!(LanguageCode::from_str("KUT").unwrap(), LanguageCode::Kut);
2355    assert_eq!(LanguageCode::from_str("LAD").unwrap(), LanguageCode::Lad);
2356    assert_eq!(LanguageCode::from_str("LAH").unwrap(), LanguageCode::Lah);
2357    assert_eq!(LanguageCode::from_str("LAM").unwrap(), LanguageCode::Lam);
2358    assert_eq!(LanguageCode::from_str("LAO").unwrap(), LanguageCode::Lao);
2359    assert_eq!(LanguageCode::from_str("LAT").unwrap(), LanguageCode::Lat);
2360    assert_eq!(LanguageCode::from_str("LAV").unwrap(), LanguageCode::Lav);
2361    assert_eq!(LanguageCode::from_str("LEZ").unwrap(), LanguageCode::Lez);
2362    assert_eq!(LanguageCode::from_str("LIM").unwrap(), LanguageCode::Lim);
2363    assert_eq!(LanguageCode::from_str("LIN").unwrap(), LanguageCode::Lin);
2364    assert_eq!(LanguageCode::from_str("LIT").unwrap(), LanguageCode::Lit);
2365    assert_eq!(LanguageCode::from_str("LOL").unwrap(), LanguageCode::Lol);
2366    assert_eq!(LanguageCode::from_str("LOZ").unwrap(), LanguageCode::Loz);
2367    assert_eq!(LanguageCode::from_str("LTZ").unwrap(), LanguageCode::Ltz);
2368    assert_eq!(LanguageCode::from_str("LUA").unwrap(), LanguageCode::Lua);
2369    assert_eq!(LanguageCode::from_str("LUB").unwrap(), LanguageCode::Lub);
2370    assert_eq!(LanguageCode::from_str("LUG").unwrap(), LanguageCode::Lug);
2371    assert_eq!(LanguageCode::from_str("LUI").unwrap(), LanguageCode::Lui);
2372    assert_eq!(LanguageCode::from_str("LUN").unwrap(), LanguageCode::Lun);
2373    assert_eq!(LanguageCode::from_str("LUO").unwrap(), LanguageCode::Luo);
2374    assert_eq!(LanguageCode::from_str("LUS").unwrap(), LanguageCode::Lus);
2375    assert_eq!(LanguageCode::from_str("MAC").unwrap(), LanguageCode::Mac);
2376    assert_eq!(LanguageCode::from_str("MAD").unwrap(), LanguageCode::Mad);
2377    assert_eq!(LanguageCode::from_str("MAG").unwrap(), LanguageCode::Mag);
2378    assert_eq!(LanguageCode::from_str("MAH").unwrap(), LanguageCode::Mah);
2379    assert_eq!(LanguageCode::from_str("MAI").unwrap(), LanguageCode::Mai);
2380    assert_eq!(LanguageCode::from_str("MAK").unwrap(), LanguageCode::Mak);
2381    assert_eq!(LanguageCode::from_str("MAL").unwrap(), LanguageCode::Mal);
2382    assert_eq!(LanguageCode::from_str("MAN").unwrap(), LanguageCode::Man);
2383    assert_eq!(LanguageCode::from_str("MAO").unwrap(), LanguageCode::Mao);
2384    assert_eq!(LanguageCode::from_str("MAP").unwrap(), LanguageCode::Map);
2385    assert_eq!(LanguageCode::from_str("MAR").unwrap(), LanguageCode::Mar);
2386    assert_eq!(LanguageCode::from_str("MAS").unwrap(), LanguageCode::Mas);
2387    assert_eq!(LanguageCode::from_str("MAY").unwrap(), LanguageCode::May);
2388    assert_eq!(LanguageCode::from_str("MDF").unwrap(), LanguageCode::Mdf);
2389    assert_eq!(LanguageCode::from_str("MDR").unwrap(), LanguageCode::Mdr);
2390    assert_eq!(LanguageCode::from_str("MEN").unwrap(), LanguageCode::Men);
2391    assert_eq!(LanguageCode::from_str("MGA").unwrap(), LanguageCode::Mga);
2392    assert_eq!(LanguageCode::from_str("MIC").unwrap(), LanguageCode::Mic);
2393    assert_eq!(LanguageCode::from_str("MIN").unwrap(), LanguageCode::Min);
2394    assert_eq!(LanguageCode::from_str("MIS").unwrap(), LanguageCode::Mis);
2395    assert_eq!(LanguageCode::from_str("MKH").unwrap(), LanguageCode::Mkh);
2396    assert_eq!(LanguageCode::from_str("MLG").unwrap(), LanguageCode::Mlg);
2397    assert_eq!(LanguageCode::from_str("MLT").unwrap(), LanguageCode::Mlt);
2398    assert_eq!(LanguageCode::from_str("MNC").unwrap(), LanguageCode::Mnc);
2399    assert_eq!(LanguageCode::from_str("MNI").unwrap(), LanguageCode::Mni);
2400    assert_eq!(LanguageCode::from_str("MNO").unwrap(), LanguageCode::Mno);
2401    assert_eq!(LanguageCode::from_str("MOH").unwrap(), LanguageCode::Moh);
2402    assert_eq!(LanguageCode::from_str("MON").unwrap(), LanguageCode::Mon);
2403    assert_eq!(LanguageCode::from_str("MOS").unwrap(), LanguageCode::Mos);
2404    assert_eq!(LanguageCode::from_str("MUL").unwrap(), LanguageCode::Mul);
2405    assert_eq!(LanguageCode::from_str("MUN").unwrap(), LanguageCode::Mun);
2406    assert_eq!(LanguageCode::from_str("MUS").unwrap(), LanguageCode::Mus);
2407    assert_eq!(LanguageCode::from_str("MWL").unwrap(), LanguageCode::Mwl);
2408    assert_eq!(LanguageCode::from_str("MWR").unwrap(), LanguageCode::Mwr);
2409    assert_eq!(LanguageCode::from_str("MYN").unwrap(), LanguageCode::Myn);
2410    assert_eq!(LanguageCode::from_str("MYV").unwrap(), LanguageCode::Myv);
2411    assert_eq!(LanguageCode::from_str("NAH").unwrap(), LanguageCode::Nah);
2412    assert_eq!(LanguageCode::from_str("NAI").unwrap(), LanguageCode::Nai);
2413    assert_eq!(LanguageCode::from_str("NAP").unwrap(), LanguageCode::Nap);
2414    assert_eq!(LanguageCode::from_str("NAU").unwrap(), LanguageCode::Nau);
2415    assert_eq!(LanguageCode::from_str("NAV").unwrap(), LanguageCode::Nav);
2416    assert_eq!(LanguageCode::from_str("NBL").unwrap(), LanguageCode::Nbl);
2417    assert_eq!(LanguageCode::from_str("NDE").unwrap(), LanguageCode::Nde);
2418    assert_eq!(LanguageCode::from_str("NDO").unwrap(), LanguageCode::Ndo);
2419    assert_eq!(LanguageCode::from_str("NDS").unwrap(), LanguageCode::Nds);
2420    assert_eq!(LanguageCode::from_str("NEP").unwrap(), LanguageCode::Nep);
2421    assert_eq!(LanguageCode::from_str("NEW").unwrap(), LanguageCode::New);
2422    assert_eq!(LanguageCode::from_str("NIA").unwrap(), LanguageCode::Nia);
2423    assert_eq!(LanguageCode::from_str("NIC").unwrap(), LanguageCode::Nic);
2424    assert_eq!(LanguageCode::from_str("NIU").unwrap(), LanguageCode::Niu);
2425    assert_eq!(LanguageCode::from_str("NNO").unwrap(), LanguageCode::Nno);
2426    assert_eq!(LanguageCode::from_str("NOB").unwrap(), LanguageCode::Nob);
2427    assert_eq!(LanguageCode::from_str("NOG").unwrap(), LanguageCode::Nog);
2428    assert_eq!(LanguageCode::from_str("NON").unwrap(), LanguageCode::Non);
2429    assert_eq!(LanguageCode::from_str("NOR").unwrap(), LanguageCode::Nor);
2430    assert_eq!(LanguageCode::from_str("NQO").unwrap(), LanguageCode::Nqo);
2431    assert_eq!(LanguageCode::from_str("NSO").unwrap(), LanguageCode::Nso);
2432    assert_eq!(LanguageCode::from_str("NUB").unwrap(), LanguageCode::Nub);
2433    assert_eq!(LanguageCode::from_str("NWC").unwrap(), LanguageCode::Nwc);
2434    assert_eq!(LanguageCode::from_str("NYA").unwrap(), LanguageCode::Nya);
2435    assert_eq!(LanguageCode::from_str("NYM").unwrap(), LanguageCode::Nym);
2436    assert_eq!(LanguageCode::from_str("NYN").unwrap(), LanguageCode::Nyn);
2437    assert_eq!(LanguageCode::from_str("NYO").unwrap(), LanguageCode::Nyo);
2438    assert_eq!(LanguageCode::from_str("NZI").unwrap(), LanguageCode::Nzi);
2439    assert_eq!(LanguageCode::from_str("OCI").unwrap(), LanguageCode::Oci);
2440    assert_eq!(LanguageCode::from_str("OJI").unwrap(), LanguageCode::Oji);
2441    assert_eq!(LanguageCode::from_str("ORI").unwrap(), LanguageCode::Ori);
2442    assert_eq!(LanguageCode::from_str("ORM").unwrap(), LanguageCode::Orm);
2443    assert_eq!(LanguageCode::from_str("OSA").unwrap(), LanguageCode::Osa);
2444    assert_eq!(LanguageCode::from_str("OSS").unwrap(), LanguageCode::Oss);
2445    assert_eq!(LanguageCode::from_str("OTA").unwrap(), LanguageCode::Ota);
2446    assert_eq!(LanguageCode::from_str("OTO").unwrap(), LanguageCode::Oto);
2447    assert_eq!(LanguageCode::from_str("PAA").unwrap(), LanguageCode::Paa);
2448    assert_eq!(LanguageCode::from_str("PAG").unwrap(), LanguageCode::Pag);
2449    assert_eq!(LanguageCode::from_str("PAL").unwrap(), LanguageCode::Pal);
2450    assert_eq!(LanguageCode::from_str("PAM").unwrap(), LanguageCode::Pam);
2451    assert_eq!(LanguageCode::from_str("PAN").unwrap(), LanguageCode::Pan);
2452    assert_eq!(LanguageCode::from_str("PAP").unwrap(), LanguageCode::Pap);
2453    assert_eq!(LanguageCode::from_str("PAU").unwrap(), LanguageCode::Pau);
2454    assert_eq!(LanguageCode::from_str("PEO").unwrap(), LanguageCode::Peo);
2455    assert_eq!(LanguageCode::from_str("PER").unwrap(), LanguageCode::Per);
2456    assert_eq!(LanguageCode::from_str("PHI").unwrap(), LanguageCode::Phi);
2457    assert_eq!(LanguageCode::from_str("PHN").unwrap(), LanguageCode::Phn);
2458    assert_eq!(LanguageCode::from_str("PLI").unwrap(), LanguageCode::Pli);
2459    assert_eq!(LanguageCode::from_str("POL").unwrap(), LanguageCode::Pol);
2460    assert_eq!(LanguageCode::from_str("PON").unwrap(), LanguageCode::Pon);
2461    assert_eq!(LanguageCode::from_str("POR").unwrap(), LanguageCode::Por);
2462    assert_eq!(LanguageCode::from_str("PRA").unwrap(), LanguageCode::Pra);
2463    assert_eq!(LanguageCode::from_str("PRO").unwrap(), LanguageCode::Pro);
2464    assert_eq!(LanguageCode::from_str("PUS").unwrap(), LanguageCode::Pus);
2465    assert_eq!(LanguageCode::from_str("QAA").unwrap(), LanguageCode::Qaa);
2466    assert_eq!(LanguageCode::from_str("QUE").unwrap(), LanguageCode::Que);
2467    assert_eq!(LanguageCode::from_str("RAJ").unwrap(), LanguageCode::Raj);
2468    assert_eq!(LanguageCode::from_str("RAP").unwrap(), LanguageCode::Rap);
2469    assert_eq!(LanguageCode::from_str("RAR").unwrap(), LanguageCode::Rar);
2470    assert_eq!(LanguageCode::from_str("ROA").unwrap(), LanguageCode::Roa);
2471    assert_eq!(LanguageCode::from_str("ROH").unwrap(), LanguageCode::Roh);
2472    assert_eq!(LanguageCode::from_str("ROM").unwrap(), LanguageCode::Rom);
2473    assert_eq!(LanguageCode::from_str("RUM").unwrap(), LanguageCode::Rum);
2474    assert_eq!(LanguageCode::from_str("RUN").unwrap(), LanguageCode::Run);
2475    assert_eq!(LanguageCode::from_str("RUP").unwrap(), LanguageCode::Rup);
2476    assert_eq!(LanguageCode::from_str("RUS").unwrap(), LanguageCode::Rus);
2477    assert_eq!(LanguageCode::from_str("SAD").unwrap(), LanguageCode::Sad);
2478    assert_eq!(LanguageCode::from_str("SAG").unwrap(), LanguageCode::Sag);
2479    assert_eq!(LanguageCode::from_str("SAH").unwrap(), LanguageCode::Sah);
2480    assert_eq!(LanguageCode::from_str("SAI").unwrap(), LanguageCode::Sai);
2481    assert_eq!(LanguageCode::from_str("SAL").unwrap(), LanguageCode::Sal);
2482    assert_eq!(LanguageCode::from_str("SAM").unwrap(), LanguageCode::Sam);
2483    assert_eq!(LanguageCode::from_str("SAN").unwrap(), LanguageCode::San);
2484    assert_eq!(LanguageCode::from_str("SAS").unwrap(), LanguageCode::Sas);
2485    assert_eq!(LanguageCode::from_str("SAT").unwrap(), LanguageCode::Sat);
2486    assert_eq!(LanguageCode::from_str("SCN").unwrap(), LanguageCode::Scn);
2487    assert_eq!(LanguageCode::from_str("SCO").unwrap(), LanguageCode::Sco);
2488    assert_eq!(LanguageCode::from_str("SEL").unwrap(), LanguageCode::Sel);
2489    assert_eq!(LanguageCode::from_str("SEM").unwrap(), LanguageCode::Sem);
2490    assert_eq!(LanguageCode::from_str("SGA").unwrap(), LanguageCode::Sga);
2491    assert_eq!(LanguageCode::from_str("SGN").unwrap(), LanguageCode::Sgn);
2492    assert_eq!(LanguageCode::from_str("SHN").unwrap(), LanguageCode::Shn);
2493    assert_eq!(LanguageCode::from_str("SID").unwrap(), LanguageCode::Sid);
2494    assert_eq!(LanguageCode::from_str("SIN").unwrap(), LanguageCode::Sin);
2495    assert_eq!(LanguageCode::from_str("SIO").unwrap(), LanguageCode::Sio);
2496    assert_eq!(LanguageCode::from_str("SIT").unwrap(), LanguageCode::Sit);
2497    assert_eq!(LanguageCode::from_str("SLA").unwrap(), LanguageCode::Sla);
2498    assert_eq!(LanguageCode::from_str("SLO").unwrap(), LanguageCode::Slo);
2499    assert_eq!(LanguageCode::from_str("SLV").unwrap(), LanguageCode::Slv);
2500    assert_eq!(LanguageCode::from_str("SMA").unwrap(), LanguageCode::Sma);
2501    assert_eq!(LanguageCode::from_str("SME").unwrap(), LanguageCode::Sme);
2502    assert_eq!(LanguageCode::from_str("SMI").unwrap(), LanguageCode::Smi);
2503    assert_eq!(LanguageCode::from_str("SMJ").unwrap(), LanguageCode::Smj);
2504    assert_eq!(LanguageCode::from_str("SMN").unwrap(), LanguageCode::Smn);
2505    assert_eq!(LanguageCode::from_str("SMO").unwrap(), LanguageCode::Smo);
2506    assert_eq!(LanguageCode::from_str("SMS").unwrap(), LanguageCode::Sms);
2507    assert_eq!(LanguageCode::from_str("SNA").unwrap(), LanguageCode::Sna);
2508    assert_eq!(LanguageCode::from_str("SND").unwrap(), LanguageCode::Snd);
2509    assert_eq!(LanguageCode::from_str("SNK").unwrap(), LanguageCode::Snk);
2510    assert_eq!(LanguageCode::from_str("SOG").unwrap(), LanguageCode::Sog);
2511    assert_eq!(LanguageCode::from_str("SOM").unwrap(), LanguageCode::Som);
2512    assert_eq!(LanguageCode::from_str("SON").unwrap(), LanguageCode::Son);
2513    assert_eq!(LanguageCode::from_str("SOT").unwrap(), LanguageCode::Sot);
2514    assert_eq!(LanguageCode::from_str("SPA").unwrap(), LanguageCode::Spa);
2515    assert_eq!(LanguageCode::from_str("SRD").unwrap(), LanguageCode::Srd);
2516    assert_eq!(LanguageCode::from_str("SRN").unwrap(), LanguageCode::Srn);
2517    assert_eq!(LanguageCode::from_str("SRP").unwrap(), LanguageCode::Srp);
2518    assert_eq!(LanguageCode::from_str("SRR").unwrap(), LanguageCode::Srr);
2519    assert_eq!(LanguageCode::from_str("SSA").unwrap(), LanguageCode::Ssa);
2520    assert_eq!(LanguageCode::from_str("SSW").unwrap(), LanguageCode::Ssw);
2521    assert_eq!(LanguageCode::from_str("SUK").unwrap(), LanguageCode::Suk);
2522    assert_eq!(LanguageCode::from_str("SUN").unwrap(), LanguageCode::Sun);
2523    assert_eq!(LanguageCode::from_str("SUS").unwrap(), LanguageCode::Sus);
2524    assert_eq!(LanguageCode::from_str("SUX").unwrap(), LanguageCode::Sux);
2525    assert_eq!(LanguageCode::from_str("SWA").unwrap(), LanguageCode::Swa);
2526    assert_eq!(LanguageCode::from_str("SWE").unwrap(), LanguageCode::Swe);
2527    assert_eq!(LanguageCode::from_str("SYC").unwrap(), LanguageCode::Syc);
2528    assert_eq!(LanguageCode::from_str("SYR").unwrap(), LanguageCode::Syr);
2529    assert_eq!(LanguageCode::from_str("TAH").unwrap(), LanguageCode::Tah);
2530    assert_eq!(LanguageCode::from_str("TAI").unwrap(), LanguageCode::Tai);
2531    assert_eq!(LanguageCode::from_str("TAM").unwrap(), LanguageCode::Tam);
2532    assert_eq!(LanguageCode::from_str("TAT").unwrap(), LanguageCode::Tat);
2533    assert_eq!(LanguageCode::from_str("TEL").unwrap(), LanguageCode::Tel);
2534    assert_eq!(LanguageCode::from_str("TEM").unwrap(), LanguageCode::Tem);
2535    assert_eq!(LanguageCode::from_str("TER").unwrap(), LanguageCode::Ter);
2536    assert_eq!(LanguageCode::from_str("TET").unwrap(), LanguageCode::Tet);
2537    assert_eq!(LanguageCode::from_str("TGK").unwrap(), LanguageCode::Tgk);
2538    assert_eq!(LanguageCode::from_str("TGL").unwrap(), LanguageCode::Tgl);
2539    assert_eq!(LanguageCode::from_str("THA").unwrap(), LanguageCode::Tha);
2540    assert_eq!(LanguageCode::from_str("TIB").unwrap(), LanguageCode::Tib);
2541    assert_eq!(LanguageCode::from_str("TIG").unwrap(), LanguageCode::Tig);
2542    assert_eq!(LanguageCode::from_str("TIR").unwrap(), LanguageCode::Tir);
2543    assert_eq!(LanguageCode::from_str("TIV").unwrap(), LanguageCode::Tiv);
2544    assert_eq!(LanguageCode::from_str("TKL").unwrap(), LanguageCode::Tkl);
2545    assert_eq!(LanguageCode::from_str("TLH").unwrap(), LanguageCode::Tlh);
2546    assert_eq!(LanguageCode::from_str("TLI").unwrap(), LanguageCode::Tli);
2547    assert_eq!(LanguageCode::from_str("TMH").unwrap(), LanguageCode::Tmh);
2548    assert_eq!(LanguageCode::from_str("TOG").unwrap(), LanguageCode::Tog);
2549    assert_eq!(LanguageCode::from_str("TON").unwrap(), LanguageCode::Ton);
2550    assert_eq!(LanguageCode::from_str("TPI").unwrap(), LanguageCode::Tpi);
2551    assert_eq!(LanguageCode::from_str("TSI").unwrap(), LanguageCode::Tsi);
2552    assert_eq!(LanguageCode::from_str("TSN").unwrap(), LanguageCode::Tsn);
2553    assert_eq!(LanguageCode::from_str("TSO").unwrap(), LanguageCode::Tso);
2554    assert_eq!(LanguageCode::from_str("TUK").unwrap(), LanguageCode::Tuk);
2555    assert_eq!(LanguageCode::from_str("TUM").unwrap(), LanguageCode::Tum);
2556    assert_eq!(LanguageCode::from_str("TUP").unwrap(), LanguageCode::Tup);
2557    assert_eq!(LanguageCode::from_str("TUR").unwrap(), LanguageCode::Tur);
2558    assert_eq!(LanguageCode::from_str("TUT").unwrap(), LanguageCode::Tut);
2559    assert_eq!(LanguageCode::from_str("TVL").unwrap(), LanguageCode::Tvl);
2560    assert_eq!(LanguageCode::from_str("TWI").unwrap(), LanguageCode::Twi);
2561    assert_eq!(LanguageCode::from_str("TYV").unwrap(), LanguageCode::Tyv);
2562    assert_eq!(LanguageCode::from_str("UDM").unwrap(), LanguageCode::Udm);
2563    assert_eq!(LanguageCode::from_str("UGA").unwrap(), LanguageCode::Uga);
2564    assert_eq!(LanguageCode::from_str("UIG").unwrap(), LanguageCode::Uig);
2565    assert_eq!(LanguageCode::from_str("UKR").unwrap(), LanguageCode::Ukr);
2566    assert_eq!(LanguageCode::from_str("UMB").unwrap(), LanguageCode::Umb);
2567    assert_eq!(LanguageCode::from_str("UND").unwrap(), LanguageCode::Und);
2568    assert_eq!(LanguageCode::from_str("URD").unwrap(), LanguageCode::Urd);
2569    assert_eq!(LanguageCode::from_str("UZB").unwrap(), LanguageCode::Uzb);
2570    assert_eq!(LanguageCode::from_str("VAI").unwrap(), LanguageCode::Vai);
2571    assert_eq!(LanguageCode::from_str("VEN").unwrap(), LanguageCode::Ven);
2572    assert_eq!(LanguageCode::from_str("VIE").unwrap(), LanguageCode::Vie);
2573    assert_eq!(LanguageCode::from_str("VOL").unwrap(), LanguageCode::Vol);
2574    assert_eq!(LanguageCode::from_str("VOT").unwrap(), LanguageCode::Vot);
2575    assert_eq!(LanguageCode::from_str("WAK").unwrap(), LanguageCode::Wak);
2576    assert_eq!(LanguageCode::from_str("WAL").unwrap(), LanguageCode::Wal);
2577    assert_eq!(LanguageCode::from_str("WAR").unwrap(), LanguageCode::War);
2578    assert_eq!(LanguageCode::from_str("WAS").unwrap(), LanguageCode::Was);
2579    assert_eq!(LanguageCode::from_str("WEL").unwrap(), LanguageCode::Wel);
2580    assert_eq!(LanguageCode::from_str("WEN").unwrap(), LanguageCode::Wen);
2581    assert_eq!(LanguageCode::from_str("WLN").unwrap(), LanguageCode::Wln);
2582    assert_eq!(LanguageCode::from_str("WOL").unwrap(), LanguageCode::Wol);
2583    assert_eq!(LanguageCode::from_str("XAL").unwrap(), LanguageCode::Xal);
2584    assert_eq!(LanguageCode::from_str("XHO").unwrap(), LanguageCode::Xho);
2585    assert_eq!(LanguageCode::from_str("YAO").unwrap(), LanguageCode::Yao);
2586    assert_eq!(LanguageCode::from_str("YAP").unwrap(), LanguageCode::Yap);
2587    assert_eq!(LanguageCode::from_str("YID").unwrap(), LanguageCode::Yid);
2588    assert_eq!(LanguageCode::from_str("YOR").unwrap(), LanguageCode::Yor);
2589    assert_eq!(LanguageCode::from_str("YPK").unwrap(), LanguageCode::Ypk);
2590    assert_eq!(LanguageCode::from_str("ZAP").unwrap(), LanguageCode::Zap);
2591    assert_eq!(LanguageCode::from_str("ZBL").unwrap(), LanguageCode::Zbl);
2592    assert_eq!(LanguageCode::from_str("ZEN").unwrap(), LanguageCode::Zen);
2593    assert_eq!(LanguageCode::from_str("ZGH").unwrap(), LanguageCode::Zgh);
2594    assert_eq!(LanguageCode::from_str("ZHA").unwrap(), LanguageCode::Zha);
2595    assert_eq!(LanguageCode::from_str("ZND").unwrap(), LanguageCode::Znd);
2596    assert_eq!(LanguageCode::from_str("ZUL").unwrap(), LanguageCode::Zul);
2597    assert_eq!(LanguageCode::from_str("ZUN").unwrap(), LanguageCode::Zun);
2598    assert_eq!(LanguageCode::from_str("ZXX").unwrap(), LanguageCode::Zxx);
2599    assert_eq!(LanguageCode::from_str("ZZA").unwrap(), LanguageCode::Zza);
2600
2601    assert!(LanguageRelation::from_str("ESP").is_err());
2602    assert!(LanguageRelation::from_str("ZZZ").is_err());
2603}