Mercurial > prosody-modules
annotate mod_xmllang_check/test_xmpplang.lua @ 6515:ff55e93be449
mod_http_oauth2: Normalize username in password grant
Otherwise authentication may fail if provided a non-normalized username
Introduced in c1b94dd6e53b
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Wed, 08 Apr 2026 23:08:39 +0200 |
| parents | de3dc4297035 |
| children |
| rev | line source |
|---|---|
|
6401
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
1 #!/usr/bin/env lua |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
2 -- Test suite for xmpplang.lib.lua parser |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
3 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
4 local script_dir = arg and arg[0] and arg[0]:match("^(.*)/[^/]+$") or "."; |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
5 package.path = script_dir .. "/?.lib.lua;" .. package.path; |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
6 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
7 local match_xmpplang = require("xmpplang") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
8 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
9 local passed = 0 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
10 local failed = 0 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
11 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
12 local function test(input, expected, description) |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
13 local result = match_xmpplang(input) |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
14 if result == expected then |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
15 passed = passed + 1 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
16 print(string.format("PASS: %s (%s) -> %s", description, input, tostring(result))) |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
17 else |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
18 failed = failed + 1 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
19 print(string.format("FAIL: %s (%s) -> expected %s, got %s", description, input, tostring(expected), tostring(result))) |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
20 end |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
21 end |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
22 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
23 print("=== Basic language tags ===") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
24 test("en", true, "2-letter language") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
25 test("eng", true, "3-letter language") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
26 test("abcd", true, "4-letter language") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
27 test("abcde", true, "5-letter language") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
28 test("abcdefgh", true, "8-letter language") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
29 test("abcdefghi", false, "9-letter language (invalid)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
30 test("e", false, "1-letter language (invalid)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
31 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
32 print("\n=== Language with script ===") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
33 test("en-Latn", true, "language-script") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
34 test("zh-Hans", true, "zh-Hans") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
35 test("zh-Hant", true, "zh-Hant") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
36 test("en-Latn-US", true, "language-script-region") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
37 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
38 print("\n=== Language with region ===") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
39 test("en-US", true, "language-region (2 alpha)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
40 test("en-GB", true, "en-GB") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
41 test("en-123", true, "language-region (3 digit)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
42 -- Note: en-1234 is valid because 1234 matches variant (digit + 3 alphanum) |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
43 test("en-1234", true, "en-1234 (parsed as language + variant)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
44 -- Note: en-ABC is valid because ABC matches extlang (3 alpha) |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
45 test("en-ABC", true, "en-ABC (parsed as language + extlang)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
46 -- Actually invalid subtags |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
47 test("en-AB", true, "en-AB (language + region)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
48 test("en-A", false, "en-A (single alpha - invalid)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
49 test("en-12", false, "en-12 (2 digits - invalid)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
50 test("en-ABCDE", true, "en-ABCDE (language + 5 alpha variant)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
51 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
52 print("\n=== Language with extlang ===") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
53 test("zh-cmn", true, "language-extlang") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
54 test("zh-cmn-Hans", true, "language-extlang-script") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
55 test("zh-cmn-Hant-HK", true, "language-extlang-script-region") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
56 test("zh-yue", true, "zh-yue") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
57 test("zh-cmn-yue", true, "language-extlang-extlang") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
58 test("zh-cmn-yue-gan", true, "language-extlang-extlang-extlang (max)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
59 test("zh-cmn-yue-gan-hak", false, "4 extlangs (too many)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
60 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
61 print("\n=== Variants ===") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
62 test("en-US-12345", true, "5-char variant") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
63 test("en-US-12345678", true, "8-char variant") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
64 test("en-US-1abc", true, "digit+3alphanum variant") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
65 test("en-US-rozaj", true, "rozaj variant") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
66 test("sl-IT-nedis", true, "sl-IT-nedis") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
67 test("en-US-abcd", false, "4-char alpha variant (invalid)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
68 test("en-US-123456789", false, "9-char variant (invalid)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
69 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
70 print("\n=== Extensions ===") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
71 test("en-a-bbb", true, "extension a") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
72 test("en-a-bbb-ccc", true, "extension with multiple subtags") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
73 test("en-US-a-bbb", true, "language-region-extension") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
74 test("en-US-a-bbb-b-ccc", true, "multiple extensions") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
75 test("en-u-co-phonebk", true, "unicode extension") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
76 test("en-a-b", false, "extension subtag too short") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
77 test("en-a-bbbbbbbbb", false, "extension subtag too long (9)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
78 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
79 print("\n=== Privateuse ===") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
80 test("x-private", true, "privateuse standalone") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
81 test("x-a", true, "privateuse single char subtag") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
82 test("x-abcdefgh", true, "privateuse 8-char subtag") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
83 test("x-abc-def", true, "privateuse multiple subtags") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
84 test("en-x-private", true, "language-privateuse") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
85 test("en-US-x-private", true, "language-region-privateuse") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
86 test("X-private", true, "uppercase X privateuse") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
87 test("x-abcdefghi", false, "privateuse subtag too long (9)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
88 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
89 print("\n=== Grandfathered irregular ===") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
90 test("en-GB-oed", true, "en-GB-oed") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
91 test("i-ami", true, "i-ami") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
92 test("i-bnn", true, "i-bnn") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
93 test("i-default", true, "i-default") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
94 test("i-enochian", true, "i-enochian") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
95 test("i-hak", true, "i-hak") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
96 test("i-klingon", true, "i-klingon") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
97 test("i-lux", true, "i-lux") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
98 test("i-mingo", true, "i-mingo") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
99 test("i-navajo", true, "i-navajo") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
100 test("i-pwn", true, "i-pwn") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
101 test("i-tao", true, "i-tao") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
102 test("i-tay", true, "i-tay") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
103 test("i-tsu", true, "i-tsu") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
104 test("sgn-BE-FR", true, "sgn-BE-FR") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
105 test("sgn-BE-NL", true, "sgn-BE-NL") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
106 test("sgn-CH-DE", true, "sgn-CH-DE") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
107 -- Case insensitive |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
108 test("I-AMI", true, "I-AMI (uppercase)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
109 test("En-Gb-Oed", true, "En-Gb-Oed (mixed case)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
110 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
111 print("\n=== Grandfathered regular ===") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
112 test("art-lojban", true, "art-lojban") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
113 test("cel-gaulish", true, "cel-gaulish") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
114 test("no-bok", true, "no-bok") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
115 test("no-nyn", true, "no-nyn") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
116 test("zh-guoyu", true, "zh-guoyu") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
117 test("zh-hakka", true, "zh-hakka") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
118 test("zh-min", true, "zh-min") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
119 test("zh-min-nan", true, "zh-min-nan") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
120 test("zh-xiang", true, "zh-xiang") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
121 -- Case insensitive |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
122 test("ZH-MIN", true, "ZH-MIN (uppercase)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
123 test("Art-Lojban", true, "Art-Lojban (mixed case)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
124 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
125 print("\n=== Encoding ===") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
126 test("en.UTF-8", true, "language with encoding") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
127 test("en-US.UTF-8", true, "language-region with encoding") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
128 test("en-Latn-US.UTF-8", true, "language-script-region with encoding") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
129 test("en.utf-8", true, "encoding lowercase") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
130 test("en.Utf-8", true, "encoding mixed case") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
131 test("en.UTF-16", false, "invalid encoding") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
132 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
133 print("\n=== Complex valid tags ===") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
134 test("zh-cmn-Hans-CN", true, "zh-cmn-Hans-CN") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
135 test("sr-Latn-RS", true, "sr-Latn-RS") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
136 test("sl-rozaj-biske", true, "sl-rozaj-biske (multiple variants)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
137 test("de-CH-1901", true, "de-CH-1901") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
138 test("en-US-u-islamcal", true, "en-US-u-islamcal") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
139 test("zh-Hans-CN-u-nu-hanidec", true, "complex with extension") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
140 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
141 print("\n=== Invalid cases ===") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
142 test("", false, "empty string") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
143 test("-en", false, "leading hyphen") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
144 test("en-", false, "trailing hyphen") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
145 test("en--US", false, "double hyphen") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
146 test("123", false, "numeric only") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
147 test("en_US", false, "underscore separator") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
148 test("en US", false, "space separator") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
149 test("toolonglanguage", false, "language too long") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
150 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
151 print("\n=== Edge cases ===") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
152 test("qaa", true, "qaa (reserved)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
153 test("qaa-Qaaa-QM-x-southern", true, "all private use subtags") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
154 test("en-Latn-GB-boont-r-extended-sequence-x-private", true, "complex tag") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
155 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
156 print("\n=== Additional edge cases ===") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
157 -- Encoding edge cases |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
158 test("en.UTF-8extra", false, "encoding with extra chars") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
159 test("en.UTF", false, "partial encoding") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
160 test("en.", false, "dot with nothing after") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
161 test("en-US.UTF-8.extra", false, "double dot") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
162 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
163 -- Extension boundary cases |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
164 test("en-0-abc", true, "extension with digit singleton") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
165 test("en-9-abc", true, "extension with digit 9 singleton") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
166 test("en-a-12", true, "extension with 2 char subtag") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
167 test("en-a-12345678", true, "extension with 8 char subtag") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
168 test("en-a-ab-cd-ef", true, "extension with multiple short subtags") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
169 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
170 -- Privateuse boundary cases |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
171 test("x-1", true, "privateuse with single digit") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
172 test("x-12345678", true, "privateuse with 8 chars") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
173 test("x-a-b-c-d-e", true, "privateuse with many 1-char subtags") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
174 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
175 -- Language boundary cases (no extlang possible after 4+ alpha language) |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
176 -- These are invalid because 3-alpha "ext" doesn't match script/region/variant/etc. |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
177 test("abcd-ext", false, "4-letter language with 3-char subtag (invalid)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
178 test("abcde-ext", false, "5-letter language with 3-char subtag (invalid)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
179 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
180 -- Grandfathered should not be prefix-matched |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
181 test("i-ami-extra", false, "grandfathered with extra (invalid)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
182 -- Note: zh-min-foo is valid as langtag (foo is second extlang in zh-min-foo) |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
183 test("zh-min-foo", true, "zh-min-foo (valid: language + extlang + extlang)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
184 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
185 -- Variants cannot repeat in a way that produces invalid structure |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
186 test("en-rozaj-rozaj", true, "repeated variant (syntactically valid)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
187 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
188 -- Script + region + variant combinations |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
189 test("en-Latn-US-rozaj", true, "all optional components") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
190 test("en-US-Latn", false, "region before script (invalid order)") |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
191 |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
192 print(string.format("\n=== Results: %d passed, %d failed ===", passed, failed)) |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
193 if failed > 0 then |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
194 os.exit(1) |
|
de3dc4297035
mod_xmllang_check: Initial commit
Waqas Hussain <waqas20@gmail.com>
parents:
diff
changeset
|
195 end |
