1SELECT getdatabaseencoding() <> 'UTF8' AS skip_test \gset
2\if :skip_test
3\quit
4\endif
5
6SELECT U&'\0061\0308bc' <> U&'\00E4bc' COLLATE "C" AS sanity_check;
7
8SELECT normalize(U&'\0061\0308\24D1c') = U&'\00E4\24D1c' COLLATE "C" AS test_default;
9SELECT normalize(U&'\0061\0308\24D1c', NFC) = U&'\00E4\24D1c' COLLATE "C" AS test_nfc;
10SELECT normalize(U&'\00E4bc', NFC) = U&'\00E4bc' COLLATE "C" AS test_nfc_idem;
11SELECT normalize(U&'\00E4\24D1c', NFD) = U&'\0061\0308\24D1c' COLLATE "C" AS test_nfd;
12SELECT normalize(U&'\0061\0308\24D1c', NFKC) = U&'\00E4bc' COLLATE "C" AS test_nfkc;
13SELECT normalize(U&'\00E4\24D1c', NFKD) = U&'\0061\0308bc' COLLATE "C" AS test_nfkd;
14
15SELECT "normalize"('abc', 'def');  -- run-time error
16
17SELECT U&'\00E4\24D1c' IS NORMALIZED AS test_default;
18SELECT U&'\00E4\24D1c' IS NFC NORMALIZED AS test_nfc;
19
20SELECT num, val,
21    val IS NFC NORMALIZED AS NFC,
22    val IS NFD NORMALIZED AS NFD,
23    val IS NFKC NORMALIZED AS NFKC,
24    val IS NFKD NORMALIZED AS NFKD
25FROM
26  (VALUES (1, U&'\00E4bc'),
27          (2, U&'\0061\0308bc'),
28          (3, U&'\00E4\24D1c'),
29          (4, U&'\0061\0308\24D1c')) vals (num, val)
30ORDER BY num;
31
32SELECT is_normalized('abc', 'def');  -- run-time error
33