Вход Регистрация
Файл: src/vendor/swiftmailer/swiftmailer/tests/unit/Swift/Mime/ContentEncoder/PlainContentEncoderTest.php
Строк: 228
<?php

class Swift_Mime_ContentEncoder_PlainContentEncoderTest extends SwiftMailerTestCase
{
    public function 
testNameCanBeSpecifiedInConstructor()
    {
        
$encoder = $this->_getEncoder('7bit');
        
$this->assertEquals('7bit', $encoder->getName());

        
$encoder = $this->_getEncoder('8bit');
        
$this->assertEquals('8bit', $encoder->getName());
    }

    public function 
testNoOctetsAreModifiedInString()
    {
        
$encoder = $this->_getEncoder('7bit');
        foreach (
range(0x00, 0xFF) as $octet) {
            
$byte = pack('C', $octet);
            
$this->assertIdenticalBinary($byte, $encoder->encodeString($byte));
        }
    }

    public function 
testNoOctetsAreModifiedInByteStream()
    {
        
$encoder = $this->_getEncoder('7bit');
        foreach (
range(0x00, 0xFF) as $octet) {
            
$byte = pack('C', $octet);

            
$os = $this->_createOutputByteStream();
            
$is = $this->_createInputByteStream();
            
$collection = new Swift_StreamCollector();

            
$is->shouldReceive('write')
               ->
zeroOrMoreTimes()
               ->
andReturnUsing($collection);
            
$os->shouldReceive('read')
               ->
once()
               ->
andReturn($byte);
            
$os->shouldReceive('read')
               ->
zeroOrMoreTimes()
               ->
andReturn(false);

            
$encoder->encodeByteStream($os, $is);
            
$this->assertIdenticalBinary($byte, $collection->content);
        }
    }

    public function 
testLineLengthCanBeSpecified()
    {
        
$encoder = $this->_getEncoder('7bit');

        
$chars = array();
        for (
$i = 0; $i < 50; $i++) {
            
$chars[] = 'a';
        }
        
$input = implode(' ', $chars); //99 chars long

        
$this->assertEquals(
            
'a a a a a a a a a a a a a a a a a a a a a a a a a '."rn".//50 *
            
'a a a a a a a a a a a a a a a a a a a a a a a a a',            //99
            
$encoder->encodeString($input, 0, 50),
            
'%s: Lines should be wrapped at 50 chars'
            
);
    }

    public function 
testLineLengthCanBeSpecifiedInByteStream()
    {
        
$encoder = $this->_getEncoder('7bit');

        
$os = $this->_createOutputByteStream();
        
$is = $this->_createInputByteStream();
        
$collection = new Swift_StreamCollector();

        
$is->shouldReceive('write')
           ->
zeroOrMoreTimes()
           ->
andReturnUsing($collection);

        for (
$i = 0; $i < 50; $i++) {
            
$os->shouldReceive('read')
               ->
once()
               ->
andReturn('a ');
        }

        
$os->shouldReceive('read')
           ->
zeroOrMoreTimes()
           ->
andReturn(false);

        
$encoder->encodeByteStream($os, $is, 0, 50);
        
$this->assertEquals(
            
str_repeat('a ', 25)."rn".str_repeat('a ', 25),
            
$collection->content
            
);
    }

    public function 
testencodeStringGeneratesCorrectCrlf()
    {
        
$encoder = $this->_getEncoder('7bit', true);
        
$this->assertEquals("arnb", $encoder->encodeString("arb"),
            
'%s: Line endings should be standardized'
            
);
        
$this->assertEquals("arnb", $encoder->encodeString("anb"),
            
'%s: Line endings should be standardized'
            
);
        
$this->assertEquals("arnrnb", $encoder->encodeString("anrb"),
            
'%s: Line endings should be standardized'
            
);
        
$this->assertEquals("arnrnb", $encoder->encodeString("arrb"),
            
'%s: Line endings should be standardized'
            
);
        
$this->assertEquals("arnrnb", $encoder->encodeString("annb"),
            
'%s: Line endings should be standardized'
            
);
    }

    public function 
crlfProvider()
    {
        return array(
            array(
"r", "arnb"),
            array(
"n", "arnb"),
            array(
"nr", "arnrnb"),
            array(
"nn", "arnrnb"),
            array(
"rr", "arnrnb"),
        );
    }

    
/**
     * @dataProvider crlfProvider
     */
    
public function testCanonicEncodeByteStreamGeneratesCorrectCrlf($test, $expected)
    {
        
$encoder = $this->_getEncoder('7bit', true);

        
$os = $this->_createOutputByteStream();
        
$is = $this->_createInputByteStream();
        
$collection = new Swift_StreamCollector();

        
$is->shouldReceive('write')
           ->
zeroOrMoreTimes()
           ->
andReturnUsing($collection);
        
$os->shouldReceive('read')
           ->
once()
           ->
andReturn('a');
        
$os->shouldReceive('read')
           ->
once()
           ->
andReturn($test);
        
$os->shouldReceive('read')
           ->
once()
           ->
andReturn('b');
        
$os->shouldReceive('read')
           ->
zeroOrMoreTimes()
           ->
andReturn(false);

        
$encoder->encodeByteStream($os, $is);
        
$this->assertEquals($expected, $collection->content);
    }

    
// -- Private helpers

    
private function _getEncoder($name, $canonical = false)
    {
        return new 
Swift_Mime_ContentEncoder_PlainContentEncoder($name, $canonical);
    }

    private function 
_createOutputByteStream($stub = false)
    {
        return 
$this->getMockery('Swift_OutputByteStream')->shouldIgnoreMissing();
    }

    private function 
_createInputByteStream($stub = false)
    {
        return 
$this->getMockery('Swift_InputByteStream')->shouldIgnoreMissing();
    }
}
Онлайн: 2
Реклама