<?php
declare(strict_types=1);
namespace voku\tests;
use voku\helper\ASCII;
use voku\helper\ASCII as u;
/**
* @internal
*/
final class TransliterateTest extends \PHPUnit\Framework\TestCase
{
public function testUtf8()
{
$str = 'testiñg';
static::assertSame('testing', u::to_transliterate($str));
}
public function testAscii()
{
$str = 'testing';
static::assertSame('testing', u::to_transliterate($str));
}
public function testInvalidChar()
{
$str = "tes\xE9ting";
static::assertSame('testing', u::to_transliterate($str));
}
public function testEmptyStr()
{
$str = '';
static::assertEmpty(u::to_transliterate($str));
}
public function testNulAndNon7Bit()
{
$str = "a\x00ñ\x00c";
static::assertSame('anc', u::to_transliterate($str));
}
public function testNul()
{
$str = "a\x00b\x00c";
static::assertSame('abc', u::to_transliterate($str));
}
public function testToASCII()
{
$testsStrict = [];
if (\extension_loaded('intl') === true) {
// ---
$testString = \file_get_contents(__DIR__ . '/fixtures/sample-unicode-chart.txt');
$resultString = \file_get_contents(__DIR__ . '/fixtures/sample-ascii-chart.txt');
static::assertSame($resultString, ASCII::to_transliterate($testString, '?', true));
// ---
$testsStrict = [
// 1 => '1',
// -1 => '-1',
' ' => ' ',
// '' => '',
'???' => 'abz',
"\xe2\x80\x99" => '\'',
'?test' => 'Btest',
' -ABC-????- ' => ' -ABC-zhong wen kong bai- ',
" - abc- \xc2\x87" => ' - abc- ++',
'abc' => 'abc',
'deja vu' => 'deja vu',
'déjà vu' => 'deja vu',
'déjà ??? i?ii' => 'deja sss iiii',
"test\x80-\xBFöäü" => 'test-oau',
'Internationalizaetion' => 'Internationalizaetion',
"? - 中 - %&? - \xc2\x80" => 'zhong - 中 - %&? - EUR',
'Un été brûlant sur la côte' => 'Un ete brulant sur la cote',
'???? ????? ??? ??????' => 'Aute einai mia dokime',
'????' => 'ahbk',
'?????' => 'kyanpasu',
'?????????????' => 'biologiceskom',
'?, ??' => 'jeong, byeongho',
'???, ????' => 'masuda, yoshihiko',
'?????' => 'monica',
'????' => 'kasadb',
'???? ?' => 'ahbk ?',
'???????????????? 5.99?' => 'dhrzsshsdtz\'gh[?][?][?][?][?] 5.99EUR',
'???????????????? £5.99' => 'dhrzsshsdtz\'gh[?][?][?][?][?] PS5.99',
'????????????????? $5.99' => '[?]\'bgdhwzhtykklmmn $5.99',
'??????????????? ¥5990' => 'ri yi guo hui ren nian da shi er ben zhong zhang chu san tong Y=5990',
'5.99? ???????? $5.99' => '5.99EUR ri yi guo hui ren nian da shi $5.99',
'????@??????.com' => 'bgdh@dtz\'gh[?].com',
'???@??????' => 'nian da shi@dtz\'gh[?]',
'???? & ???' => 'bgdh & nian da shi',
'?&? at ??????.???' => 'guo&m at dtz\'gh[?].hwz',
'my username is @????' => 'my username is @bgdh',
'The review gave 5* to ????' => 'The review gave 5* to z\'gh[?]',
'use ???@??????.??? to get a 10% discount' => 'use nian da shi@dtz\'gh[?].hwz to get a 10% discount',
'? = ??^2' => 'ri = ht^2',
'???? ?? ???? 9.81 m/s2' => 'kklm guo hui gh[?][?][?] 9.81 m/s2',
'The #? comment at @???? = 10% of *&*' => 'The #hui comment at @bgdh = 10% of *&*',
'? i ? ?' => '[?] i [?] N',
'? ? ? ? ? ? ? ?????' => '? ? ? ? ? ? ahbk',
];
}
$tests = [
// 1 => '1',
// -1 => '-1',
' ' => ' ',
// '' => '',
'???' => 'abz',
"\xe2\x80\x99" => '\'',
'?test' => 'Btest',
' -ABC-????- ' => ' -ABC-Zhong Wen Kong Bai - ',
" - abc- \xc2\x87" => ' - abc- ++',
'abc' => 'abc',
'deja vu' => 'deja vu',
'déjà vu?' => 'deja vu ',
'déjà ??? i?ii' => 'deja sss iiii',
'?????' => 'kosme',
"test\x80-\xBFöäü" => 'test-oau',
'Internationalizaetion' => 'Internationalizaetion',
"? - 中 - %&? - \xc2\x80" => 'Zhong - 中 - %&? - EUR',
'Un été brûlant sur la côte' => 'Un ete brulant sur la cote',
'???? ????? ??? ??????' => 'Aute einai mia dokime',
'????' => 'aHbk',
'?????' => 'kiyanpasu',
'?????????????' => 'biologicheskom',
'?, ??' => 'jeong, byeongho',
'???, ????' => 'masuda, yosihiko',
'?????' => 'monic',
'????' => 'kssdb',
'???? ?' => 'aHbk ?',
'? i ? ?' => '[?] i [?] N',
'? ? ? ? ? ? ? ?????' => '? ? ? ? ? ? aHbk',
];
for ($i = 0; $i <= 2; ++$i) { // keep this loop for simple performance tests
foreach ($tests as $before => $after) {
static::assertSame($after, ASCII::to_transliterate($before), 'tested: ' . $before);
}
}
foreach ($testsStrict as $before => $after) {
static::assertSame($after, ASCII::to_transliterate($before, '?', true), 'tested: ' . $before);
}
}
}
|