1/*
2 * This test is for Linux/glibc systems and others that implement proper
3 * locale classification of Unicode characters with high code values.
4 * It must be run in a database with UTF8 encoding and a Unicode-aware locale.
5 */
6
7SET client_encoding TO UTF8;
8
9--
10-- Test the "high colormap" logic with single characters and ranges that
11-- exceed the MAX_SIMPLE_CHR cutoff, here assumed to be less than U+2000.
12--
13
14-- trivial cases:
15SELECT 'aⓐ' ~ U&'a\24D0' AS t;
16SELECT 'aⓐ' ~ U&'a\24D1' AS f;
17SELECT 'aⓕ' ~ 'a[ⓐ-ⓩ]' AS t;
18SELECT 'aⒻ' ~ 'a[ⓐ-ⓩ]' AS f;
19-- cases requiring splitting of ranges:
20SELECT 'aⓕⓕ' ~ 'aⓕ[ⓐ-ⓩ]' AS t;
21SELECT 'aⓕⓐ' ~ 'aⓕ[ⓐ-ⓩ]' AS t;
22SELECT 'aⓐⓕ' ~ 'aⓕ[ⓐ-ⓩ]' AS f;
23SELECT 'aⓕⓕ' ~ 'a[ⓐ-ⓩ]ⓕ' AS t;
24SELECT 'aⓕⓐ' ~ 'a[ⓐ-ⓩ]ⓕ' AS f;
25SELECT 'aⓐⓕ' ~ 'a[ⓐ-ⓩ]ⓕ' AS t;
26SELECT 'aⒶⓜ' ~ 'a[Ⓐ-ⓜ][ⓜ-ⓩ]' AS t;
27SELECT 'aⓜⓜ' ~ 'a[Ⓐ-ⓜ][ⓜ-ⓩ]' AS t;
28SELECT 'aⓜⓩ' ~ 'a[Ⓐ-ⓜ][ⓜ-ⓩ]' AS t;
29SELECT 'aⓩⓩ' ~ 'a[Ⓐ-ⓜ][ⓜ-ⓩ]' AS f;
30SELECT 'aⓜ⓪' ~ 'a[Ⓐ-ⓜ][ⓜ-ⓩ]' AS f;
31SELECT 'a0' ~ 'a[a-ⓩ]' AS f;
32SELECT 'aq' ~ 'a[a-ⓩ]' AS t;
33SELECT 'aⓜ' ~ 'a[a-ⓩ]' AS t;
34SELECT 'a⓪' ~ 'a[a-ⓩ]' AS f;
35
36-- Locale-dependent character classes
37
38SELECT 'aⒶⓜ⓪' ~ '[[:alpha:]][[:alpha:]][[:alpha:]][[:graph:]]' AS t;
39SELECT 'aⒶⓜ⓪' ~ '[[:alpha:]][[:alpha:]][[:alpha:]][[:alpha:]]' AS f;
40
41-- Locale-dependent character classes with high ranges
42
43SELECT 'aⒶⓜ⓪' ~ '[a-z][[:alpha:]][ⓐ-ⓩ][[:graph:]]' AS t;
44SELECT 'aⓜⒶ⓪' ~ '[a-z][[:alpha:]][ⓐ-ⓩ][[:graph:]]' AS f;
45SELECT 'aⓜⒶ⓪' ~ '[a-z][ⓐ-ⓩ][[:alpha:]][[:graph:]]' AS t;
46SELECT 'aⒶⓜ⓪' ~ '[a-z][ⓐ-ⓩ][[:alpha:]][[:graph:]]' AS f;
47