Rfc2231EncoderAcceptanceTest.php 1.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. <?php
  2. require_once 'Swift/Encoder/Rfc2231Encoder.php';
  3. require_once 'Swift/CharacterStream/ArrayCharacterStream.php';
  4. require_once 'Swift/CharacterReaderFactory/SimpleCharacterReaderFactory.php';
  5. class Swift_Encoder_Rfc2231EncoderAcceptanceTest extends UnitTestCase
  6. {
  7. private $_samplesDir;
  8. private $_factory;
  9. public function setUp()
  10. {
  11. $this->_samplesDir = realpath(dirname(__FILE__) . '/../../../_samples/charsets');
  12. $this->_factory = new Swift_CharacterReaderFactory_SimpleCharacterReaderFactory();
  13. }
  14. public function testEncodingAndDecodingSamples()
  15. {
  16. $sampleFp = opendir($this->_samplesDir);
  17. while (false !== $encodingDir = readdir($sampleFp)) {
  18. if (substr($encodingDir, 0, 1) == '.') {
  19. continue;
  20. }
  21. $encoding = $encodingDir;
  22. $charStream = new Swift_CharacterStream_ArrayCharacterStream(
  23. $this->_factory, $encoding);
  24. $encoder = new Swift_Encoder_Rfc2231Encoder($charStream);
  25. $sampleDir = $this->_samplesDir . '/' . $encodingDir;
  26. if (is_dir($sampleDir)) {
  27. $fileFp = opendir($sampleDir);
  28. while (false !== $sampleFile = readdir($fileFp)) {
  29. if (substr($sampleFile, 0, 1) == '.') {
  30. continue;
  31. }
  32. $text = file_get_contents($sampleDir . '/' . $sampleFile);
  33. $encodedText = $encoder->encodeString($text);
  34. $this->assertEqual(
  35. urldecode(implode('', explode("\r\n", $encodedText))), $text,
  36. '%s: Encoded string should decode back to original string for sample ' .
  37. $sampleDir . '/' . $sampleFile
  38. );
  39. }
  40. closedir($fileFp);
  41. }
  42. }
  43. closedir($sampleFp);
  44. }
  45. }