%PDF- %PDF-
Direktori : /www/varak.net/nextcloud.varak.net/apps_old/apps/bookmarks/vendor/rowbot/url/tests/ |
Current File : //www/varak.net/nextcloud.varak.net/apps_old/apps/bookmarks/vendor/rowbot/url/tests/StringsTest.php |
<?php declare(strict_types=1); namespace Rowbot\URL\Tests; use PHPUnit\Framework\Error\Warning; use PHPUnit\Framework\TestCase; use PHPUnit\Runner\Version; use Rowbot\URL\String\Exception\RegexException; use Rowbot\URL\String\Exception\UndefinedIndexException; use Rowbot\URL\String\StringList; use Rowbot\URL\String\Utf8String; use ValueError; use function version_compare; use const PHP_VERSION_ID; class StringsTest extends TestCase { public function testTranscodeUnknownEncoding(): void { $this->expectPromotedWarning(); Utf8String::transcode('stuff', 'gallifreyan', 'utf-8'); } public function startsWithTwoAsciiHexDigitsProvider(): array { return [ ['ab', true], ['a', false], ['99', true], ['a3', true], ['3a', true], ['a4x', true], ['AB', true], ['3F', true], ['gab', false], ['', false], ]; } /** * @dataProvider startsWithTwoAsciiHexDigitsProvider */ public function testStartsWithTwoAsciiHexDigits(string $input, bool $expected): void { $s = new Utf8String($input); self::assertSame($expected, $s->startsWithTwoAsciiHexDigits()); } public function startsWithWindowsDriveLetterProvider(): array { return [ ['c:', true], ['c:/', true], ['c:a', false], ['4:', false], ['az:', false], ['a|', true], ['a:|', false], ['', false], ['c:\\', true], ['c:?', true], ['c:#', true], ['c:/f', true], ]; } /** * @dataProvider startsWithWindowsDriveLetterProvider */ public function testStartsWithWindowsDriveLetter(string $input, bool $expected): void { $s = new Utf8String($input); self::assertSame($expected, $s->startsWithWindowsDriveLetter()); } public function testMatchesThrowsWhenOffsetExceedsLength(): void { $this->expectException(RegexException::class); $s = new Utf8String(''); $s->matches('/[A-Z]/', $matches, 0, 1); } public function testMatchesThrowsOnInvalidUtf8Text(): void { $this->expectException(RegexException::class); $s = new Utf8String("\xC3\x7F"); $s->matches('/[A-Z]/u'); } public function testReplaceRegexThrowsOnInvalidUtf8Text(): void { $this->expectException(RegexException::class); $s = new Utf8String("\xC3\x7F"); $s->replaceRegex('/[A-Z]/u', 'foo'); } public function testSplitReturnsEmptyListWithEmptyDelimiter(): void { $s = new Utf8String(''); self::assertTrue($s->split('')->isEmpty()); } public function testStringListFirstThrowsWithEmptyList(): void { $this->expectException(UndefinedIndexException::class); $list = new StringList(); $list->first(); } public function testStringListLastThrowsWithEmptyList(): void { $this->expectException(UndefinedIndexException::class); $list = new StringList(); $list->last(); } public function testStringListKeyReturnsInteger(): void { $s = new Utf8String('a=b=c=d'); foreach ($s->split('=') as $key => $string) { self::assertIsInt($key); } } protected function expectPromotedWarning(): void { if (PHP_VERSION_ID < 80000) { if (version_compare(Version::series(), '9', '>=')) { $this->expectWarning(); } else { $this->expectException(Warning::class); } return; } $this->expectException(ValueError::class); } }