PHP Classes

File: tests/AsciiGlobalTest.php

Recommend this page to a friend!
  Classes of Lars Moelleken   portable ascii   tests/AsciiGlobalTest.php   Download  
File: tests/AsciiGlobalTest.php
Role: Class source
Content type: text/plain
Description: Class source
Class: portable ascii
Manipulate text strings without special extensions
Author: By
Last change:
Date: 5 years ago
Size: 9,733 bytes
 

Contents

Class file image Download
<?php

declare(strict_types=1);

namespace
voku\tests;

use
voku\helper\ASCII;

/**
 * @internal
 */
final class AsciiGlobalTest extends \PHPUnit\Framework\TestCase
{
    public function
slugifyProvider(): array
    {
        return [
            [
'foo-bar', ' foo bar '],
            [
'foo-bar', 'foo -.-"-...bar'],
            [
'another-and-foo-bar', 'another..& foo -.-"-...bar'],
            [
'foo-dbar', " Foo d'Bar "],
            [
'a-string-with-dashes', 'A string-with-dashes'],
            [
'user-at-host', 'user@host'],
            [
'using-strings-like-foo-bar', 'Using strings like fòô bà?'],
            [
'numbers-1234', 'numbers 1234'],
            [
'perevirka-ryadka', '????????? ?????'],
            [
'bukvar-s-bukvoi-y', '??????? ? ?????? ?'],
            [
'podehal-k-podezdu-moego-doma', '???????? ? ???????? ????? ????'],
            [
'foo:bar:baz', 'Foo bar baz', ':'],
            [
'a_string_with_underscores', 'A_string with_underscores', '_'],
            [
'a_string_with_dashes', 'A string-with-dashes', '_'],
            [
'one_euro_or_a_dollar', 'one ? or a $', '_'],
            [
'a\string\with\dashes', 'A string-with-dashes', '\\'],
            [
'an_odd_string', '-- An odd__ string-_', '_'],
        ];
    }

    public function
testCharsArrayWithMultiLanguageValues()
    {
       
$array = ASCII::charsArrayWithMultiLanguageValues();

        static::
assertSame(['?', '?', '?', '?', '?'], $array['b']);

       
// ---

       
$array = ASCII::charsArrayWithMultiLanguageValues(true);

        static::
assertSame(['?', '?', '?', '?', '?'], $array['b']);
        static::
assertSame(['&'], $array['&']);
        static::
assertSame(['?'], $array[' Euro ']);
    }

    public function
testCharsArrayWithOneLanguage()
    {
       
$array = ASCII::charsArrayWithOneLanguage('de');

        static::
assertContains('Ae', $array['replace']);
        static::
assertNotContains('yo', $array['replace']);

       
// ---

       
$array = ASCII::charsArrayWithOneLanguage('ru');

        static::
assertNotContains('Ae', $array['replace']);
        static::
assertContains('yo', $array['replace']);

       
$tmpKey = \array_search('yo', $array['replace'], true);
        static::
assertSame('?', $array['orig'][$tmpKey]);

       
// ---

       
$array = ASCII::charsArrayWithOneLanguage('de', true);

        static::
assertContains('Ae', $array['replace']);
        static::
assertNotContains('yo', $array['replace']);
        static::
assertContains(' und ', $array['replace']);
        static::
assertNotContains(' ? ', $array['replace']);

       
$tmpKey = \array_search(' und ', $array['replace'], true);
        static::
assertSame('&', $array['orig'][$tmpKey]);

       
// ---

       
$array = ASCII::charsArrayWithOneLanguage('ru', true);

        static::
assertContains('yo', $array['replace']);
        static::
assertNotContains('Ae', $array['replace']);
        static::
assertContains(' ? ', $array['replace']);
        static::
assertNotContains(' und ', $array['replace']);

       
$tmpKey = \array_search(' ? ', $array['replace'], true);
        static::
assertSame('&', $array['orig'][$tmpKey]);
    }

    public function
testCharsArrayWithSingleLanguageValues()
    {
       
$array = ASCII::charsArrayWithSingleLanguageValues();

        static::
assertContains('hnaik', $array['replace']);
        static::
assertContains('yo', $array['replace']);

       
$tmpKey = \array_search('hnaik', $array['replace'], true);
        static::
assertSame('?', $array['orig'][$tmpKey]);

       
// ---

       
$array = ASCII::charsArrayWithSingleLanguageValues(true);

        static::
assertContains('hnaik', $array['replace']);
        static::
assertContains('yo', $array['replace']);
        static::
assertContains(' pound ', $array['replace']);

       
$tmpKey = \array_search(' pound ', $array['replace'], true);
        static::
assertSame('£', $array['orig'][$tmpKey]);
    }

    public function
testCharsArray()
    {
       
$array = ASCII::charsArray();

        static::
assertSame('b', $array['ru']['?']);
    }

