--- /dev/null
+<?php
+
+namespace Unish;
+
+/**
+ * Unit tests for table formatting.
+ *
+ * @group base
+ */
+class tablesUnitTest extends UnitUnishTestCase {
+ function setUp() {
+ // Bootstrap to ensure the auto-loaded is running so that Console_Table is found.
+ drush_preflight();
+ $this->original_columns = drush_get_context('DRUSH_COLUMNS');
+
+ // Some table data we reuse between tests.
+ $this->numbers = array(
+ array('1', '12', '123'),
+ array('1234', '12345', '123456'),
+ array('1234567', '12345678', '123456789'),
+ );
+ $this->words = array(
+ array('Drush is a command line shell', 'scripting interface', 'for Drupal'),
+ array('A veritable', 'Swiss Army knife', 'designed to make life easier for us'),
+ );
+ }
+
+ function tearDown() {
+ drush_set_context('DRUSH_COLUMNS', $this->original_columns);
+ }
+
+ /**
+ * Tests drush_format_table() at various table widths with automatic column
+ * sizing.
+ *
+ * @see drush_format_table().
+ */
+ public function testFormatAutoWidths() {
+ // print "\n'" . str_replace("\n", "' . PHP_EOL . '", $output) . "'\n";
+ drush_set_context('DRUSH_COLUMNS', 16);
+ $output = drush_format_table($this->numbers);
+ $expected = ' 1 12 123 ' . PHP_EOL . ' 123 123 1234 ' . PHP_EOL . ' 4 45 56 ' . PHP_EOL . ' 123 123 1234 ' . PHP_EOL . ' 456 456 5678 ' . PHP_EOL . ' 7 78 9 ' . PHP_EOL;
+ $this->assertEquals($expected, $output);
+
+ drush_set_context('DRUSH_COLUMNS', 22);
+ $output = drush_format_table($this->numbers);
+ $expected = ' 1 12 123 ' . PHP_EOL . ' 1234 12345 123456 ' . PHP_EOL . ' 12345 12345 123456 ' . PHP_EOL . ' 67 678 789 ' . PHP_EOL;
+ $this->assertEquals($expected, $output);
+
+ drush_set_context('DRUSH_COLUMNS', 24);
+ $output = drush_format_table($this->numbers);
+ $expected = ' 1 12 123 ' . PHP_EOL . ' 1234 12345 123456 ' . PHP_EOL . ' 123456 123456 123456 ' . PHP_EOL . ' 7 78 789 ' . PHP_EOL;
+ $this->assertEquals($expected, $output);
+
+ drush_set_context('DRUSH_COLUMNS', 80);
+ $output = drush_format_table($this->numbers);
+ $expected = ' 1 12 123 ' . PHP_EOL . ' 1234 12345 123456 ' . PHP_EOL . ' 1234567 12345678 123456789 ' . PHP_EOL;
+ $this->assertEquals($expected, $output);
+ }
+
+ /**
+ * Tests drush_format_table() at various table widths.
+ *
+ * @see drush_format_table().
+ */
+ public function testFormatWidths() {
+ // print "\n'" . str_replace("\n", "' . PHP_EOL . '", $output) . "'\n";
+ drush_set_context('DRUSH_COLUMNS', 22);
+ $output = drush_format_table($this->numbers, FALSE, array(2));
+ $expected = ' 1 12 123 ' . PHP_EOL . ' 12 12345 123456 ' . PHP_EOL . ' 34 ' . PHP_EOL . ' 12 1234567 1234567 ' . PHP_EOL . ' 34 8 89 ' . PHP_EOL . ' 56 ' . PHP_EOL . ' 7 ' . PHP_EOL;
+ $this->assertEquals($expected, $output);
+
+ $output = drush_format_table($this->numbers, FALSE, array(10));
+ $expected = ' 1 12 123 ' . PHP_EOL . ' 1234 123 123 ' . PHP_EOL . ' 45 456 ' . PHP_EOL . ' 1234567 123 123 ' . PHP_EOL . ' 456 456 ' . PHP_EOL . ' 78 789 ' . PHP_EOL;
+ $this->assertEquals($expected, $output);
+
+ $output = drush_format_table($this->numbers, FALSE, array(2, 2));
+ $expected = ' 1 12 123 ' . PHP_EOL . ' 12 12 123456 ' . PHP_EOL . ' 34 34 ' . PHP_EOL . ' 5 ' . PHP_EOL . ' 12 12 123456789 ' . PHP_EOL . ' 34 34 ' . PHP_EOL . ' 56 56 ' . PHP_EOL . ' 7 78 ' . PHP_EOL;
+ $this->assertEquals($expected, $output);
+
+ $output = drush_format_table($this->numbers, FALSE, array(4, 4, 4));
+ $expected = ' 1 12 123 ' . PHP_EOL . ' 1234 1234 1234 ' . PHP_EOL . ' 5 56 ' . PHP_EOL . ' 1234 1234 1234 ' . PHP_EOL . ' 567 5678 5678 ' . PHP_EOL . ' 9 ' . PHP_EOL;
+ $this->assertEquals($expected, $output);
+ }
+
+ /**
+ * Tests drush_format_table() with a header.
+ *
+ * @see drush_format_table().
+ */
+ public function testFormatTableHeader() {
+ drush_set_context('DRUSH_COLUMNS', 16);
+ $rows = $this->numbers;
+ array_unshift($rows, array('A', 'B', 'C'));
+ $output = drush_format_table($rows, TRUE);
+ $expected = ' A B C ' . PHP_EOL . ' 1 12 123 ' . PHP_EOL . ' 123 123 1234 ' . PHP_EOL . ' 4 45 56 ' . PHP_EOL . ' 123 123 1234 ' . PHP_EOL . ' 456 456 5678 ' . PHP_EOL . ' 7 78 9 ' . PHP_EOL;
+ $this->assertEquals($expected, $output);
+ }
+
+ /**
+ * Tests drush_format_table() with word wrapping.
+ *
+ * @see drush_format_table().
+ */
+ public function testFormatTableWordWrap() {
+ drush_set_context('DRUSH_COLUMNS', 60);
+ $output = drush_format_table($this->words);
+ $expected = ' Drush is a command scripting for Drupal ' . PHP_EOL . ' line shell interface ' . PHP_EOL . ' A veritable Swiss Army knife designed to make ' . PHP_EOL . ' life easier for us ' . PHP_EOL;
+ $this->assertEquals($expected, $output);
+ }
+}