v1.0 Initial commit of project
This commit is contained in:
747
vendor/symfony/string/Tests/AbstractUnicodeTestCase.php
vendored
Normal file
747
vendor/symfony/string/Tests/AbstractUnicodeTestCase.php
vendored
Normal file
@@ -0,0 +1,747 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the Symfony package.
|
||||
*
|
||||
* (c) Fabien Potencier <fabien@symfony.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Symfony\Component\String\Tests;
|
||||
|
||||
use Symfony\Component\String\Exception\InvalidArgumentException;
|
||||
|
||||
abstract class AbstractUnicodeTestCase extends AbstractAsciiTestCase
|
||||
{
|
||||
public static function provideWidth(): array
|
||||
{
|
||||
return array_merge(
|
||||
parent::provideWidth(),
|
||||
[
|
||||
[14, '<<<END
|
||||
This is a
|
||||
multiline text
|
||||
END'],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public function testCreateFromStringWithInvalidUtf8Input()
|
||||
{
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
|
||||
static::createFromString("\xE9");
|
||||
}
|
||||
|
||||
public function testAscii()
|
||||
{
|
||||
$s = static::createFromString('Dieser Wert sollte größer oder gleich');
|
||||
$this->assertSame('Dieser Wert sollte grosser oder gleich', (string) $s->ascii());
|
||||
$this->assertSame('Dieser Wert sollte groesser oder gleich', (string) $s->ascii(['de-ASCII']));
|
||||
}
|
||||
|
||||
public function testAsciiClosureRule()
|
||||
{
|
||||
$rule = fn ($c) => str_replace('ö', 'OE', $c);
|
||||
|
||||
$s = static::createFromString('Dieser Wert sollte größer oder gleich');
|
||||
$this->assertSame('Dieser Wert sollte grOEsser oder gleich', (string) $s->ascii([$rule]));
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider provideLocaleLower
|
||||
*
|
||||
* @requires extension intl
|
||||
*/
|
||||
public function testLocaleLower(string $locale, string $expected, string $origin)
|
||||
{
|
||||
$instance = static::createFromString($origin)->localeLower($locale);
|
||||
|
||||
$this->assertNotSame(static::createFromString($origin), $instance);
|
||||
$this->assertEquals(static::createFromString($expected), $instance);
|
||||
$this->assertSame($expected, (string) $instance);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider provideLocaleUpper
|
||||
*
|
||||
* @requires extension intl
|
||||
*/
|
||||
public function testLocaleUpper(string $locale, string $expected, string $origin)
|
||||
{
|
||||
$instance = static::createFromString($origin)->localeUpper($locale);
|
||||
|
||||
$this->assertNotSame(static::createFromString($origin), $instance);
|
||||
$this->assertEquals(static::createFromString($expected), $instance);
|
||||
$this->assertSame($expected, (string) $instance);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider provideLocaleTitle
|
||||
*
|
||||
* @requires extension intl
|
||||
*/
|
||||
public function testLocaleTitle(string $locale, string $expected, string $origin)
|
||||
{
|
||||
$instance = static::createFromString($origin)->localeTitle($locale);
|
||||
|
||||
$this->assertNotSame(static::createFromString($origin), $instance);
|
||||
$this->assertEquals(static::createFromString($expected), $instance);
|
||||
$this->assertSame($expected, (string) $instance);
|
||||
}
|
||||
|
||||
public static function provideCreateFromCodePoint(): array
|
||||
{
|
||||
return [
|
||||
['', []],
|
||||
['*', [42]],
|
||||
['AZ', [65, 90]],
|
||||
['€', [8364]],
|
||||
['€', [0x20AC]],
|
||||
['Ʃ', [425]],
|
||||
['Ʃ', [0x1A9]],
|
||||
['☢☎❄', [0x2622, 0x260E, 0x2744]],
|
||||
];
|
||||
}
|
||||
|
||||
public static function provideBytesAt(): array
|
||||
{
|
||||
return array_merge(
|
||||
parent::provideBytesAt(),
|
||||
[
|
||||
[[0xC3, 0xA4], 'Späßchen', 2],
|
||||
[[0xC3, 0x9F], 'Späßchen', -5],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider provideCodePointsAt
|
||||
*/
|
||||
public function testCodePointsAt(array $expected, string $string, int $offset, ?int $form = null)
|
||||
{
|
||||
if (2 !== grapheme_strlen('च्छे') && 'नमस्ते' === $string) {
|
||||
$this->markTestSkipped('Skipping due to issue ICU-21661.');
|
||||
}
|
||||
|
||||
$instance = static::createFromString($string);
|
||||
$instance = $form ? $instance->normalize($form) : $instance;
|
||||
|
||||
$this->assertSame($expected, $instance->codePointsAt($offset));
|
||||
}
|
||||
|
||||
public static function provideCodePointsAt(): array
|
||||
{
|
||||
$data = [
|
||||
[[], '', 0],
|
||||
[[], 'a', 1],
|
||||
[[0x53], 'Späßchen', 0],
|
||||
[[0xE4], 'Späßchen', 2],
|
||||
[[0xDF], 'Späßchen', -5],
|
||||
];
|
||||
|
||||
// Skip this set if we encounter an issue in PCRE2
|
||||
// @see https://github.com/PCRE2Project/pcre2/issues/361
|
||||
if (3 === grapheme_strlen('☢☎❄')) {
|
||||
$data[] = [[0x260E], '☢☎❄', 1];
|
||||
}
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
||||
public static function provideLength(): array
|
||||
{
|
||||
return [
|
||||
[1, 'a'],
|
||||
[1, 'ß'],
|
||||
[2, 'is'],
|
||||
[3, 'PHP'],
|
||||
[3, '한국어'],
|
||||
[4, 'Java'],
|
||||
[7, 'Symfony'],
|
||||
[10, 'pineapples'],
|
||||
[22, 'Symfony is super cool!'],
|
||||
];
|
||||
}
|
||||
|
||||
public static function provideIndexOf(): array
|
||||
{
|
||||
return array_merge(
|
||||
parent::provideIndexOf(),
|
||||
[
|
||||
[1, '한국어', '국', 0],
|
||||
[1, '한국어', '국', 1],
|
||||
[null, '한국어', '국', 2],
|
||||
[8, 'der Straße nach Paris', 'ß', 4],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public static function provideIndexOfIgnoreCase(): array
|
||||
{
|
||||
return array_merge(
|
||||
parent::provideIndexOfIgnoreCase(),
|
||||
[
|
||||
[3, 'DÉJÀ', 'À', 0],
|
||||
[3, 'DÉJÀ', 'à', 0],
|
||||
[1, 'DÉJÀ', 'É', 1],
|
||||
[1, 'DÉJÀ', 'é', 1],
|
||||
[1, 'aςσb', 'ΣΣ', 0],
|
||||
[16, 'der Straße nach Paris', 'Paris', 0],
|
||||
[8, 'der Straße nach Paris', 'ß', 4],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public static function provideIndexOfLast(): array
|
||||
{
|
||||
return array_merge(
|
||||
parent::provideIndexOfLast(),
|
||||
[
|
||||
[null, '한국어', '', 0],
|
||||
[1, '한국어', '국', 0],
|
||||
[5, '한국어어어어국국', '어', 0],
|
||||
// see https://bugs.php.net/bug.php?id=74264
|
||||
[15, 'abcdéf12é45abcdéf', 'é', 0],
|
||||
[8, 'abcdéf12é45abcdéf', 'é', -4],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public static function provideIndexOfLastIgnoreCase(): array
|
||||
{
|
||||
return array_merge(
|
||||
parent::provideIndexOfLastIgnoreCase(),
|
||||
[
|
||||
[null, '한국어', '', 0],
|
||||
[3, 'DÉJÀ', 'à', 0],
|
||||
[3, 'DÉJÀ', 'À', 0],
|
||||
[6, 'DÉJÀÀÀÀ', 'à', 0],
|
||||
[6, 'DÉJÀÀÀÀ', 'à', 3],
|
||||
[5, 'DÉJÀÀÀÀ', 'àà', 0],
|
||||
[2, 'DÉJÀÀÀÀ', 'jà', 0],
|
||||
[2, 'DÉJÀÀÀÀ', 'jà', -5],
|
||||
[6, 'DÉJÀÀÀÀ!', 'à', -2],
|
||||
// see https://bugs.php.net/bug.php?id=74264
|
||||
[5, 'DÉJÀÀÀÀ', 'à', -2],
|
||||
[15, 'abcdéf12é45abcdéf', 'é', 0],
|
||||
[8, 'abcdéf12é45abcdéf', 'é', -4],
|
||||
[1, 'aςσb', 'ΣΣ', 0],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public static function provideSplit(): array
|
||||
{
|
||||
return array_merge(
|
||||
parent::provideSplit(),
|
||||
[
|
||||
[
|
||||
'會|意|文|字|/|会|意|文|字',
|
||||
'|',
|
||||
[
|
||||
static::createFromString('會'),
|
||||
static::createFromString('意'),
|
||||
static::createFromString('文'),
|
||||
static::createFromString('字'),
|
||||
static::createFromString('/'),
|
||||
static::createFromString('会'),
|
||||
static::createFromString('意'),
|
||||
static::createFromString('文'),
|
||||
static::createFromString('字'),
|
||||
],
|
||||
null,
|
||||
],
|
||||
[
|
||||
'會|意|文|字|/|会|意|文|字',
|
||||
'|',
|
||||
[
|
||||
static::createFromString('會'),
|
||||
static::createFromString('意'),
|
||||
static::createFromString('文'),
|
||||
static::createFromString('字'),
|
||||
static::createFromString('/|会|意|文|字'),
|
||||
],
|
||||
5,
|
||||
],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public static function provideChunk(): array
|
||||
{
|
||||
return array_merge(
|
||||
parent::provideChunk(),
|
||||
[
|
||||
[
|
||||
'déjà',
|
||||
[
|
||||
static::createFromString('d'),
|
||||
static::createFromString('é'),
|
||||
static::createFromString('j'),
|
||||
static::createFromString('à'),
|
||||
],
|
||||
1,
|
||||
],
|
||||
[
|
||||
'déjà',
|
||||
[
|
||||
static::createFromString('dé'),
|
||||
static::createFromString('jà'),
|
||||
],
|
||||
2,
|
||||
],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public function testTrimWithInvalidUtf8CharList()
|
||||
{
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
|
||||
static::createFromString('Symfony')->trim("\xE9");
|
||||
}
|
||||
|
||||
public function testTrimStartWithInvalidUtf8CharList()
|
||||
{
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
|
||||
static::createFromString('Symfony')->trimStart("\xE9");
|
||||
}
|
||||
|
||||
public function testTrimEndWithInvalidUtf8CharList()
|
||||
{
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
|
||||
static::createFromString('Symfony')->trimEnd("\xE9");
|
||||
}
|
||||
|
||||
public static function provideLower(): array
|
||||
{
|
||||
return array_merge(
|
||||
parent::provideLower(),
|
||||
[
|
||||
// French
|
||||
['garçon', 'garçon'],
|
||||
['garçon', 'GARÇON'],
|
||||
["œuvre d'art", "Œuvre d'Art"],
|
||||
|
||||
// Spanish
|
||||
['el niño', 'El Niño'],
|
||||
|
||||
// Romanian
|
||||
['împărat', 'Împărat'],
|
||||
|
||||
// Random symbols
|
||||
['déjà σσς i̇iıi', 'DÉJÀ Σσς İIıi'],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public static function provideLocaleLower(): array
|
||||
{
|
||||
return [
|
||||
// Lithuanian
|
||||
// Introduce an explicit dot above when lowercasing capital I's and J's
|
||||
// whenever there are more accents above.
|
||||
// LATIN CAPITAL LETTER I WITH OGONEK -> LATIN SMALL LETTER I WITH OGONEK
|
||||
['lt', 'į', 'Į'],
|
||||
// LATIN CAPITAL LETTER I WITH GRAVE -> LATIN SMALL LETTER I COMBINING DOT ABOVE
|
||||
['lt', 'i̇̀', 'Ì'],
|
||||
// LATIN CAPITAL LETTER I WITH ACUTE -> LATIN SMALL LETTER I COMBINING DOT ABOVE COMBINING ACUTE ACCENT
|
||||
['lt', 'i̇́', 'Í'],
|
||||
// LATIN CAPITAL LETTER I WITH TILDE -> LATIN SMALL LETTER I COMBINING DOT ABOVE COMBINING TILDE
|
||||
['lt', 'i̇̃', 'Ĩ'],
|
||||
|
||||
// Turkish and Azeri
|
||||
// When lowercasing, remove dot_above in the sequence I + dot_above, which will turn into 'i'.
|
||||
// LATIN CAPITAL LETTER I WITH DOT ABOVE -> LATIN SMALL LETTER I
|
||||
['tr', 'i', 'İ'],
|
||||
['tr_TR', 'i', 'İ'],
|
||||
['az', 'i', 'İ'],
|
||||
|
||||
// Default casing rules
|
||||
// LATIN CAPITAL LETTER I WITH DOT ABOVE -> LATIN SMALL LETTER I COMBINING DOT ABOVE
|
||||
['en_US', 'i̇', 'İ'],
|
||||
['en', 'i̇', 'İ'],
|
||||
];
|
||||
}
|
||||
|
||||
public static function provideLocaleUpper(): array
|
||||
{
|
||||
return [
|
||||
// Turkish and Azeri
|
||||
// When uppercasing, i turns into a dotted capital I
|
||||
// LATIN SMALL LETTER I -> LATIN CAPITAL LETTER I WITH DOT ABOVE
|
||||
['tr', 'İ', 'i'],
|
||||
['tr_TR', 'İ', 'i'],
|
||||
['az', 'İ', 'i'],
|
||||
|
||||
// Greek
|
||||
// Remove accents when uppercasing
|
||||
// GREEK SMALL LETTER ALPHA WITH TONOS -> GREEK CAPITAL LETTER ALPHA
|
||||
['el', 'Α', 'ά'],
|
||||
['el_GR', 'Α', 'ά'],
|
||||
|
||||
// Default casing rules
|
||||
// GREEK SMALL LETTER ALPHA WITH TONOS -> GREEK CAPITAL LETTER ALPHA WITH TONOS
|
||||
['en_US', 'Ά', 'ά'],
|
||||
['en', 'Ά', 'ά'],
|
||||
];
|
||||
}
|
||||
|
||||
public static function provideLocaleTitle(): array
|
||||
{
|
||||
return [
|
||||
// Greek
|
||||
// Titlecasing words, should keep the accents on the first letter
|
||||
['el', 'Άδικος', 'άδικος'],
|
||||
['el_GR', 'Άδικος', 'άδικος'],
|
||||
['en', 'Άδικος', 'άδικος'],
|
||||
|
||||
// Dutch
|
||||
// Title casing should treat 'ij' as one character
|
||||
['nl_NL', 'IJssel', 'ijssel'],
|
||||
['nl_BE', 'IJssel', 'ijssel'],
|
||||
['nl', 'IJssel', 'ijssel'],
|
||||
|
||||
// Default casing rules
|
||||
['en', 'Ijssel', 'ijssel'],
|
||||
];
|
||||
}
|
||||
|
||||
public static function provideUpper(): array
|
||||
{
|
||||
return array_merge(
|
||||
parent::provideUpper(),
|
||||
[
|
||||
// French
|
||||
['GARÇON', 'garçon'],
|
||||
['GARÇON', 'GARÇON'],
|
||||
["ŒUVRE D'ART", "Œuvre d'Art"],
|
||||
|
||||
// German
|
||||
['ÄUSSERST', 'äußerst'],
|
||||
|
||||
// Spanish
|
||||
['EL NIÑO', 'El Niño'],
|
||||
|
||||
// Romanian
|
||||
['ÎMPĂRAT', 'Împărat'],
|
||||
|
||||
// Random symbols
|
||||
['DÉJÀ ΣΣΣ İIII', 'Déjà Σσς İIıi'],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public static function provideTitle(): array
|
||||
{
|
||||
return array_merge(
|
||||
parent::provideTitle(),
|
||||
[
|
||||
['Deja', 'deja', false],
|
||||
['Σσς', 'σσς', false],
|
||||
['DEJa', 'dEJa', false],
|
||||
['ΣσΣ', 'σσΣ', false],
|
||||
['Deja Σσς DEJa ΣσΣ', 'deja σσς dEJa σσΣ', true],
|
||||
|
||||
// Spanish
|
||||
['Última prueba', 'última prueba', false],
|
||||
['ÚLTIMA pRUEBA', 'úLTIMA pRUEBA', false],
|
||||
|
||||
['¡Hola spain!', '¡hola spain!', false],
|
||||
['¡HOLA sPAIN!', '¡hOLA sPAIN!', false],
|
||||
|
||||
['¡Hola Spain!', '¡hola spain!', true],
|
||||
['¡HOLA SPAIN!', '¡hOLA sPAIN!', true],
|
||||
|
||||
['Última Prueba', 'última prueba', true],
|
||||
['ÚLTIMA PRUEBA', 'úLTIMA pRUEBA', true],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public static function provideSlice(): array
|
||||
{
|
||||
return array_merge(
|
||||
parent::provideSlice(),
|
||||
[
|
||||
['jà', 'déjà', 2, null],
|
||||
['jà', 'déjà', 2, null],
|
||||
['jà', 'déjà', -2, null],
|
||||
['jà', 'déjà', -2, 3],
|
||||
['', 'déjà', -1, 0],
|
||||
['', 'déjà', 1, -4],
|
||||
['j', 'déjà', -2, -1],
|
||||
['', 'déjà', -2, -2],
|
||||
['', 'déjà', 5, 0],
|
||||
['', 'déjà', -5, 0],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public static function provideAppend(): array
|
||||
{
|
||||
return array_merge(
|
||||
parent::provideAppend(),
|
||||
[
|
||||
[
|
||||
'Déjà Σσς',
|
||||
['Déjà', ' ', 'Σσς'],
|
||||
],
|
||||
[
|
||||
'Déjà Σσς İIıi',
|
||||
['Déjà', ' Σσς', ' İIıi'],
|
||||
],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public function testAppendInvalidUtf8String()
|
||||
{
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
|
||||
static::createFromString('Symfony')->append("\xE9");
|
||||
}
|
||||
|
||||
public static function providePrepend(): array
|
||||
{
|
||||
return array_merge(
|
||||
parent::providePrepend(),
|
||||
[
|
||||
[
|
||||
'Σσς Déjà',
|
||||
['Déjà', 'Σσς '],
|
||||
],
|
||||
[
|
||||
'İIıi Σσς Déjà',
|
||||
['Déjà', 'Σσς ', 'İIıi '],
|
||||
],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public function testPrependInvalidUtf8String()
|
||||
{
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
|
||||
static::createFromString('Symfony')->prepend("\xE9");
|
||||
}
|
||||
|
||||
public static function provideBeforeAfter(): array
|
||||
{
|
||||
return array_merge(
|
||||
parent::provideBeforeAfter(),
|
||||
[
|
||||
['jàdéjà', 'jà', 'déjàdéjà', 0, false],
|
||||
['dé', 'jà', 'déjàdéjà', 0, true],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public static function provideBeforeAfterIgnoreCase(): array
|
||||
{
|
||||
return array_merge(
|
||||
parent::provideBeforeAfterIgnoreCase(),
|
||||
[
|
||||
['jàdéjà', 'JÀ', 'déjàdéjà', 0, false],
|
||||
['dé', 'jÀ', 'déjàdéjà', 0, true],
|
||||
['éjàdéjà', 'é', 'déjàdéjà', 0, false],
|
||||
['d', 'é', 'déjàdéjà', 0, true],
|
||||
['déjàdéjà', 'Ç', 'déjàdéjà', 0, false],
|
||||
['déjàdéjà', 'Ç', 'déjàdéjà', 0, true],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public static function provideBeforeAfterLast(): array
|
||||
{
|
||||
return array_merge(
|
||||
parent::provideBeforeAfterLast(),
|
||||
[
|
||||
['déjàdéjà', 'Ç', 'déjàdéjà', 0, false],
|
||||
['déjàdéjà', 'Ç', 'déjàdéjà', 0, true],
|
||||
['éjà', 'é', 'déjàdéjà', 0, false],
|
||||
['déjàd', 'é', 'déjàdéjà', 0, true],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public static function provideBeforeAfterLastIgnoreCase(): array
|
||||
{
|
||||
return array_merge(
|
||||
parent::provideBeforeAfterLastIgnoreCase(),
|
||||
[
|
||||
['déjàdéjà', 'Ç', 'déjàdéjà', 0, false],
|
||||
['éjà', 'é', 'déjàdéjà', 0, false],
|
||||
['éjà', 'É', 'déjàdéjà', 0, false],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public static function provideFolded(): array
|
||||
{
|
||||
return array_merge(
|
||||
parent::provideFolded(),
|
||||
[
|
||||
['déjà', 'DéjÀ'],
|
||||
['σσσ', 'Σσς'],
|
||||
['iıi̇i', 'Iıİi'],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public static function provideReplace(): array
|
||||
{
|
||||
return array_merge(
|
||||
parent::provideReplace(),
|
||||
[
|
||||
['ΣσΣ', 1, 'Σσς', 'ς', 'Σ'],
|
||||
['漢字はユニコード', 0, '漢字はユニコード', 'foo', 'bar'],
|
||||
['漢字ーユニコード', 1, '漢字はユニコード', 'は', 'ー'],
|
||||
['This is a jamais-vu situation!', 1, 'This is a déjà-vu situation!', 'déjà', 'jamais'],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public static function provideReplaceMatches(): array
|
||||
{
|
||||
return array_merge(
|
||||
parent::provideReplaceMatches(),
|
||||
[
|
||||
['This is a dj-vu situation!', 'This is a déjà-vu situation!', '/([à-ú])/', ''],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public static function provideReplaceIgnoreCase(): array
|
||||
{
|
||||
return array_merge(
|
||||
parent::provideReplaceIgnoreCase(),
|
||||
[
|
||||
// σ and ς are lowercase variants for Σ
|
||||
['ΣΣΣ', 3, 'σσσ', 'σ', 'Σ'],
|
||||
['ΣΣΣ', 3, 'σσσ', 'ς', 'Σ'],
|
||||
['Σσ', 1, 'σσσ', 'σσ', 'Σ'],
|
||||
['漢字はユニコード', 0, '漢字はユニコード', 'foo', 'bar'],
|
||||
['漢字ーユニコード', 1, '漢字はユニコード', 'は', 'ー'],
|
||||
['This is a jamais-vu situation!', 1, 'This is a déjà-vu situation!', 'DÉjÀ', 'jamais'],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public function testReplaceWithInvalidUtf8Pattern()
|
||||
{
|
||||
$this->assertEquals('Symfony', static::createFromString('Symfony')->replace("\xE9", 'p'));
|
||||
}
|
||||
|
||||
public function testReplaceWithInvalidUtf8PatternReplacement()
|
||||
{
|
||||
$this->expectException(InvalidArgumentException::class);
|
||||
|
||||
static::createFromString('Symfony')->replace('f', "\xE9");
|
||||
}
|
||||
|
||||
public static function provideCamel()
|
||||
{
|
||||
return array_merge(
|
||||
parent::provideCamel(),
|
||||
[
|
||||
['symfonyIstÄußerstCool', 'symfony_ist_äußerst_cool'],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public static function provideSnake()
|
||||
{
|
||||
return array_merge(
|
||||
parent::provideSnake(),
|
||||
[
|
||||
['symfony_ist_äußerst_cool', 'symfonyIstÄußerstCool'],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public static function provideKebab(): array
|
||||
{
|
||||
return [
|
||||
...parent::provideKebab(),
|
||||
['symfony-ist-äußerst-cool', 'symfonyIstÄußerstCool'],
|
||||
['symfony-with-emojis', 'Symfony with 😃 emojis'],
|
||||
];
|
||||
}
|
||||
|
||||
public static function provideEqualsTo()
|
||||
{
|
||||
return array_merge(
|
||||
parent::provideEqualsTo(),
|
||||
[
|
||||
[true, 'äußerst', 'äußerst'],
|
||||
[false, 'BÄR', 'bär'],
|
||||
[false, 'Bär', 'Bar'],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public static function provideEqualsToIgnoreCase()
|
||||
{
|
||||
return array_merge(
|
||||
parent::provideEqualsToIgnoreCase(),
|
||||
[
|
||||
[true, 'Äußerst', 'äußerst'],
|
||||
[false, 'Bär', 'Bar'],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public static function providePadBoth(): array
|
||||
{
|
||||
return array_merge(
|
||||
parent::providePadBoth(),
|
||||
[
|
||||
['äußerst', 'äußerst', 7, '+'],
|
||||
['+äußerst+', 'äußerst', 9, '+'],
|
||||
['äö.äöä', '.', 6, 'äö'],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public static function providePadEnd(): array
|
||||
{
|
||||
return array_merge(
|
||||
parent::providePadEnd(),
|
||||
[
|
||||
['äußerst', 'äußerst', 7, '+'],
|
||||
['äußerst+', 'äußerst', 8, '+'],
|
||||
['.äöä', '.', 4, 'äö'],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public static function providePadStart(): array
|
||||
{
|
||||
return array_merge(
|
||||
parent::providePadStart(),
|
||||
[
|
||||
['äußerst', 'äußerst', 7, '+'],
|
||||
['+äußerst', 'äußerst', 8, '+'],
|
||||
['äöä.', '.', 4, 'äö'],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
public static function provideReverse()
|
||||
{
|
||||
return array_merge(
|
||||
parent::provideReverse(),
|
||||
[
|
||||
['äuß⭐erst', 'tsre⭐ßuä'],
|
||||
['漢字ーユニコードéèΣσς', 'ςσΣèéドーコニユー字漢'],
|
||||
['नमस्ते', 'तेस्मन'],
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user