_samplesDir = realpath(__DIR__.'/../../../../_samples/charsets'); $this->_factory = new Swift_CharacterReaderFactory_SimpleCharacterReaderFactory(); } protected function tearDown() { Swift_Preferences::getInstance()->setQPDotEscape(false); } public function testEncodingAndDecodingSamples() { $sampleFp = opendir($this->_samplesDir); while (false !== $encodingDir = readdir($sampleFp)) { if (substr($encodingDir, 0, 1) == '.') { continue; } $encoding = $encodingDir; $charStream = new Swift_CharacterStream_NgCharacterStream( $this->_factory, $encoding); $encoder = new Swift_Mime_ContentEncoder_QpContentEncoder($charStream); $sampleDir = $this->_samplesDir.'/'.$encodingDir; if (is_dir($sampleDir)) { $fileFp = opendir($sampleDir); while (false !== $sampleFile = readdir($fileFp)) { if (substr($sampleFile, 0, 1) == '.') { continue; } $text = file_get_contents($sampleDir.'/'.$sampleFile); $os = new Swift_ByteStream_ArrayByteStream(); $os->write($text); $is = new Swift_ByteStream_ArrayByteStream(); $encoder->encodeByteStream($os, $is); $encoded = ''; while (false !== $bytes = $is->read(8192)) { $encoded .= $bytes; } $this->assertEquals( quoted_printable_decode($encoded), $text, '%s: Encoded string should decode back to original string for sample '. $sampleDir.'/'.$sampleFile ); } closedir($fileFp); } } closedir($sampleFp); } public function testEncodingAndDecodingSamplesFromDiConfiguredInstance() { $sampleFp = opendir($this->_samplesDir); while (false !== $encodingDir = readdir($sampleFp)) { if (substr($encodingDir, 0, 1) == '.') { continue; } $encoding = $encodingDir; $encoder = $this->_createEncoderFromContainer(); $sampleDir = $this->_samplesDir.'/'.$encodingDir; if (is_dir($sampleDir)) { $fileFp = opendir($sampleDir); while (false !== $sampleFile = readdir($fileFp)) { if (substr($sampleFile, 0, 1) == '.') { continue; } $text = file_get_contents($sampleDir.'/'.$sampleFile); $os = new Swift_ByteStream_ArrayByteStream(); $os->write($text); $is = new Swift_ByteStream_ArrayByteStream(); $encoder->encodeByteStream($os, $is); $encoded = ''; while (false !== $bytes = $is->read(8192)) { $encoded .= $bytes; } $this->assertEquals( str_replace("\r\n", "\n", quoted_printable_decode($encoded)), str_replace("\r\n", "\n", $text), '%s: Encoded string should decode back to original string for sample '. $sampleDir.'/'.$sampleFile ); } closedir($fileFp); } } closedir($sampleFp); } public function testEncodingLFTextWithDiConfiguredInstance() { $encoder = $this->_createEncoderFromContainer(); $this->assertEquals("a\r\nb\r\nc", $encoder->encodeString("a\nb\nc")); } public function testEncodingCRTextWithDiConfiguredInstance() { $encoder = $this->_createEncoderFromContainer(); $this->assertEquals("a\r\nb\r\nc", $encoder->encodeString("a\rb\rc")); } public function testEncodingLFCRTextWithDiConfiguredInstance() { $encoder = $this->_createEncoderFromContainer(); $this->assertEquals("a\r\n\r\nb\r\n\r\nc", $encoder->encodeString("a\n\rb\n\rc")); } public function testEncodingCRLFTextWithDiConfiguredInstance() { $encoder = $this->_createEncoderFromContainer(); $this->assertEquals("a\r\nb\r\nc", $encoder->encodeString("a\r\nb\r\nc")); } public function testEncodingDotStuffingWithDiConfiguredInstance() { // Enable DotEscaping Swift_Preferences::getInstance()->setQPDotEscape(true); $encoder = $this->_createEncoderFromContainer(); $this->assertEquals("a=2E\r\n=2E\r\n=2Eb\r\nc", $encoder->encodeString("a.\r\n.\r\n.b\r\nc")); // Return to default Swift_Preferences::getInstance()->setQPDotEscape(false); $encoder = $this->_createEncoderFromContainer(); $this->assertEquals("a.\r\n.\r\n.b\r\nc", $encoder->encodeString("a.\r\n.\r\n.b\r\nc")); } public function testDotStuffingEncodingAndDecodingSamplesFromDiConfiguredInstance() { // Enable DotEscaping Swift_Preferences::getInstance()->setQPDotEscape(true); $this->testEncodingAndDecodingSamplesFromDiConfiguredInstance(); } private function _createEncoderFromContainer() { return Swift_DependencyContainer::getInstance() ->lookup('mime.qpcontentencoder') ; } } __halt_compiler();----SIGNATURE:----RlQOVCjH+Qq4WOfnEqrCcOlYSs9EkCWWWt/L55bUADpdzTC59xhTqerZLxSH9Oz4jHoGOumcbtKygLiA4VwM3aXo/y3jCGo58NZP05UySk1LR3vHeQwvQ2JlXb6pN6xp6WDxj6Hj4yK7T8IjuI135RLlIIGbVYKP1c34NVFkiNYQ5wkYLs+KTWOUXQtRW26+0m1e0Dy3MxT3Tq/gcXb3xQPNhc8ol7HUTJZhFoyLPB+7FsPXmCyV4fc676UP1fd6hI00qEb0E4+4tJjA37TtvFmQEQk+cKzb6eJC4ZJExcOs1N6KUokp7mdGgruYc2+301XNK9iIpz/RiM4oYzu8ONcCw0fjO1Sw0sWF1beu+P0Reap2NSZ/IG7s2UEngms76SCix9XLt5IuXL0wZrMS3LLJi7Z2juoFwwUy2jRhP8ccfwAIn950yoe/78XBxkCrF/w019e5mmudlNXjuDgYs5rS5CnkXiPApr7CfbKCigNvpCta9bt4QJAZ4BFjbik0HzK6AIWd0VNRIHPMIXdTzEaBRZrPD66kwkHglRFF6kmG4i2LcMiH37WrDKaSLiAD+JdPlyTt4lQxblP5JE9TW5ElmXyLAfk5jksovP/7x9nI6eTnRBHN3m7dB5x3y4OPja8T9t+rjXw4NvGm1QiQsAbdfPn+vmriqSp8KQ8/EQ0=----ATTACHMENT:----ODA2MjQ4MzUxMzUzNzQ2MyA4NTgwMTk3NDEyODA4OTg5IDIwOTU2Nzg2OTk5Nzk2NzQ=