mockApplication(); } public function testTable() { $table = new Table(); $expected = <<<'EXPECTED' ╔═══════════════╤═══════════════╤═══════════════╗ ║ test1 │ test2 │ test3 ║ ╟───────────────┼───────────────┼───────────────╢ ║ testcontent1 │ testcontent2 │ testcontent3 ║ ╟───────────────┼───────────────┼───────────────╢ ║ testcontent21 │ testcontent22 │ testcontent23 ║ ╚═══════════════╧═══════════════╧═══════════════╝ EXPECTED; $this->assertEqualsWithoutLE($expected, $table->setHeaders(['test1', 'test2', 'test3']) ->setRows([ ['testcontent1', 'testcontent2', 'testcontent3'], ['testcontent21', 'testcontent22', 'testcontent23'], ])->setScreenWidth(200)->run() ); } public function testTableWithFullwidthChars() { $table = new Table(); // test fullwidth chars // @see https://en.wikipedia.org/wiki/Halfwidth_and_fullwidth_forms $expected = <<<'EXPECTED' ╔═════════════════╤═════════════════╤═════════════════╗ ║ test1 │ test2 │ test3 ║ ╟─────────────────┼─────────────────┼─────────────────╢ ║ testcontent1 │ testcontent2 │ testcontent3 ║ ╟─────────────────┼─────────────────┼─────────────────╢ ║ testcontent21 │ testcontent22 │ testcontent23 ║ ╚═════════════════╧═════════════════╧═════════════════╝ EXPECTED; $this->assertEqualsWithoutLE($expected, $table->setHeaders(['test1', 'test2', 'test3']) ->setRows([ ['testcontent1', 'testcontent2', 'testcontent3'], ['testcontent21', 'testcontent22', 'testcontent23'], ])->setScreenWidth(200)->run() ); } public function testLists() { $table = new Table(); $expected = <<<'EXPECTED' ╔═══════════════╤═══════════════╤══════════════╗ ║ test1 │ test2 │ test3 ║ ╟───────────────┼───────────────┼──────────────╢ ║ testcontent1 │ testcontent2 │ testcontent3 ║ ╟───────────────┼───────────────┼──────────────╢ ║ testcontent21 │ testcontent22 │ • col1 ║ ║ │ │ • col2 ║ ╚═══════════════╧═══════════════╧══════════════╝ EXPECTED; $this->assertEqualsWithoutLE($expected, $table->setHeaders(['test1', 'test2', 'test3']) ->setRows([ ['testcontent1', 'testcontent2', 'testcontent3'], ['testcontent21', 'testcontent22', ['col1', 'col2']], ])->setScreenWidth(200)->run() ); } public function testListPrefix() { $table = new Table(); $expected = <<<'EXPECTED' ╔═══════════════╤═══════════════╤══════════════╗ ║ test1 │ test2 │ test3 ║ ╟───────────────┼───────────────┼──────────────╢ ║ testcontent1 │ testcontent2 │ testcontent3 ║ ╟───────────────┼───────────────┼──────────────╢ ║ testcontent21 │ testcontent22 │ * col1 ║ ║ │ │ * col2 ║ ╚═══════════════╧═══════════════╧══════════════╝ EXPECTED; $this->assertEqualsWithoutLE($expected, $table->setHeaders(['test1', 'test2', 'test3']) ->setRows([ ['testcontent1', 'testcontent2', 'testcontent3'], ['testcontent21', 'testcontent22', ['col1', 'col2']], ])->setScreenWidth(200)->setListPrefix('* ')->run() ); } public function testCustomChars() { $table = new Table(); $expected = <<<'EXPECTED' *++++++++++++++++*+++++++++++++++++*++++++++++++++++++* / test1 / test2 / test3 / *++++++++++++++++*+++++++++++++++++*++++++++++++++++++* / testcontent1 / testcontent2 / testcontent3 / *++++++++++++++++*+++++++++++++++++*++++++++++++++++++* / testcontent_21 / testcontent__22 / testcontent___23 / *++++++++++++++++*+++++++++++++++++*++++++++++++++++++* EXPECTED; $this->assertEqualsWithoutLE($expected, $table->setHeaders(['test1', 'test2', 'test3']) ->setRows([ ['testcontent1', 'testcontent2', 'testcontent3'], ['testcontent_21', 'testcontent__22', 'testcontent___23'], ])->setChars([ Table::CHAR_TOP => '+', Table::CHAR_TOP_MID => '*', Table::CHAR_TOP_LEFT => '*', Table::CHAR_TOP_RIGHT => '*', Table::CHAR_BOTTOM => '+', Table::CHAR_BOTTOM_MID => '*', Table::CHAR_BOTTOM_LEFT => '*', Table::CHAR_BOTTOM_RIGHT => '*', Table::CHAR_LEFT => '/', Table::CHAR_LEFT_MID => '*', Table::CHAR_MID => '+', Table::CHAR_MID_MID => '*', Table::CHAR_RIGHT => '/', Table::CHAR_RIGHT_MID => '*', Table::CHAR_MIDDLE => '/', ])->setScreenWidth(200)->run() ); } public function testTableWidgetSyntax() { $expected = <<<'EXPECTED' ╔═══════════════╤═══════════════╤═══════════════╗ ║ test1 │ test2 │ test3 ║ ╟───────────────┼───────────────┼───────────────╢ ║ testcontent1 │ testcontent2 │ testcontent3 ║ ╟───────────────┼───────────────┼───────────────╢ ║ testcontent21 │ testcontent22 │ testcontent23 ║ ╚═══════════════╧═══════════════╧═══════════════╝ EXPECTED; $this->assertEqualsWithoutLE( $expected, Table::widget([ 'headers' => ['test1', 'test2', 'test3'], 'rows' => [ ['testcontent1', 'testcontent2', 'testcontent3'], ['testcontent21', 'testcontent22', 'testcontent23'], ], 'screenWidth' => 200, ]) ); } public function testShortRow() { $table = new Table(); $expected = <<<'EXPECTED' ╔═══════════════╤═══════════════╤═══════════════╗ ║ test1 │ test2 │ test3 ║ ╟───────────────┼───────────────┼───────────────╢ ║ testcontent1 │ testcontent2 │ ║ ╟───────────────┼───────────────┼───────────────╢ ║ testcontent21 │ testcontent22 │ ║ ╟───────────────┼───────────────┼───────────────╢ ║ testcontent31 │ │ ║ ╟───────────────┼───────────────┼───────────────╢ ║ testcontent41 │ │ testcontent43 ║ ╟───────────────┼───────────────┼───────────────╢ ║ │ │ testcontent53 ║ ╚═══════════════╧═══════════════╧═══════════════╝ EXPECTED; $this->assertEqualsWithoutLE($expected, $table->setHeaders(['test1', 'test2', 'test3']) ->setRows([ ['testcontent1', 'testcontent2'], ['testcontent21', 'testcontent22', null], ['testcontent31'], ['testcontent41', null, 'testcontent43'], [null, null, 'testcontent53'], ])->setScreenWidth(200)->run() ); } public function testEmptyRow() { $table = new Table(); $expected = <<<'EXPECTED' ╔═══════╤═══════╤═══════╗ ║ test1 │ test2 │ test3 ║ ╟───────┼───────┼───────╢ ║ │ │ ║ ╟───────┼───────┼───────╢ ║ │ │ ║ ╚═══════╧═══════╧═══════╝ EXPECTED; $this->assertEqualsWithoutLE($expected, $table->setHeaders(['test1', 'test2', 'test3']) ->setRows([ [null, null, null], [], ])->setScreenWidth(200)->run() ); } }