diff options
Diffstat (limited to 'vendor/symfony/console/Tests/Helper/TableTest.php')
-rw-r--r-- | vendor/symfony/console/Tests/Helper/TableTest.php | 271 |
1 files changed, 224 insertions, 47 deletions
diff --git a/vendor/symfony/console/Tests/Helper/TableTest.php b/vendor/symfony/console/Tests/Helper/TableTest.php index 9ecb381a..d8a8ff00 100644 --- a/vendor/symfony/console/Tests/Helper/TableTest.php +++ b/vendor/symfony/console/Tests/Helper/TableTest.php @@ -11,13 +11,14 @@ namespace Symfony\Component\Console\Tests\Helper; +use PHPUnit\Framework\TestCase; use Symfony\Component\Console\Helper\Table; use Symfony\Component\Console\Helper\TableStyle; use Symfony\Component\Console\Helper\TableSeparator; use Symfony\Component\Console\Helper\TableCell; use Symfony\Component\Console\Output\StreamOutput; -class TableTest extends \PHPUnit_Framework_TestCase +class TableTest extends TestCase { protected $stream; @@ -33,11 +34,11 @@ class TableTest extends \PHPUnit_Framework_TestCase } /** - * @dataProvider testRenderProvider + * @dataProvider renderProvider */ - public function testRender($headers, $rows, $style, $expected) + public function testRender($headers, $rows, $style, $expected, $decorated = false) { - $table = new Table($output = $this->getOutputStream()); + $table = new Table($output = $this->getOutputStream($decorated)); $table ->setHeaders($headers) ->setRows($rows) @@ -49,11 +50,11 @@ class TableTest extends \PHPUnit_Framework_TestCase } /** - * @dataProvider testRenderProvider + * @dataProvider renderProvider */ - public function testRenderAddRows($headers, $rows, $style, $expected) + public function testRenderAddRows($headers, $rows, $style, $expected, $decorated = false) { - $table = new Table($output = $this->getOutputStream()); + $table = new Table($output = $this->getOutputStream($decorated)); $table ->setHeaders($headers) ->addRows($rows) @@ -65,11 +66,11 @@ class TableTest extends \PHPUnit_Framework_TestCase } /** - * @dataProvider testRenderProvider + * @dataProvider renderProvider */ - public function testRenderAddRowsOneByOne($headers, $rows, $style, $expected) + public function testRenderAddRowsOneByOne($headers, $rows, $style, $expected, $decorated = false) { - $table = new Table($output = $this->getOutputStream()); + $table = new Table($output = $this->getOutputStream($decorated)); $table ->setHeaders($headers) ->setStyle($style) @@ -82,7 +83,7 @@ class TableTest extends \PHPUnit_Framework_TestCase $this->assertEquals($expected, $this->getOutputContent($output)); } - public function testRenderProvider() + public function renderProvider() { $books = array( array('99921-58-10-7', 'Divine Comedy', 'Dante Alighieri'), @@ -96,7 +97,7 @@ class TableTest extends \PHPUnit_Framework_TestCase array('ISBN', 'Title', 'Author'), $books, 'default', -<<<TABLE +<<<'TABLE' +---------------+--------------------------+------------------+ | ISBN | Title | Author | +---------------+--------------------------+------------------+ @@ -112,7 +113,7 @@ TABLE array('ISBN', 'Title', 'Author'), $books, 'compact', -<<<TABLE +<<<'TABLE' ISBN Title Author 99921-58-10-7 Divine Comedy Dante Alighieri 9971-5-0210-0 A Tale of Two Cities Charles Dickens @@ -125,7 +126,7 @@ TABLE array('ISBN', 'Title', 'Author'), $books, 'borderless', -<<<TABLE +<<<'TABLE' =============== ========================== ================== ISBN Title Author =============== ========================== ================== @@ -146,7 +147,7 @@ TABLE array('80-902734-1-6', 'And Then There Were None', 'Agatha Christie'), ), 'default', -<<<TABLE +<<<'TABLE' +---------------+--------------------------+------------------+ | ISBN | Title | | +---------------+--------------------------+------------------+ @@ -167,7 +168,7 @@ TABLE array('80-902734-1-6', 'And Then There Were None', 'Agatha Christie'), ), 'default', -<<<TABLE +<<<'TABLE' +---------------+--------------------------+------------------+ | 99921-58-10-7 | Divine Comedy | Dante Alighieri | | 9971-5-0210-0 | | | @@ -186,7 +187,7 @@ TABLE array('960-425-059-0', 'The Lord of the Rings', "J. R. R.\nTolkien"), ), 'default', -<<<TABLE +<<<'TABLE' +---------------+----------------------------+-----------------+ | ISBN | Title | Author | +---------------+----------------------------+-----------------+ @@ -206,7 +207,7 @@ TABLE array('ISBN', 'Title'), array(), 'default', -<<<TABLE +<<<'TABLE' +------+-------+ | ISBN | Title | +------+-------+ @@ -226,7 +227,7 @@ TABLE array('9971-5-0210-0', 'A Tale of Two Cities', '<info>Charles Dickens</>'), ), 'default', -<<<TABLE +<<<'TABLE' +---------------+----------------------+-----------------+ | ISBN | Title | Author | +---------------+----------------------+-----------------+ @@ -243,7 +244,7 @@ TABLE array('9971-5-0210-0', 'A Tale of Two Cities', 'Charles Dickens'), ), 'default', -<<<TABLE +<<<'TABLE' +----------------------------------+----------------------+-----------------+ | ISBN | Title | Author | +----------------------------------+----------------------+-----------------+ @@ -275,7 +276,7 @@ TABLE ), ), 'default', -<<<TABLE +<<<'TABLE' +-------------------------------+-------------------------------+-----------------------------+ | ISBN | Title | Author | +-------------------------------+-------------------------------+-----------------------------+ @@ -298,29 +299,29 @@ TABLE array( array( new TableCell('9971-5-0210-0', array('rowspan' => 3)), - 'Divine Comedy', + new TableCell('Divine Comedy', array('rowspan' => 2)), 'Dante Alighieri', ), - array('A Tale of Two Cities', 'Charles Dickens'), + array(), array("The Lord of \nthe Rings", "J. R. \nR. Tolkien"), new TableSeparator(), array('80-902734-1-6', new TableCell("And Then \nThere \nWere None", array('rowspan' => 3)), 'Agatha Christie'), array('80-902734-1-7', 'Test'), ), 'default', -<<<TABLE -+---------------+----------------------+-----------------+ -| ISBN | Title | Author | -+---------------+----------------------+-----------------+ -| 9971-5-0210-0 | Divine Comedy | Dante Alighieri | -| | A Tale of Two Cities | Charles Dickens | -| | The Lord of | J. R. | -| | the Rings | R. Tolkien | -+---------------+----------------------+-----------------+ -| 80-902734-1-6 | And Then | Agatha Christie | -| 80-902734-1-7 | There | Test | -| | Were None | | -+---------------+----------------------+-----------------+ +<<<'TABLE' ++---------------+---------------+-----------------+ +| ISBN | Title | Author | ++---------------+---------------+-----------------+ +| 9971-5-0210-0 | Divine Comedy | Dante Alighieri | +| | | | +| | The Lord of | J. R. | +| | the Rings | R. Tolkien | ++---------------+---------------+-----------------+ +| 80-902734-1-6 | And Then | Agatha Christie | +| 80-902734-1-7 | There | Test | +| | Were None | | ++---------------+---------------+-----------------+ TABLE ), @@ -341,7 +342,7 @@ TABLE array('J. R. R'), ), 'default', -<<<TABLE +<<<'TABLE' +------------------+---------+-----------------+ | ISBN | Title | Author | +------------------+---------+-----------------+ @@ -376,7 +377,7 @@ TABLE ), ), 'default', -<<<TABLE +<<<'TABLE' +-----------------+-------+-----------------+ | ISBN | Title | Author | +-----------------+-------+-----------------+ @@ -413,7 +414,7 @@ TABLE array('Charles Dickens'), ), 'default', -<<<TABLE +<<<'TABLE' +-----------------+-------+-----------------+ | ISBN | Title | Author | +-----------------+-------+-----------------+ @@ -440,7 +441,7 @@ TABLE array('Charles Dickens'), ), 'default', -<<<TABLE +<<<'TABLE' +---------------+-----------------+ | ISBN | Author | +---------------+-----------------+ @@ -458,7 +459,7 @@ TABLE ), array(), 'default', -<<<TABLE +<<<'TABLE' +------+-------+--------+ | Main title | +------+-------+--------+ @@ -478,13 +479,71 @@ TABLE ), ), 'default', -<<<TABLE +<<<'TABLE' +---+--+--+---+--+---+--+---+--+ | 1 | 2 | 3 | 4 | +---+--+--+---+--+---+--+---+--+ TABLE ), + 'Coslpan and table cells with comment style' => array( + array( + new TableCell('<comment>Long Title</comment>', array('colspan' => 3)), + ), + array( + array( + new TableCell('9971-5-0210-0', array('colspan' => 3)), + ), + new TableSeparator(), + array( + 'Dante Alighieri', + 'J. R. R. Tolkien', + 'J. R. R', + ), + ), + 'default', + <<<TABLE ++-----------------+------------------+---------+ +|\033[32m \033[39m\033[33mLong Title\033[39m\033[32m \033[39m| ++-----------------+------------------+---------+ +| 9971-5-0210-0 | ++-----------------+------------------+---------+ +| Dante Alighieri | J. R. R. Tolkien | J. R. R | ++-----------------+------------------+---------+ + +TABLE + , + true, + ), + 'Row with formatted cells containing a newline' => array( + array(), + array( + array( + new TableCell('<error>Dont break'."\n".'here</error>', array('colspan' => 2)), + ), + new TableSeparator(), + array( + 'foo', + new TableCell('<error>Dont break'."\n".'here</error>', array('rowspan' => 2)), + ), + array( + 'bar', + ), + ), + 'default', + <<<'TABLE' ++-------+------------+ +[39;49m| [39;49m[37;41mDont break[39;49m[39;49m |[39;49m +[39;49m| [39;49m[37;41mhere[39;49m | ++-------+------------+ +[39;49m| foo | [39;49m[37;41mDont break[39;49m[39;49m |[39;49m +[39;49m| bar | [39;49m[37;41mhere[39;49m | ++-------+------------+ + +TABLE + , + true, + ), ); } @@ -499,7 +558,7 @@ TABLE $table->render(); $expected = -<<<TABLE +<<<'TABLE' +------+ | ■■ | +------+ @@ -511,6 +570,42 @@ TABLE; $this->assertEquals($expected, $this->getOutputContent($output)); } + public function testTableCellWithNumericIntValue() + { + $table = new Table($output = $this->getOutputStream()); + + $table->setRows(array(array(new TableCell(12345)))); + $table->render(); + + $expected = +<<<'TABLE' ++-------+ +| 12345 | ++-------+ + +TABLE; + + $this->assertEquals($expected, $this->getOutputContent($output)); + } + + public function testTableCellWithNumericFloatValue() + { + $table = new Table($output = $this->getOutputStream()); + + $table->setRows(array(array(new TableCell(12345.01)))); + $table->render(); + + $expected = +<<<'TABLE' ++----------+ +| 12345.01 | ++----------+ + +TABLE; + + $this->assertEquals($expected, $this->getOutputContent($output)); + } + public function testStyle() { $style = new TableStyle(); @@ -529,7 +624,7 @@ TABLE; $table->render(); $expected = -<<<TABLE +<<<'TABLE' ....... . Foo . ....... @@ -556,7 +651,7 @@ TABLE; $table->render(); $expected = -<<<TABLE +<<<'TABLE' +------+ | Foo | +------+ @@ -631,9 +726,91 @@ TABLE; $this->assertEquals($expected, $this->getOutputContent($output)); } - protected function getOutputStream() + public function testColumnWith() + { + $table = new Table($output = $this->getOutputStream()); + $table + ->setHeaders(array('ISBN', 'Title', 'Author', 'Price')) + ->setRows(array( + array('99921-58-10-7', 'Divine Comedy', 'Dante Alighieri', '9.95'), + array('9971-5-0210-0', 'A Tale of Two Cities', 'Charles Dickens', '139.25'), + )) + ->setColumnWidth(0, 15) + ->setColumnWidth(3, 10); + + $style = new TableStyle(); + $style->setPadType(STR_PAD_LEFT); + $table->setColumnStyle(3, $style); + + $table->render(); + + $expected = + <<<TABLE ++-----------------+----------------------+-----------------+------------+ +| ISBN | Title | Author | Price | ++-----------------+----------------------+-----------------+------------+ +| 99921-58-10-7 | Divine Comedy | Dante Alighieri | 9.95 | +| 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens | 139.25 | ++-----------------+----------------------+-----------------+------------+ + +TABLE; + + $this->assertEquals($expected, $this->getOutputContent($output)); + } + + public function testColumnWiths() + { + $table = new Table($output = $this->getOutputStream()); + $table + ->setHeaders(array('ISBN', 'Title', 'Author', 'Price')) + ->setRows(array( + array('99921-58-10-7', 'Divine Comedy', 'Dante Alighieri', '9.95'), + array('9971-5-0210-0', 'A Tale of Two Cities', 'Charles Dickens', '139.25'), + )) + ->setColumnWidths(array(15, 0, -1, 10)); + + $style = new TableStyle(); + $style->setPadType(STR_PAD_LEFT); + $table->setColumnStyle(3, $style); + + $table->render(); + + $expected = + <<<TABLE ++-----------------+----------------------+-----------------+------------+ +| ISBN | Title | Author | Price | ++-----------------+----------------------+-----------------+------------+ +| 99921-58-10-7 | Divine Comedy | Dante Alighieri | 9.95 | +| 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens | 139.25 | ++-----------------+----------------------+-----------------+------------+ + +TABLE; + + $this->assertEquals($expected, $this->getOutputContent($output)); + } + + /** + * @expectedException \Symfony\Component\Console\Exception\InvalidArgumentException + * @expectedExceptionMessage Style "absent" is not defined. + */ + public function testIsNotDefinedStyleException() + { + $table = new Table($this->getOutputStream()); + $table->setStyle('absent'); + } + + /** + * @expectedException \Symfony\Component\Console\Exception\InvalidArgumentException + * @expectedExceptionMessage Style "absent" is not defined. + */ + public function testGetStyleDefinition() + { + Table::getStyleDefinition('absent'); + } + + protected function getOutputStream($decorated = false) { - return new StreamOutput($this->stream, StreamOutput::VERBOSITY_NORMAL, false); + return new StreamOutput($this->stream, StreamOutput::VERBOSITY_NORMAL, $decorated); } protected function getOutputContent(StreamOutput $output) |