4 * This file is part of the Symfony package.
6 * (c) Fabien Potencier <fabien@symfony.com>
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
13 namespace Symfony\Component\Console\Tests\Formatter;
15 use Symfony\Component\Console\Formatter\OutputFormatter;
16 use Symfony\Component\Console\Formatter\OutputFormatterStyle;
18 class FormatterStyleTest extends \PHPUnit_Framework_TestCase
20 public function testEmptyTag()
22 $formatter = new OutputFormatter(true);
23 $this->assertEquals("foo<>bar", $formatter->format('foo<>bar'));
26 public function testLGCharEscaping()
28 $formatter = new OutputFormatter(true);
30 $this->assertEquals("foo<bar", $formatter->format('foo\\<bar'));
31 $this->assertEquals("<info>some info</info>", $formatter->format('\\<info>some info\\</info>'));
32 $this->assertEquals("\\<info>some info\\</info>", OutputFormatter::escape('<info>some info</info>'));
35 "\033[33mSymfony\\Component\\Console does work very well!\033[0m",
36 $formatter->format('<comment>Symfony\Component\Console does work very well!</comment>')
40 public function testBundledStyles()
42 $formatter = new OutputFormatter(true);
44 $this->assertTrue($formatter->hasStyle('error'));
45 $this->assertTrue($formatter->hasStyle('info'));
46 $this->assertTrue($formatter->hasStyle('comment'));
47 $this->assertTrue($formatter->hasStyle('question'));
50 "\033[37;41msome error\033[0m",
51 $formatter->format('<error>some error</error>')
54 "\033[32msome info\033[0m",
55 $formatter->format('<info>some info</info>')
58 "\033[33msome comment\033[0m",
59 $formatter->format('<comment>some comment</comment>')
62 "\033[30;46msome question\033[0m",
63 $formatter->format('<question>some question</question>')
67 public function testNestedStyles()
69 $formatter = new OutputFormatter(true);
72 "\033[37;41msome \033[0m\033[32msome info\033[0m\033[37;41m error\033[0m",
73 $formatter->format('<error>some <info>some info</info> error</error>')
77 public function testDeepNestedStyles()
79 $formatter = new OutputFormatter(true);
82 "\033[37;41merror\033[0m\033[32minfo\033[0m\033[33mcomment\033[0m\033[37;41merror\033[0m",
83 $formatter->format('<error>error<info>info<comment>comment</info>error</error>')
87 public function testNewStyle()
89 $formatter = new OutputFormatter(true);
91 $style = new OutputFormatterStyle('blue', 'white');
92 $formatter->setStyle('test', $style);
94 $this->assertEquals($style, $formatter->getStyle('test'));
95 $this->assertNotEquals($style, $formatter->getStyle('info'));
97 $this->assertEquals("\033[34;47msome custom msg\033[0m", $formatter->format('<test>some custom msg</test>'));
100 public function testRedefineStyle()
102 $formatter = new OutputFormatter(true);
104 $style = new OutputFormatterStyle('blue', 'white');
105 $formatter->setStyle('info', $style);
107 $this->assertEquals("\033[34;47msome custom msg\033[0m", $formatter->format('<info>some custom msg</info>'));
110 public function testInlineStyle()
112 $formatter = new OutputFormatter(true);
114 $this->assertEquals("\033[34;41msome text\033[0m", $formatter->format('<fg=blue;bg=red>some text</>'));
115 $this->assertEquals("\033[34;41msome text\033[0m", $formatter->format('<fg=blue;bg=red>some text</fg=blue;bg=red>'));
118 public function testNonStyleTag()
120 $formatter = new OutputFormatter(true);
121 $this->assertEquals("\033[32msome \033[0m\033[32m<tag> styled\033[0m", $formatter->format('<info>some <tag> styled</info>'));
124 public function testNotDecoratedFormatter()
126 $formatter = new OutputFormatter(false);
128 $this->assertTrue($formatter->hasStyle('error'));
129 $this->assertTrue($formatter->hasStyle('info'));
130 $this->assertTrue($formatter->hasStyle('comment'));
131 $this->assertTrue($formatter->hasStyle('question'));
134 "some error", $formatter->format('<error>some error</error>')
137 "some info", $formatter->format('<info>some info</info>')
140 "some comment", $formatter->format('<comment>some comment</comment>')
143 "some question", $formatter->format('<question>some question</question>')
146 $formatter->setDecorated(true);
149 "\033[37;41msome error\033[0m", $formatter->format('<error>some error</error>')
152 "\033[32msome info\033[0m", $formatter->format('<info>some info</info>')
155 "\033[33msome comment\033[0m", $formatter->format('<comment>some comment</comment>')
158 "\033[30;46msome question\033[0m", $formatter->format('<question>some question</question>')
162 public function testContentWithLineBreaks()
164 $formatter = new OutputFormatter(true);
166 $this->assertEquals(<<<EOF
170 , $formatter->format(<<<EOF
176 $this->assertEquals(<<<EOF
180 , $formatter->format(<<<EOF
186 $this->assertEquals(<<<EOF
191 , $formatter->format(<<<EOF
198 $this->assertEquals(<<<EOF
204 , $formatter->format(<<<EOF