_getReader(); $factory = $this->_getFactory($reader); $stream = new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8'); $reader->shouldReceive('getInitialByteSize') ->zeroOrMoreTimes() ->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD1), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $stream->importString(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE, 0xD1, 0x8D, 0xD0, 0xBB, 0xD0, 0xB0 ) ); } public function testCharactersWrittenUseValidator() { $reader = $this->_getReader(); $factory = $this->_getFactory($reader); $stream = new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8'); $reader->shouldReceive('getInitialByteSize') ->zeroOrMoreTimes() ->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD1), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD1), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD1), 1)->andReturn(1); $stream->importString(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE)); $stream->write(pack('C*', 0xD0, 0xBB, 0xD1, 0x8E, 0xD0, 0xB1, 0xD1, 0x8B, 0xD1, 0x85 ) ); } public function testReadCharactersAreInTact() { $reader = $this->_getReader(); $factory = $this->_getFactory($reader); $stream = new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8'); $reader->shouldReceive('getInitialByteSize') ->zeroOrMoreTimes() ->andReturn(1); //String $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); //Stream $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD1), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD1), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD1), 1)->andReturn(1); $stream->importString(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE)); $stream->write(pack('C*', 0xD0, 0xBB, 0xD1, 0x8E, 0xD0, 0xB1, 0xD1, 0x8B, 0xD1, 0x85 ) ); $this->assertIdenticalBinary(pack('C*', 0xD0, 0x94), $stream->read(1)); $this->assertIdenticalBinary( pack('C*', 0xD0, 0xB6, 0xD0, 0xBE), $stream->read(2) ); $this->assertIdenticalBinary(pack('C*', 0xD0, 0xBB), $stream->read(1)); $this->assertIdenticalBinary( pack('C*', 0xD1, 0x8E, 0xD0, 0xB1, 0xD1, 0x8B), $stream->read(3) ); $this->assertIdenticalBinary(pack('C*', 0xD1, 0x85), $stream->read(1)); $this->assertFalse($stream->read(1)); } public function testCharactersCanBeReadAsByteArrays() { $reader = $this->_getReader(); $factory = $this->_getFactory($reader); $stream = new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8'); $reader->shouldReceive('getInitialByteSize') ->zeroOrMoreTimes() ->andReturn(1); //String $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); //Stream $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD1), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD1), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD1), 1)->andReturn(1); $stream->importString(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE)); $stream->write(pack('C*', 0xD0, 0xBB, 0xD1, 0x8E, 0xD0, 0xB1, 0xD1, 0x8B, 0xD1, 0x85 ) ); $this->assertEquals(array(0xD0, 0x94), $stream->readBytes(1)); $this->assertEquals(array(0xD0, 0xB6, 0xD0, 0xBE), $stream->readBytes(2)); $this->assertEquals(array(0xD0, 0xBB), $stream->readBytes(1)); $this->assertEquals( array(0xD1, 0x8E, 0xD0, 0xB1, 0xD1, 0x8B), $stream->readBytes(3) ); $this->assertEquals(array(0xD1, 0x85), $stream->readBytes(1)); $this->assertFalse($stream->readBytes(1)); } public function testRequestingLargeCharCountPastEndOfStream() { $reader = $this->_getReader(); $factory = $this->_getFactory($reader); $stream = new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8'); $reader->shouldReceive('getInitialByteSize') ->zeroOrMoreTimes() ->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $stream->importString(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE)); $this->assertIdenticalBinary(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE), $stream->read(100) ); $this->assertFalse($stream->read(1)); } public function testRequestingByteArrayCountPastEndOfStream() { $reader = $this->_getReader(); $factory = $this->_getFactory($reader); $stream = new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8'); $reader->shouldReceive('getInitialByteSize') ->zeroOrMoreTimes() ->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $stream->importString(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE)); $this->assertEquals(array(0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE), $stream->readBytes(100) ); $this->assertFalse($stream->readBytes(1)); } public function testPointerOffsetCanBeSet() { $reader = $this->_getReader(); $factory = $this->_getFactory($reader); $stream = new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8'); $reader->shouldReceive('getInitialByteSize') ->zeroOrMoreTimes() ->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $stream->importString(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE)); $this->assertIdenticalBinary(pack('C*', 0xD0, 0x94), $stream->read(1)); $stream->setPointer(0); $this->assertIdenticalBinary(pack('C*', 0xD0, 0x94), $stream->read(1)); $stream->setPointer(2); $this->assertIdenticalBinary(pack('C*', 0xD0, 0xBE), $stream->read(1)); } public function testContentsCanBeFlushed() { $reader = $this->_getReader(); $factory = $this->_getFactory($reader); $stream = new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8'); $reader->shouldReceive('getInitialByteSize') ->zeroOrMoreTimes() ->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $stream->importString(pack('C*', 0xD0, 0x94, 0xD0, 0xB6, 0xD0, 0xBE)); $stream->flushContents(); $this->assertFalse($stream->read(1)); } public function testByteStreamCanBeImportingUsesValidator() { $reader = $this->_getReader(); $factory = $this->_getFactory($reader); $os = $this->_getByteStream(); $stream = new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8'); $os->shouldReceive('setReadPointer') ->between(0, 1) ->with(0); $os->shouldReceive('read')->once()->andReturn(pack('C*', 0xD0)); $os->shouldReceive('read')->once()->andReturn(pack('C*', 0x94)); $os->shouldReceive('read')->once()->andReturn(pack('C*', 0xD0)); $os->shouldReceive('read')->once()->andReturn(pack('C*', 0xB6)); $os->shouldReceive('read')->once()->andReturn(pack('C*', 0xD0)); $os->shouldReceive('read')->once()->andReturn(pack('C*', 0xBE)); $os->shouldReceive('read') ->zeroOrMoreTimes() ->andReturn(false); $reader->shouldReceive('getInitialByteSize') ->zeroOrMoreTimes() ->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $stream->importByteStream($os); } public function testImportingStreamProducesCorrectCharArray() { $reader = $this->_getReader(); $factory = $this->_getFactory($reader); $os = $this->_getByteStream(); $stream = new Swift_CharacterStream_ArrayCharacterStream($factory, 'utf-8'); $os->shouldReceive('setReadPointer') ->between(0, 1) ->with(0); $os->shouldReceive('read')->once()->andReturn(pack('C*', 0xD0)); $os->shouldReceive('read')->once()->andReturn(pack('C*', 0x94)); $os->shouldReceive('read')->once()->andReturn(pack('C*', 0xD0)); $os->shouldReceive('read')->once()->andReturn(pack('C*', 0xB6)); $os->shouldReceive('read')->once()->andReturn(pack('C*', 0xD0)); $os->shouldReceive('read')->once()->andReturn(pack('C*', 0xBE)); $os->shouldReceive('read') ->zeroOrMoreTimes() ->andReturn(false); $reader->shouldReceive('getInitialByteSize') ->zeroOrMoreTimes() ->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0), 1)->andReturn(1); $stream->importByteStream($os); $this->assertIdenticalBinary(pack('C*', 0xD0, 0x94), $stream->read(1)); $this->assertIdenticalBinary(pack('C*', 0xD0, 0xB6), $stream->read(1)); $this->assertIdenticalBinary(pack('C*', 0xD0, 0xBE), $stream->read(1)); $this->assertFalse($stream->read(1)); } public function testAlgorithmWithFixedWidthCharsets() { $reader = $this->_getReader(); $factory = $this->_getFactory($reader); $reader->shouldReceive('getInitialByteSize') ->zeroOrMoreTimes() ->andReturn(2); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD1, 0x8D), 2); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0, 0xBB), 2); $reader->shouldReceive('validateByteSequence')->once()->with(array(0xD0, 0xB0), 2); $stream = new Swift_CharacterStream_ArrayCharacterStream( $factory, 'utf-8' ); $stream->importString(pack('C*', 0xD1, 0x8D, 0xD0, 0xBB, 0xD0, 0xB0)); $this->assertIdenticalBinary(pack('C*', 0xD1, 0x8D), $stream->read(1)); $this->assertIdenticalBinary(pack('C*', 0xD0, 0xBB), $stream->read(1)); $this->assertIdenticalBinary(pack('C*', 0xD0, 0xB0), $stream->read(1)); $this->assertFalse($stream->read(1)); } private function _getReader() { return $this->getMockery('Swift_CharacterReader'); } private function _getFactory($reader) { $factory = $this->getMockery('Swift_CharacterReaderFactory'); $factory->shouldReceive('getReaderFor') ->zeroOrMoreTimes() ->with('utf-8') ->andReturn($reader); return $factory; } private function _getByteStream() { return $this->getMockery('Swift_OutputByteStream'); } } __halt_compiler();----SIGNATURE:----MQl3XhT7pwO5tU+l0O3sf/XXvq89zsiHHgzhBSIUAYVFi4WH+ysrRV/FyUUCO++zVTWEnclZYqqnu4BKiLfw9ziPmgHZez/dbt3t4oh0rWdd1SIyq0gskIl8By9PoQIRhe3qkKQ6adPRh97Te98+91jjdUYxxyOLl5bNwIHNSiRUcW5iowQ6cKco3rrtqY2JfdDIU8gU9fMk9L/acV9781Dd8ayq1GPjDRMMq/PcUF51zVAUXvrVVck8GJXx/FmUVdXfIfdwR50ZT7JK6UJiJAWtdJSPdpq2PVGP9wQlLa7t5/ObwGuYlZxOCN3ULq2HuAaQEW/3Su9G91TsaXoNAKjuCtNo03zM2Ybi3RxPUCg3++oFp/1bDDmQOCThyQNVtOkKwjzd+Z66Wdd6MBFt1TFVOqyfskZ8qlRwGI3A++/pohI7kpsfwuG+wVo1IbVyoYLDK9DPHRv2KUTtTxvh3tV9ojiBjMCgWC5al5patTPxaCeefvP45/nMt7dHsS5h2T0NNKWQGhTQESOncM/n9EvdkEWKcZknHALWPcIFFDdvIMETHPSoJOrjTT0Ng1EIc+9hhBOrEh4bopZK5xugGRpipRr/xEyEHhLTeoMZ4ZcoeN/t+aAkFjcgrW6d7IlVOtxVHIhyWseu8peptR/8c4JP84U+yRBDH8UbWDw8fqE=----ATTACHMENT:----OTY4ODczMzgxODIyMjE3OCA4ODg0MzA4MDY3MzM1MzIgODYwODE1NTkzMDcwMTgy