Вход Регистрация
Файл: 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(0x000xFF) as $octet) {
            
$byte pack('C'$octet);
            
$this->assertIdenticalBinary($byte$encoder->encodeString($byte));
        }
    }

    public function 
testNoOctetsAreModifiedInByteStream()
    {
        
$encoder $this->_getEncoder('7bit');
        foreach (
range(0x000xFF) 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($input050),
            
'%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$is050);
        
$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
Реклама