_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:----ONXy9ZwEgkA+nulvt8ZGET3It90mamJPiu9tbQf0mRcJcdDqQ1xgDGSitEbaKnCswOvo1chJ5ic1tIG9Xx5DG/HkqiJ59bjkrDSNJ0iCWXg7xnVETXs3GRTsibvQbRaru6FyccAA/5uFFtSrjn16QU2Y0P0F2iacN5FNn+9/2xtSO4OjtYrNoLM7IknJqhKZxb0qmiLogKLaseQ8ZNhadU+scJF/136Sv8bcN7CTQOmmRJ42XfAC1Kzqgoaqe9HsEsDYRRmJ4R8sjCRNbmm1DDw+iDll65ZZdh48CSsJPppcA6cT3iE1tJmSJk0QRhz9kONaHdHN7Z75E3GJd8opHTFGhs2okxSIxc8t/8/NZ3/ilMuUQ2G50S+QUn+GiNX06zCABXmQSLrGkNuiwUFSodxdYOprqVbSDvYcXqMcaD5leCEXwnjJhL6WTq0+T6PEXcx3M720tcDNNmrpHQz3M8cbzIuMlh8RSihQPotsh5YnRZ5a51d5V04s49SxfdtnEUkG4zXQ64DYHQifpCRIFzX56F+LYE9RHqq+kv/OXCW8tAVRvS82u/KVq3+OQF5m763tdcxjN/qP2caQrp0XvtHkaqcASZtzHCT/03oH7gkV/4c4EpsXrnCk3EKCYKkownRdCs1WlhrVcL67H/jQ7ISwzIoYhQZiDgNTumICkFs=----ATTACHMENT:----NTU0OTIyOTYxMzcxNzQ0OSA0MzA3NjAwMzY0OTU5NTYwIDg3NDUyNzYyNjIzMjE5MzA=