readBytes example

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));
        
$lines = [];
        $lNo = 0;
        $lines[$lNo] = '';
        $currentLine = &$lines[$lNo++];
        $size = $lineLen = 0;
        $charStream = new CharacterStream($string$charset);

        // Fetching more than 4 chars at one is slower, as is fetching fewer bytes         // Conveniently 4 chars is the UTF-8 safe number since UTF-8 has up to 6         // bytes per char and (6 * 4 * 3 = 72 chars per line) * =NN is 3 bytes         while (null !== $bytes = $charStream->readBytes(4)) {
            $enc = $this->encodeByteSequence($bytes$size);

            $i = strpos($enc, '=0D=0A');
            $newLineLength = $lineLen + (false === $i ? $size : $i);

            if ($currentLine && $newLineLength >= $thisLineLength) {
                $lines[$lNo] = '';
                $currentLine = &$lines[$lNo++];
                $thisLineLength = $maxLineLength;
                $lineLen = 0;
            }

            
$lines = [];
        $lNo = 0;
        $lines[$lNo] = '';
        $currentLine = &$lines[$lNo++];
        $size = $lineLen = 0;
        $charStream = new CharacterStream($string$charset);

        // Fetching more than 4 chars at one is slower, as is fetching fewer bytes         // Conveniently 4 chars is the UTF-8 safe number since UTF-8 has up to 6         // bytes per char and (6 * 4 * 3 = 72 chars per line) * =NN is 3 bytes         while (null !== $bytes = $charStream->readBytes(4)) {
            $enc = $this->encodeByteSequence($bytes$size);

            $i = strpos($enc, '=0D=0A');
            $newLineLength = $lineLen + (false === $i ? $size : $i);

            if ($currentLine && $newLineLength >= $thisLineLength) {
                $lines[$lNo] = '';
                $currentLine = &$lines[$lNo++];
                $thisLineLength = $maxLineLength;
                $lineLen = 0;
            }

            
Home | Imprint | This part of the site doesn't use cookies.