forked from GNUsocial/gnu-social
275 lines
5.7 KiB
PHP
275 lines
5.7 KiB
PHP
<?php
|
|
namespace JakubOnderka\PhpConsoleHighlighter;
|
|
|
|
class HighlighterTest extends \PHPUnit_Framework_TestCase
|
|
{
|
|
/** @var Highlighter */
|
|
private $uut;
|
|
|
|
protected function getConsoleColorMock()
|
|
{
|
|
$mock = method_exists($this, 'createMock')
|
|
? $this->createMock('\JakubOnderka\PhpConsoleColor\ConsoleColor')
|
|
: $this->getMock('\JakubOnderka\PhpConsoleColor\ConsoleColor');
|
|
|
|
$mock->expects($this->any())
|
|
->method('apply')
|
|
->will($this->returnCallback(function ($style, $text) {
|
|
return "<$style>$text</$style>";
|
|
}));
|
|
|
|
$mock->expects($this->any())
|
|
->method('hasTheme')
|
|
->will($this->returnValue(true));
|
|
|
|
return $mock;
|
|
}
|
|
|
|
protected function setUp()
|
|
{
|
|
$this->uut = new Highlighter($this->getConsoleColorMock());
|
|
}
|
|
|
|
protected function compare($original, $expected)
|
|
{
|
|
$output = $this->uut->getWholeFile($original);
|
|
$this->assertEquals($expected, $output);
|
|
}
|
|
|
|
public function testVariable()
|
|
{
|
|
$this->compare(
|
|
<<<EOL
|
|
<?php
|
|
echo \$a;
|
|
EOL
|
|
,
|
|
<<<EOL
|
|
<token_default><?php</token_default>
|
|
<token_keyword>echo </token_keyword><token_default>\$a</token_default><token_keyword>;</token_keyword>
|
|
EOL
|
|
);
|
|
}
|
|
|
|
public function testInteger()
|
|
{
|
|
$this->compare(
|
|
<<<EOL
|
|
<?php
|
|
echo 43;
|
|
EOL
|
|
,
|
|
<<<EOL
|
|
<token_default><?php</token_default>
|
|
<token_keyword>echo </token_keyword><token_default>43</token_default><token_keyword>;</token_keyword>
|
|
EOL
|
|
);
|
|
}
|
|
|
|
public function testFloat()
|
|
{
|
|
$this->compare(
|
|
<<<EOL
|
|
<?php
|
|
echo 43.3;
|
|
EOL
|
|
,
|
|
<<<EOL
|
|
<token_default><?php</token_default>
|
|
<token_keyword>echo </token_keyword><token_default>43.3</token_default><token_keyword>;</token_keyword>
|
|
EOL
|
|
);
|
|
}
|
|
|
|
public function testHex()
|
|
{
|
|
$this->compare(
|
|
<<<EOL
|
|
<?php
|
|
echo 0x43;
|
|
EOL
|
|
,
|
|
<<<EOL
|
|
<token_default><?php</token_default>
|
|
<token_keyword>echo </token_keyword><token_default>0x43</token_default><token_keyword>;</token_keyword>
|
|
EOL
|
|
);
|
|
}
|
|
|
|
public function testBasicFunction()
|
|
{
|
|
$this->compare(
|
|
<<<EOL
|
|
<?php
|
|
function plus(\$a, \$b) {
|
|
return \$a + \$b;
|
|
}
|
|
EOL
|
|
,
|
|
<<<EOL
|
|
<token_default><?php</token_default>
|
|
<token_keyword>function </token_keyword><token_default>plus</token_default><token_keyword>(</token_keyword><token_default>\$a</token_default><token_keyword>, </token_keyword><token_default>\$b</token_default><token_keyword>) {</token_keyword>
|
|
<token_keyword> return </token_keyword><token_default>\$a </token_default><token_keyword>+ </token_keyword><token_default>\$b</token_default><token_keyword>;</token_keyword>
|
|
<token_keyword>}</token_keyword>
|
|
EOL
|
|
);
|
|
}
|
|
|
|
public function testStringNormal()
|
|
{
|
|
$this->compare(
|
|
<<<EOL
|
|
<?php
|
|
echo 'Ahoj světe';
|
|
EOL
|
|
,
|
|
<<<EOL
|
|
<token_default><?php</token_default>
|
|
<token_keyword>echo </token_keyword><token_string>'Ahoj světe'</token_string><token_keyword>;</token_keyword>
|
|
EOL
|
|
);
|
|
}
|
|
|
|
public function testStringDouble()
|
|
{
|
|
$this->compare(
|
|
<<<EOL
|
|
<?php
|
|
echo "Ahoj světe";
|
|
EOL
|
|
,
|
|
<<<EOL
|
|
<token_default><?php</token_default>
|
|
<token_keyword>echo </token_keyword><token_string>"Ahoj světe"</token_string><token_keyword>;</token_keyword>
|
|
EOL
|
|
);
|
|
}
|
|
|
|
public function testInstanceof()
|
|
{
|
|
$this->compare(
|
|
<<<EOL
|
|
<?php
|
|
\$a instanceof stdClass;
|
|
EOL
|
|
,
|
|
<<<EOL
|
|
<token_default><?php</token_default>
|
|
<token_default>\$a </token_default><token_keyword>instanceof </token_keyword><token_default>stdClass</token_default><token_keyword>;</token_keyword>
|
|
EOL
|
|
);
|
|
}
|
|
|
|
/*
|
|
* Constants
|
|
*/
|
|
public function testConstant()
|
|
{
|
|
$constants = array(
|
|
'__FILE__',
|
|
'__LINE__',
|
|
'__CLASS__',
|
|
'__FUNCTION__',
|
|
'__METHOD__',
|
|
'__TRAIT__',
|
|
'__DIR__',
|
|
'__NAMESPACE__'
|
|
);
|
|
|
|
foreach ($constants as $constant) {
|
|
$this->compare(
|
|
<<<EOL
|
|
<?php
|
|
$constant;
|
|
EOL
|
|
,
|
|
<<<EOL
|
|
<token_default><?php</token_default>
|
|
<token_default>$constant</token_default><token_keyword>;</token_keyword>
|
|
EOL
|
|
);
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Comments
|
|
*/
|
|
public function testComment()
|
|
{
|
|
$this->compare(
|
|
<<<EOL
|
|
<?php
|
|
/* Ahoj */
|
|
EOL
|
|
,
|
|
<<<EOL
|
|
<token_default><?php</token_default>
|
|
<token_comment>/* Ahoj */</token_comment>
|
|
EOL
|
|
);
|
|
}
|
|
|
|
public function testDocComment()
|
|
{
|
|
$this->compare(
|
|
<<<EOL
|
|
<?php
|
|
/** Ahoj */
|
|
EOL
|
|
,
|
|
<<<EOL
|
|
<token_default><?php</token_default>
|
|
<token_comment>/** Ahoj */</token_comment>
|
|
EOL
|
|
);
|
|
}
|
|
|
|
public function testInlineComment()
|
|
{
|
|
$this->compare(
|
|
<<<EOL
|
|
<?php
|
|
// Ahoj
|
|
EOL
|
|
,
|
|
<<<EOL
|
|
<token_default><?php</token_default>
|
|
<token_comment>// Ahoj</token_comment>
|
|
EOL
|
|
);
|
|
}
|
|
|
|
public function testHashComment()
|
|
{
|
|
$this->compare(
|
|
<<<EOL
|
|
<?php
|
|
# Ahoj
|
|
EOL
|
|
,
|
|
<<<EOL
|
|
<token_default><?php</token_default>
|
|
<token_comment># Ahoj</token_comment>
|
|
EOL
|
|
);
|
|
}
|
|
|
|
public function testEmpty()
|
|
{
|
|
$this->compare(
|
|
''
|
|
,
|
|
''
|
|
);
|
|
}
|
|
|
|
public function testWhitespace()
|
|
{
|
|
$this->compare(
|
|
' '
|
|
,
|
|
'<token_html> </token_html>'
|
|
);
|
|
}
|
|
}
|