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