isSupportedForce = $isSupported; } public function isSupported() { return $this->isSupportedForce; } public function setAre256ColorsSupported($are256ColorsSupported) { $this->are256ColorsSupportedForce = $are256ColorsSupported; } public function are256ColorsSupported() { return $this->are256ColorsSupportedForce; } } class ConsoleColorTest extends \PHPUnit_Framework_TestCase { /** @var ConsoleColorWithForceSupport */ private $uut; protected function setUp() { $this->uut = new ConsoleColorWithForceSupport(); } public function testNone() { $output = $this->uut->apply('none', 'text'); $this->assertEquals("text", $output); } public function testBold() { $output = $this->uut->apply('bold', 'text'); $this->assertEquals("\033[1mtext\033[0m", $output); } public function testBoldColorsAreNotSupported() { $this->uut->setIsSupported(false); $output = $this->uut->apply('bold', 'text'); $this->assertEquals("text", $output); } public function testBoldColorsAreNotSupportedButAreForced() { $this->uut->setIsSupported(false); $this->uut->setForceStyle(true); $output = $this->uut->apply('bold', 'text'); $this->assertEquals("\033[1mtext\033[0m", $output); } public function testDark() { $output = $this->uut->apply('dark', 'text'); $this->assertEquals("\033[2mtext\033[0m", $output); } public function testBoldAndDark() { $output = $this->uut->apply(array('bold', 'dark'), 'text'); $this->assertEquals("\033[1;2mtext\033[0m", $output); } public function test256ColorForeground() { $output = $this->uut->apply('color_255', 'text'); $this->assertEquals("\033[38;5;255mtext\033[0m", $output); } public function test256ColorWithoutSupport() { $this->uut->setAre256ColorsSupported(false); $output = $this->uut->apply('color_255', 'text'); $this->assertEquals("text", $output); } public function test256ColorBackground() { $output = $this->uut->apply('bg_color_255', 'text'); $this->assertEquals("\033[48;5;255mtext\033[0m", $output); } public function test256ColorForegroundAndBackground() { $output = $this->uut->apply(array('color_200', 'bg_color_255'), 'text'); $this->assertEquals("\033[38;5;200;48;5;255mtext\033[0m", $output); } public function testSetOwnTheme() { $this->uut->setThemes(array('bold_dark' => array('bold', 'dark'))); $output = $this->uut->apply(array('bold_dark'), 'text'); $this->assertEquals("\033[1;2mtext\033[0m", $output); } public function testAddOwnTheme() { $this->uut->addTheme('bold_own', 'bold'); $output = $this->uut->apply(array('bold_own'), 'text'); $this->assertEquals("\033[1mtext\033[0m", $output); } public function testAddOwnThemeArray() { $this->uut->addTheme('bold_dark', array('bold', 'dark')); $output = $this->uut->apply(array('bold_dark'), 'text'); $this->assertEquals("\033[1;2mtext\033[0m", $output); } public function testOwnWithStyle() { $this->uut->addTheme('bold_dark', array('bold', 'dark')); $output = $this->uut->apply(array('bold_dark', 'italic'), 'text'); $this->assertEquals("\033[1;2;3mtext\033[0m", $output); } public function testHasAndRemoveTheme() { $this->assertFalse($this->uut->hasTheme('bold_dark')); $this->uut->addTheme('bold_dark', array('bold', 'dark')); $this->assertTrue($this->uut->hasTheme('bold_dark')); $this->uut->removeTheme('bold_dark'); $this->assertFalse($this->uut->hasTheme('bold_dark')); } public function testApplyInvalidArgument() { $this->setExpectedException('\InvalidArgumentException'); $this->uut->apply(new stdClass(), 'text'); } public function testApplyInvalidStyleName() { $this->setExpectedException('\JakubOnderka\PhpConsoleColor\InvalidStyleException'); $this->uut->apply('invalid', 'text'); } public function testApplyInvalid256Color() { $this->setExpectedException('\JakubOnderka\PhpConsoleColor\InvalidStyleException'); $this->uut->apply('color_2134', 'text'); } public function testThemeInvalidStyle() { $this->setExpectedException('\JakubOnderka\PhpConsoleColor\InvalidStyleException'); $this->uut->addTheme('invalid', array('invalid')); } public function testForceStyle() { $this->assertFalse($this->uut->isStyleForced()); $this->uut->setForceStyle(true); $this->assertTrue($this->uut->isStyleForced()); } public function testGetPossibleStyles() { $this->assertInternalType('array', $this->uut->getPossibleStyles()); $this->assertNotEmpty($this->uut->getPossibleStyles()); } }