HigligterTest.php 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. <?php
  2. namespace JakubOnderka\PhpConsoleHighlighter;
  3. class HighlighterTest extends \PHPUnit_Framework_TestCase
  4. {
  5. /** @var Highlighter */
  6. private $uut;
  7. protected function getConsoleColorMock()
  8. {
  9. $mock = $this->getMock('\JakubOnderka\PhpConsoleColor\ConsoleColor');
  10. $mock->expects($this->any())
  11. ->method('apply')
  12. ->will($this->returnCallback(function ($style, $text) {
  13. return "<$style>$text</$style>";
  14. }));
  15. $mock->expects($this->any())
  16. ->method('hasTheme')
  17. ->will($this->returnValue(true));
  18. return $mock;
  19. }
  20. protected function setUp()
  21. {
  22. $this->uut = new Highlighter($this->getConsoleColorMock());
  23. }
  24. protected function compare($original, $expected)
  25. {
  26. $output = $this->uut->getWholeFile($original);
  27. $this->assertEquals($expected, $output);
  28. }
  29. public function testVariable()
  30. {
  31. $this->compare(
  32. <<<EOL
  33. <?php
  34. echo \$a;
  35. EOL
  36. ,
  37. <<<EOL
  38. <token_default><?php</token_default>
  39. <token_keyword>echo </token_keyword><token_default>\$a</token_default><token_keyword>;</token_keyword>
  40. EOL
  41. );
  42. }
  43. public function testInteger()
  44. {
  45. $this->compare(
  46. <<<EOL
  47. <?php
  48. echo 43;
  49. EOL
  50. ,
  51. <<<EOL
  52. <token_default><?php</token_default>
  53. <token_keyword>echo </token_keyword><token_default>43</token_default><token_keyword>;</token_keyword>
  54. EOL
  55. );
  56. }
  57. public function testFloat()
  58. {
  59. $this->compare(
  60. <<<EOL
  61. <?php
  62. echo 43.3;
  63. EOL
  64. ,
  65. <<<EOL
  66. <token_default><?php</token_default>
  67. <token_keyword>echo </token_keyword><token_default>43.3</token_default><token_keyword>;</token_keyword>
  68. EOL
  69. );
  70. }
  71. public function testHex()
  72. {
  73. $this->compare(
  74. <<<EOL
  75. <?php
  76. echo 0x43;
  77. EOL
  78. ,
  79. <<<EOL
  80. <token_default><?php</token_default>
  81. <token_keyword>echo </token_keyword><token_default>0x43</token_default><token_keyword>;</token_keyword>
  82. EOL
  83. );
  84. }
  85. public function testBasicFunction()
  86. {
  87. $this->compare(
  88. <<<EOL
  89. <?php
  90. function plus(\$a, \$b) {
  91. return \$a + \$b;
  92. }
  93. EOL
  94. ,
  95. <<<EOL
  96. <token_default><?php</token_default>
  97. <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>
  98. <token_keyword> return </token_keyword><token_default>\$a </token_default><token_keyword>+ </token_keyword><token_default>\$b</token_default><token_keyword>;</token_keyword>
  99. <token_keyword>}</token_keyword>
  100. EOL
  101. );
  102. }
  103. public function testStringNormal()
  104. {
  105. $this->compare(
  106. <<<EOL
  107. <?php
  108. echo 'Ahoj světe';
  109. EOL
  110. ,
  111. <<<EOL
  112. <token_default><?php</token_default>
  113. <token_keyword>echo </token_keyword><token_string>'Ahoj světe'</token_string><token_keyword>;</token_keyword>
  114. EOL
  115. );
  116. }
  117. public function testStringDouble()
  118. {
  119. $this->compare(
  120. <<<EOL
  121. <?php
  122. echo "Ahoj světe";
  123. EOL
  124. ,
  125. <<<EOL
  126. <token_default><?php</token_default>
  127. <token_keyword>echo </token_keyword><token_string>"Ahoj světe"</token_string><token_keyword>;</token_keyword>
  128. EOL
  129. );
  130. }
  131. public function testInstanceof()
  132. {
  133. $this->compare(
  134. <<<EOL
  135. <?php
  136. \$a instanceof stdClass;
  137. EOL
  138. ,
  139. <<<EOL
  140. <token_default><?php</token_default>
  141. <token_default>\$a </token_default><token_keyword>instanceof </token_keyword><token_default>stdClass</token_default><token_keyword>;</token_keyword>
  142. EOL
  143. );
  144. }
  145. /*
  146. * Constants
  147. */
  148. public function testConstant()
  149. {
  150. $constants = array(
  151. '__FILE__',
  152. '__LINE__',
  153. '__CLASS__',
  154. '__FUNCTION__',
  155. '__METHOD__',
  156. '__TRAIT__',
  157. '__DIR__',
  158. '__NAMESPACE__'
  159. );
  160. foreach ($constants as $constant) {
  161. $this->compare(
  162. <<<EOL
  163. <?php
  164. $constant;
  165. EOL
  166. ,
  167. <<<EOL
  168. <token_default><?php</token_default>
  169. <token_default>$constant</token_default><token_keyword>;</token_keyword>
  170. EOL
  171. );
  172. }
  173. }
  174. /*
  175. * Comments
  176. */
  177. public function testComment()
  178. {
  179. $this->compare(
  180. <<<EOL
  181. <?php
  182. /* Ahoj */
  183. EOL
  184. ,
  185. <<<EOL
  186. <token_default><?php</token_default>
  187. <token_comment>/* Ahoj */</token_comment>
  188. EOL
  189. );
  190. }
  191. public function testDocComment()
  192. {
  193. $this->compare(
  194. <<<EOL
  195. <?php
  196. /** Ahoj */
  197. EOL
  198. ,
  199. <<<EOL
  200. <token_default><?php</token_default>
  201. <token_comment>/** Ahoj */</token_comment>
  202. EOL
  203. );
  204. }
  205. public function testInlineComment()
  206. {
  207. $this->compare(
  208. <<<EOL
  209. <?php
  210. // Ahoj
  211. EOL
  212. ,
  213. <<<EOL
  214. <token_default><?php</token_default>
  215. <token_comment>// Ahoj</token_comment>
  216. EOL
  217. );
  218. }
  219. public function testHashComment()
  220. {
  221. $this->compare(
  222. <<<EOL
  223. <?php
  224. # Ahoj
  225. EOL
  226. ,
  227. <<<EOL
  228. <token_default><?php</token_default>
  229. <token_comment># Ahoj</token_comment>
  230. EOL
  231. );
  232. }
  233. public function testEmpty()
  234. {
  235. $this->compare(
  236. ''
  237. ,
  238. ''
  239. );
  240. }
  241. }