6 ######################### We start with some black magic to print on failure.
11 BEGIN { plan tests => 23 };
13 use I18N::LangTags qw(is_language_tag same_language_tag
14 extract_language_tags super_languages
15 similarity_language_tag is_dialect_of
16 locale2language_tag alternate_language_tags
20 ok !is_language_tag('');
21 ok is_language_tag('fr');
22 ok is_language_tag('fr-ca');
23 ok is_language_tag('fr-CA');
24 ok !is_language_tag('fr-CA-');
25 ok !is_language_tag('fr_CA');
26 ok is_language_tag('fr-ca-joual');
27 ok !is_language_tag('frca');
28 ok is_language_tag('nav');
29 ok is_language_tag('nav-shiprock');
30 ok !is_language_tag('nav-ceremonial'); # subtag too long
31 ok !is_language_tag('x');
32 ok !is_language_tag('i');
33 ok is_language_tag('i-borg'); # NB: fictitious tag
34 ok is_language_tag('x-borg');
35 ok is_language_tag('x-borg-prot5123');
36 ok same_language_tag('x-borg-prot5123', 'i-BORG-Prot5123' );
37 ok !same_language_tag('en', 'en-us' );
39 ok 0 == similarity_language_tag('en-ca', 'fr-ca');
40 ok 1 == similarity_language_tag('en-ca', 'en-us');
41 ok 2 == similarity_language_tag('en-us-southern', 'en-us-western');
42 ok 2 == similarity_language_tag('en-us-southern', 'en-us');
44 # print "So there!\n";