Вход Регистрация
Файл: gapps/vendor/symfony/console/Tests/Helper/ProgressIndicatorTest.php
Строк: 203
<?php

namespace SymfonyComponentConsoleTestsHelper;

use 
SymfonyComponentConsoleHelperProgressIndicator;
use 
SymfonyComponentConsoleOutputStreamOutput;

/**
 * @group time-sensitive
 */
class ProgressIndicatorTest extends PHPUnit_Framework_TestCase
{
    public function 
testDefaultIndicator()
    {
        
$bar = new ProgressIndicator($output $this->getOutputStream());
        
$bar->start('Starting...');
        
usleep(101000);
        
$bar->advance();
        
usleep(101000);
        
$bar->advance();
        
usleep(101000);
        
$bar->advance();
        
usleep(101000);
        
$bar->advance();
        
usleep(101000);
        
$bar->advance();
        
usleep(101000);
        
$bar->setMessage('Advancing...');
        
$bar->advance();
        
$bar->finish('Done...');
        
$bar->start('Starting Again...');
        
usleep(101000);
        
$bar->advance();
        
$bar->finish('Done Again...');

        
rewind($output->getStream());

        
$this->assertEquals(
            
$this->generateOutput(' - Starting...').
            
$this->generateOutput(' \ Starting...').
            
$this->generateOutput(' | Starting...').
            
$this->generateOutput(' / Starting...').
            
$this->generateOutput(' - Starting...').
            
$this->generateOutput(' \ Starting...').
            
$this->generateOutput(' \ Advancing...').
            
$this->generateOutput(' | Advancing...').
            
$this->generateOutput(' | Done...     ').
            
PHP_EOL.
            
$this->generateOutput(' - Starting Again...').
            
$this->generateOutput(' \ Starting Again...').
            
$this->generateOutput(' \ Done Again...    ').
            
PHP_EOL,
            
stream_get_contents($output->getStream())
        );
    }

    public function 
testNonDecoratedOutput()
    {
        
$bar = new ProgressIndicator($output $this->getOutputStream(false));

        
$bar->start('Starting...');
        
$bar->advance();
        
$bar->advance();
        
$bar->setMessage('Midway...');
        
$bar->advance();
        
$bar->advance();
        
$bar->finish('Done...');

        
rewind($output->getStream());

        
$this->assertEquals(
            
' Starting...'.PHP_EOL.
            
' Midway...  '.PHP_EOL.
            
' Done...    '.PHP_EOL.PHP_EOL,
            
stream_get_contents($output->getStream())
        );
    }

    public function 
testCustomIndicatorValues()
    {
        
$bar = new ProgressIndicator($output $this->getOutputStream(), null100, array('a''b''c'));

        
$bar->start('Starting...');
        
usleep(101000);
        
$bar->advance();
        
usleep(101000);
        
$bar->advance();
        
usleep(101000);
        
$bar->advance();

        
rewind($output->getStream());

        
$this->assertEquals(
            
$this->generateOutput(' a Starting...').
            
$this->generateOutput(' b Starting...').
            
$this->generateOutput(' c Starting...').
            
$this->generateOutput(' a Starting...'),
            
stream_get_contents($output->getStream())
        );
    }

    
/**
     * @expectedException InvalidArgumentException
     * @expectedExceptionMessage Must have at least 2 indicator value characters.
     */
    
public function testCannotSetInvalidIndicatorCharacters()
    {
        
$bar = new ProgressIndicator($this->getOutputStream(), null100, array('1'));
    }

    
/**
     * @expectedException LogicException
     * @expectedExceptionMessage Progress indicator already started.
     */
    
public function testCannotStartAlreadyStartedIndicator()
    {
        
$bar = new ProgressIndicator($this->getOutputStream());
        
$bar->start('Starting...');
        
$bar->start('Starting Again.');
    }

    
/**
     * @expectedException LogicException
     * @expectedExceptionMessage Progress indicator has not yet been started.
     */
    
public function testCannotAdvanceUnstartedIndicator()
    {
        
$bar = new ProgressIndicator($this->getOutputStream());
        
$bar->advance();
    }

    
/**
     * @expectedException LogicException
     * @expectedExceptionMessage Progress indicator has not yet been started.
     */
    
public function testCannotFinishUnstartedIndicator()
    {
        
$bar = new ProgressIndicator($this->getOutputStream());
        
$bar->finish('Finished');
    }

    
/**
     * @dataProvider provideFormat
     */
    
public function testFormats($format)
    {
        
$bar = new ProgressIndicator($output $this->getOutputStream(), $format);
        
$bar->start('Starting...');
        
$bar->advance();

        
rewind($output->getStream());

        
$this->assertNotEmpty(stream_get_contents($output->getStream()));
    }

    
/**
     * Provides each defined format.
     *
     * @return array
     */
    
public function provideFormat()
    {
        return array(
            array(
'normal'),
            array(
'verbose'),
            array(
'very_verbose'),
            array(
'debug'),
        );
    }

    protected function 
getOutputStream($decorated true$verbosity StreamOutput::VERBOSITY_NORMAL)
    {
        return new 
StreamOutput(fopen('php://memory''r+'false), $verbosity$decorated);
    }

    protected function 
generateOutput($expected)
    {
        
$count substr_count($expected"n");

        return 
"x0D".($count sprintf("33[%dA"$count) : '').$expected;
    }
}
Онлайн: 1
Реклама