    public function
testFilterFile()
    {
       
$testArray = [
           
"test-\xe9\x00\x0é????.txt" => 'test-.txt',
           
'test-????.txt' => 'test-.txt',
           
'????.jpg' => '.jpg',
           
'????.jpg' => '.jpg',
           
'öäü - test' => 'test',
           
'??????.png' => '.png',
           
'?©®±àáâãäåæÒÓÔÕÖ¼½¾§µçðþú?.jpg' => '.jpg',
           
'000?©?©.txt' => '000.txt',
           
' ' => '',
        ];

        foreach (
$testArray as $before => $after) {
            static::
assertSame($after, ASCII::to_filename($before, false));
        }

       
// ---

       
$testArray = [
           
"test-\xe9\x00\x0é????.txt" => 'test-eDa-Ban-Ruo-Jing-.txt',
           
'test-????.txt' => 'test-Da-Ban-Ruo-Jing-.txt',
           
'????.jpg' => 'foto.jpg',
           
'????.jpg' => 'Foto.jpg',
           
'öäü - test' => 'oau-test',
           
'??????.png' => 'shdgshdg.png',
           
'?©®±àáâãäåæÒÓÔÕÖ¼½¾§µçðþú?.jpg' => 'cr-aaaaaaaeOOOOO141234SSucdthu-.jpg',
           
'000?©?©.txt' => '000-c-c.txt',
           
' ' => '',
        ];

        foreach (
$testArray as $before => $after) {
            static::
assertSame($after, ASCII::to_filename($before, true));
        }
    }

   
/**
     * @dataProvider slugifyProvider()
     *
     * @param mixed $expected
     * @param mixed $str
     * @param mixed $replacement
     */
   
public function testSlugify($expected, $str, $replacement = '-')
    {
       
$str = ASCII::to_slugify($str, $replacement);

        static::
assertSame($expected, $str);
    }

   
/**
     * @dataProvider toAsciiProvider()
     *
     * @param mixed $expected
     * @param mixed $str
     * @param mixed $language
     * @param mixed $removeUnsupported
     */
   
public function testToAscii(
       
$expected,
       
$str,
       
$language = 'en',
       
$removeUnsupported = true
   
) {
       
$result = ASCII::to_ascii($str, $language, $removeUnsupported);

        static::
assertSame($expected, $result);
    }

    public function
toAsciiProvider(): array
    {
        return [
            [
'foo bar', 'fòô bà?'],
            [
' TEST ', ' ?É?? '],
            [
'f = z = 3', '? = ? = 3'],
            [
'perevirka', '?????????'],
            [
'lysaya gora', '????? ????'],
            [
'user@host', 'user@host'],
            [
'shuka', '????'],
            [
'', '??'],
            [
'xin chao the gioi', 'xin chào th? gi?i'],
            [
'XIN CHAO THE GIOI', 'XIN CHÀO TH? GI?I'],
            [
'dam phat chet luon', '??m phát ch?t luôn'],
            [
' ', ' '], // no-break space (U+00A0)
           
[' ', '??????? ???'], // spaces U+2000 to U+200A
           
[' ', ' '], // narrow no-break space (U+202F)
           
[' ', '?'], // medium mathematical space (U+205F)
           
[' ', '?'], // ideographic space (U+3000)
           
['', '?'], // some uncommon, unsupported character (U+10349)
           
['?', '?', 'en', false],
            [
'aouAOU', 'äöüÄÖÜ'],
            [
'aeoeueAeOeUe', 'äöüÄÖÜ', 'de'],
            [
'aeoeueAeOeUe', 'äöüÄÖÜ', 'de_DE'],
        ];
    }

    public function
testCleanParameter()
    {
       
$dirtyTestString = "\xEF\xBB\xBF?Abcdef\xc2\xa0\x20?? ? ?";

        static::
assertSame('?"Abcdef ..." - ?', ASCII::clean($dirtyTestString));
        static::
assertSame('??Abcdef  ?? ? ?', ASCII::clean($dirtyTestString, false, true, false, false));
        static::
assertSame('??Abcdef  ?? ? ?', ASCII::clean($dirtyTestString, false, false, false, true));
        static::
assertSame('??Abcdef  ?? ? ?', ASCII::clean($dirtyTestString, false, false, false, false));
        static::
assertSame('?"Abcdef  ..." - ?', ASCII::clean($dirtyTestString, false, false, true, true));
        static::
assertSame('?"Abcdef  ..." - ?', ASCII::clean($dirtyTestString, false, false, true, false));
        static::
assertSame('?"Abcdef  ..." - ?', ASCII::clean($dirtyTestString, false, true, true, false));
        static::
assertSame('?"Abcdef  ..." - ?', ASCII::clean($dirtyTestString, false, true, true, true));
        static::
assertSame('??Abcdef ?? ? ?', ASCII::clean($dirtyTestString, true, false, false, false));
        static::
assertSame('??Abcdef ?? ? ?', ASCII::clean($dirtyTestString, true, false, false, true));
        static::
assertSame('?"Abcdef ..." - ?', ASCII::clean($dirtyTestString, true, false, true, false));
        static::
assertSame('?"Abcdef ..." - ?', ASCII::clean($dirtyTestString, true, false, true, true));
        static::
assertSame('??Abcdef  ?? ? ?', ASCII::clean($dirtyTestString, true, true, false, false));
        static::
assertSame('??Abcdef  ?? ? ?', ASCII::clean($dirtyTestString, true, true, false, true));
        static::
assertSame('?"Abcdef  ..." - ?', ASCII::clean($dirtyTestString, true, true, true, false));
        static::
assertSame('?"Abcdef  ..." - ?', ASCII::clean($dirtyTestString, true, true, true, true));
    }
}