blob: 57198a4672671efb2623631c2856e1835f16f3d6 [file] [log] [blame]
Akrone23e2922017-05-01 13:18:12 +02001#!/usr/bin/env perl
Akron1972c122017-03-14 17:46:55 +01002use strict;
3use warnings;
4use Test::More;
5use utf8;
6use Mojo::Util qw/encode decode/;
7
8use_ok('Krawfish::Util::String');
9
10is(fold_case('aaa'), 'aaa', 'Case fold 1');
11is(fold_case('AAA'), 'aaa', 'Case fold 2');
12is(fold_case('AaA'), 'aaa', 'Case fold 3');
13
14is(fold_case('aäa'), 'aäa', 'Case fold 4');
15is(fold_case('aÄß'), 'aäss', 'Case fold 5');
16is(fold_case('a-Äß'), 'a-äss', 'Case fold 6');
17is(fold_case('ÄÖÜß'), 'äöüss', 'Case fold 7');
18
19is(remove_diacritics('Česká'), 'Ceska', 'Removed diacritics');
20is(remove_diacritics('Äößa'), 'Aoßa', 'Removed diacritics');
21
Akron16fea192017-03-14 19:05:30 +010022# From comment in http://archives.miloush.net/michkap/archive/2007/05/14/2629747.html
23is(remove_diacritics('ÅåÄäÖö'), 'AaAaOo', 'Check swedish');
24# Krawfish::Util::String::_list_props('Łł');
25is(remove_diacritics('ĄąĆćĘꣳŃńÓóŚśŹźŻż'), 'AaCcEeLlNnOoSsZzZz', 'Check polish');
26is(remove_diacritics('ľščťžýáíéúäôň*ȍŽÝÁÍÉÚÄÔŇĎ'), 'lsctzyaieuaondLSCTZYAIEUAOND', 'Check slowakish');
27is(remove_diacritics('ëőüűŐÜŰ'), 'eouuOUU', 'Check hungarian');
28is(remove_diacritics('Ññ¿'), 'Nn¿', 'Check spanish');
29is(remove_diacritics('àèòçï'), 'aeoci', 'Check CA?');
30is(remove_diacritics('ı'), 'i', 'Check turkish');
31
32# From http://stackoverflow.com/questions/249087/how-do-i-remove-diacritics-accents-from-a-string-in-net#249126
33is(remove_diacritics('äáčďěéíľľňôóřŕšťúůýž'), 'aacdeeillnoorrstuuyz');
34is(remove_diacritics('ÄÁČĎĚÉÍĽĽŇÔÓŘŔŠŤÚŮÝŽ'), 'AACDEEILLNOORRSTUUYZ');
35is(remove_diacritics('ÖÜË'), 'OUE');
36is(remove_diacritics('łŁđĐ'), 'lLdD');
37is(remove_diacritics('ţŢşŞçÇ'), 'tTsScC');
38is(remove_diacritics('øı'), 'oi');
39
Akron01693e32017-03-15 17:09:59 +010040is(remove_diacritics(
41 q{Bonjour ça va? C'est l'été! Ich möchte ä Ä á à â ê é è ë Ë É ï Ï î í ì ó ò ô ö Ö Ü ü ù ú û Û ý Ý ç Ç ñ Ñ}),
42 q{Bonjour ca va? C'est l'ete! Ich mochte a A a a a e e e e E E i I i i i o o o o O U u u u u U y Y c C n N});
43
44# https://docs.seneca.nl/Smartsite-Docs/Features-Modules/Add-On_Modules/Faceted_Search/FS_Reference/FTS_and_iFTS_technical_background_information/Diacritics_and_Unicode.html
45is(remove_diacritics(
46 q/!"#$'()*+,-.0123456789:;=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` abcdefghijklmnoprstuvwxyz{|}~¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿−ÀÁ ÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ/),
47 q/!"#$'()*+,-.0123456789:;=?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_` abcdefghijklmnoprstuvwxyz{|}~¡¢£¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿−AAA AAAÆCEEEEIIIIDNOOOOO×OUUUUYÞßaaaaaaæceeeeiiiiðnooooo÷ouuuuyþy/);
Akrona9e86552017-11-09 12:01:28 +010048
49is(squote("baum"), "'baum'", 'Check quote');
50is(squote("that's"), "'that\\'s'", 'Check quote');
51is(squote("that\\'s"), "'that\\\\\\'s'", 'Check quote');
52is(unsquote("'that\\\\\\'s'"), "that\\'s", 'Check unquote');
53is(unsquote("'that\\'s'"), "that's", 'Check unquote');
54is(unsquote("'baum'"), "baum", 'Check unquote');
55
Akron1972c122017-03-14 17:46:55 +010056done_testing;
57__END__
58