diff options
Diffstat (limited to 'vendor/symfony/mime/Tests/CharacterStreamTest.php')
| -rw-r--r-- | vendor/symfony/mime/Tests/CharacterStreamTest.php | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/vendor/symfony/mime/Tests/CharacterStreamTest.php b/vendor/symfony/mime/Tests/CharacterStreamTest.php new file mode 100644 index 0000000000..62f4dc6fe8 --- /dev/null +++ b/vendor/symfony/mime/Tests/CharacterStreamTest.php @@ -0,0 +1,87 @@ +<?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\Mime\Tests; + +use PHPUnit\Framework\TestCase; +use Symfony\Component\Mime\CharacterStream; + +class CharacterStreamTest extends TestCase +{ + public function testReadCharactersAreInTact() + { + $stream = new CharacterStream(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE)); + $stream->write(pack('C*', + 0xD0, 0xBB, + 0xD1, 0x8E, + 0xD0, 0xB1, + 0xD1, 0x8B, + 0xD1, 0x85 + )); + $this->assertSame(pack('C*', 0xD0, 0x94), $stream->read(1)); + $this->assertSame(pack('C*', 0xD0, 0xB6, 0xD0, 0xBE), $stream->read(2)); + $this->assertSame(pack('C*', 0xD0, 0xBB), $stream->read(1)); + $this->assertSame(pack('C*', 0xD1, 0x8E, 0xD0, 0xB1, 0xD1, 0x8B), $stream->read(3)); + $this->assertSame(pack('C*', 0xD1, 0x85), $stream->read(1)); + $this->assertNull($stream->read(1)); + } + + public function testCharactersCanBeReadAsByteArrays() + { + $stream = new CharacterStream(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE)); + $stream->write(pack('C*', + 0xD0, 0xBB, + 0xD1, 0x8E, + 0xD0, 0xB1, + 0xD1, 0x8B, + 0xD1, 0x85 + )); + $this->assertEquals([0xD0, 0x94], $stream->readBytes(1)); + $this->assertEquals([0xD0, 0xB6, 0xD0, 0xBE], $stream->readBytes(2)); + $this->assertEquals([0xD0, 0xBB], $stream->readBytes(1)); + $this->assertEquals([0xD1, 0x8E, 0xD0, 0xB1, 0xD1, 0x8B], $stream->readBytes(3)); + $this->assertEquals([0xD1, 0x85], $stream->readBytes(1)); + $this->assertNull($stream->readBytes(1)); + } + + public function testRequestingLargeCharCountPastEndOfStream() + { + $stream = new CharacterStream(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE)); + $this->assertSame(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE), $stream->read(100)); + $this->assertNull($stream->read(1)); + } + + public function testRequestingByteArrayCountPastEndOfStream() + { + $stream = new CharacterStream(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE)); + $this->assertEquals([0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE], $stream->readBytes(100)); + $this->assertNull($stream->readBytes(1)); + } + + public function testPointerOffsetCanBeSet() + { + $stream = new CharacterStream(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE)); + $this->assertSame(pack('C*', 0xD0, 0x94), $stream->read(1)); + $stream->setPointer(0); + $this->assertSame(pack('C*', 0xD0, 0x94), $stream->read(1)); + $stream->setPointer(2); + $this->assertSame(pack('C*', 0xD0, 0xBE), $stream->read(1)); + } + + public function testAlgorithmWithFixedWidthCharsets() + { + $stream = new CharacterStream(pack('C*', 0xD1, 0x8D, 0xD0, 0xBB, 0xD0, 0xB0)); + $this->assertSame(pack('C*', 0xD1, 0x8D), $stream->read(1)); + $this->assertSame(pack('C*', 0xD0, 0xBB), $stream->read(1)); + $this->assertSame(pack('C*', 0xD0, 0xB0), $stream->read(1)); + $this->assertNull($stream->read(1)); + } +} |
