PageRenderTime 52ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 1ms

/tests/units/classes/report/fields/runner/tests/coverage/phing.php

http://github.com/mageekguy/atoum
PHP | 270 lines | 256 code | 14 blank | 0 comment | 0 complexity | 3b884d94d2303400e2f94912921483e9 MD5 | raw file
  1. <?php
  2. namespace mageekguy\atoum\tests\units\report\fields\runner\tests\coverage;
  3. use
  4. mageekguy\atoum,
  5. mageekguy\atoum\mock,
  6. mageekguy\atoum\score,
  7. mageekguy\atoum\locale,
  8. mageekguy\atoum\cli\prompt,
  9. mageekguy\atoum\cli\colorizer,
  10. mageekguy\atoum\report\fields\runner\tests\coverage\phing as testedClass
  11. ;
  12. require_once __DIR__ . '/../../../../../../runner.php';
  13. class phing extends atoum\test
  14. {
  15. public function testClass()
  16. {
  17. $this->testedClass->extends('mageekguy\atoum\report\fields\runner\tests\coverage\cli');
  18. }
  19. public function test__construct()
  20. {
  21. $this
  22. ->if($field = new testedClass())
  23. ->then
  24. ->object($field->getTitlePrompt())->isEqualTo(new prompt())
  25. ->object($field->getClassPrompt())->isEqualTo(new prompt())
  26. ->object($field->getMethodPrompt())->isEqualTo(new prompt())
  27. ->object($field->getTitleColorizer())->isEqualTo(new colorizer())
  28. ->object($field->getCoverageColorizer())->isEqualTo(new colorizer())
  29. ->object($field->getLocale())->isEqualTo(new locale())
  30. ->variable($field->getCoverage())->isNull()
  31. ->array($field->getEvents())->isEqualTo(array(atoum\runner::runStop))
  32. ->boolean($field->missingCodeCoverageIsShowed())->isTrue()
  33. ;
  34. }
  35. public function testSetTitlePrompt()
  36. {
  37. $this
  38. ->if($field = new testedClass())
  39. ->then
  40. ->object($field->setTitlePrompt($prompt = new prompt()))->isIdenticalTo($field)
  41. ->object($field->getTitlePrompt())->isEqualTo($prompt)
  42. ->object($field->setTitlePrompt())->isIdenticalTo($field)
  43. ->object($field->getTitlePrompt())
  44. ->isNotIdenticalTo($prompt)
  45. ->isEqualTo(new prompt())
  46. ;
  47. }
  48. public function testSetClassPrompt()
  49. {
  50. $this
  51. ->if($field = new testedClass())
  52. ->then
  53. ->object($field->setMethodPrompt($prompt = new prompt()))->isIdenticalTo($field)
  54. ->object($field->getMethodPrompt())->isEqualTo($prompt)
  55. ->object($field->setMethodPrompt())->isIdenticalTo($field)
  56. ->object($field->getMethodPrompt())
  57. ->isNotIdenticalTo($prompt)
  58. ->isEqualTo(new prompt())
  59. ;
  60. }
  61. public function testSetMethodPrompt()
  62. {
  63. $this
  64. ->if($field = new testedClass())
  65. ->then
  66. ->object($field->setClassPrompt($prompt = new prompt()))->isIdenticalTo($field)
  67. ->object($field->getClassPrompt())->isEqualTo($prompt)
  68. ->object($field->setClassPrompt())->isIdenticalTo($field)
  69. ->object($field->getClassPrompt())
  70. ->isNotIdenticalTo($prompt)
  71. ->isEqualTo(new prompt())
  72. ;
  73. }
  74. public function testSetTitleColorizer()
  75. {
  76. $this
  77. ->if($field = new testedClass())
  78. ->then
  79. ->object($field->setTitleColorizer($colorizer = new colorizer()))->isIdenticalTo($field)
  80. ->object($field->getTitleColorizer())->isIdenticalTo($colorizer)
  81. ->object($field->setTitleColorizer())->isIdenticalTo($field)
  82. ->object($field->getTitleColorizer())
  83. ->isNotIdenticalTo($colorizer)
  84. ->isEqualTo(new colorizer())
  85. ;
  86. }
  87. public function testSetTitleCoverageColorizer()
  88. {
  89. $this
  90. ->if($field = new testedClass())
  91. ->then
  92. ->object($field->setCoverageColorizer($colorizer = new colorizer()))->isIdenticalTo($field)
  93. ->object($field->getCoverageColorizer())->isIdenticalTo($colorizer)
  94. ->object($field->setCoverageColorizer())->isIdenticalTo($field)
  95. ->object($field->getCoverageColorizer())
  96. ->isNotIdenticalTo($colorizer)
  97. ->isEqualTo(new colorizer())
  98. ;
  99. }
  100. public function testShowMissingCodeCoverage()
  101. {
  102. $this
  103. ->if($field = new testedClass())
  104. ->then
  105. ->object($field->showMissingCodeCoverage())->isIdenticalTo($field)
  106. ->boolean($field->missingCodeCoverageIsShowed())->isTrue()
  107. ->if($field->hideMissingCodeCoverage())
  108. ->then
  109. ->object($field->showMissingCodeCoverage())->isIdenticalTo($field)
  110. ->boolean($field->missingCodeCoverageIsShowed())->isTrue()
  111. ;
  112. }
  113. public function testHideMissingCodeCoverage()
  114. {
  115. $this
  116. ->if($field = new testedClass())
  117. ->then
  118. ->object($field->hideMissingCodeCoverage())->isIdenticalTo($field)
  119. ->boolean($field->missingCodeCoverageIsShowed())->isFalse()
  120. ->if($field->showMissingCodeCoverage())
  121. ->then
  122. ->object($field->hideMissingCodeCoverage())->isIdenticalTo($field)
  123. ->boolean($field->missingCodeCoverageIsShowed())->isFalse()
  124. ;
  125. }
  126. public function testHandleEvent()
  127. {
  128. $this
  129. ->if($field = new testedClass())
  130. ->then
  131. ->boolean($field->handleEvent(atoum\runner::runStart, new atoum\runner()))->isFalse()
  132. ->variable($field->getCoverage())->isNull()
  133. ->boolean($field->handleEvent(atoum\runner::runStop, $runner = new atoum\runner()))->isTrue()
  134. ->object($field->getCoverage())->isIdenticalTo($runner->getScore()->getCoverage())
  135. ;
  136. }
  137. public function test__toString()
  138. {
  139. $this
  140. ->if($scoreCoverage = new score\coverage())
  141. ->and($score = new \mock\mageekguy\atoum\runner\score())
  142. ->and($score->getMockController()->getCoverage = function() use ($scoreCoverage) { return $scoreCoverage; })
  143. ->and($runner = new atoum\runner())
  144. ->and($runner->setScore($score))
  145. ->and($defaultField = new testedClass())
  146. ->and($customField = new testedClass())
  147. ->and($customField->setTitlePrompt($titlePrompt = new prompt(uniqid())))
  148. ->and($customField->setClassPrompt($classPrompt = new prompt(uniqid())))
  149. ->and($customField->setMethodPrompt($methodPrompt = new prompt(uniqid())))
  150. ->and($customField->setTitleColorizer($titleColorizer = new colorizer(uniqid(), uniqid())))
  151. ->and($customField->setCoverageColorizer($coverageColorizer = new colorizer(uniqid(), uniqid())))
  152. ->and($customField->setLocale($locale = new locale()))
  153. ->then
  154. ->castToString($defaultField)->isEmpty()
  155. ->castToString($customField)->isEmpty()
  156. ->if($defaultField->handleEvent(atoum\runner::runStart, $runner))
  157. ->and($customField->handleEvent(atoum\runner::runStart, $runner))
  158. ->then
  159. ->castToString($defaultField)->isEmpty()
  160. ->castToString($customField)->isEmpty()
  161. ->if($defaultField->handleEvent(atoum\runner::runStop, $runner))
  162. ->and($customField->handleEvent(atoum\runner::runStop, $runner))
  163. ->then
  164. ->castToString($defaultField)->isEmpty()
  165. ->castToString($customField)->isEmpty()
  166. ->if($classController = new mock\controller())
  167. ->and($classController->disableMethodChecking())
  168. ->and($classController->__construct = function() {})
  169. ->and($classController->getName = function() use (& $className) { return $className; })
  170. ->and($classController->getFileName = function() use (& $classFile) { return $classFile; })
  171. ->and($classController->getTraits = array())
  172. ->and($classController->getStartLine = 1)
  173. ->and($classController->getEndLine = 12)
  174. ->and($class = new \mock\reflectionClass(uniqid(), $classController))
  175. ->and($methodController = new mock\controller())
  176. ->and($methodController->__construct = function() {})
  177. ->and($methodController->isAbstract = false)
  178. ->and($methodController->getFileName = function() use (& $classFile) { return $classFile; })
  179. ->and($methodController->getDeclaringClass = $class)
  180. ->and($methodController->getName = function() use (& $methodName) { return $methodName; })
  181. ->and($methodController->getStartLine = 6)
  182. ->and($methodController->getEndLine = 8)
  183. ->and($classController->getMethods = array(new \mock\reflectionMethod(uniqid(), uniqid(), $methodController)))
  184. ->and($className = uniqid())
  185. ->and($methodName = uniqid())
  186. ->and($scoreCoverage->setReflectionClassFactory(function() use ($class) { return $class; }))
  187. ->and($scoreCoverage->addXdebugDataForTest($this, $xdebugData = array(
  188. ($classFile = uniqid()) =>
  189. array(
  190. 5 => 1,
  191. 6 => 2,
  192. 7 => 3,
  193. 8 => 2,
  194. 9 => 1
  195. ),
  196. uniqid() =>
  197. array(
  198. 5 => 2,
  199. 6 => 3,
  200. 7 => 4,
  201. 8 => 3,
  202. 9 => 2
  203. )
  204. )
  205. )
  206. )
  207. ->and($defaultField = new testedClass())
  208. ->and($customField = new testedClass())
  209. ->and($customField->setTitlePrompt($titlePrompt = new prompt(uniqid())))
  210. ->and($customField->setClassPrompt($classPrompt = new prompt(uniqid())))
  211. ->and($customField->setMethodPrompt($methodPrompt = new prompt(uniqid())))
  212. ->and($customField->setTitleColorizer($titleColorizer = new colorizer(uniqid(), uniqid())))
  213. ->and($customField->setCoverageColorizer($coverageColorizer = new colorizer(uniqid(), uniqid())))
  214. ->and($customField->setLocale($locale = new locale()))
  215. ->then
  216. ->castToString($defaultField)->isEmpty()
  217. ->castToString($customField)->isEmpty()
  218. ->if($defaultField->handleEvent(atoum\runner::runStart, $runner))
  219. ->and($customField->handleEvent(atoum\runner::runStart, $runner))
  220. ->then
  221. ->castToString($defaultField)->isEmpty()
  222. ->castToString($customField)->isEmpty()
  223. ->if($defaultField->handleEvent(atoum\runner::runStop, $runner))
  224. ->and($customField->handleEvent(atoum\runner::runStop, $runner))
  225. ->then
  226. ->castToString($defaultField)->isEqualTo(
  227. $defaultField->getTitlePrompt() . sprintf($defaultField->getLocale()->_('Code coverage value : %3.2f%%'), $scoreCoverage->getValue() * 100) . PHP_EOL .
  228. $defaultField->getClassPrompt() . sprintf($defaultField->getLocale()->_('Class %s : %3.2f%%'), $className, $scoreCoverage->getValueForClass($className) * 100.0) . PHP_EOL .
  229. $defaultField->getMethodPrompt() . sprintf($defaultField->getLocale()->_(' ::%s() : %3.2f%%'), $methodName, $scoreCoverage->getValueForMethod($className, $methodName) * 100.0) . PHP_EOL
  230. )
  231. ->castToString($customField)->isEqualTo(
  232. $titlePrompt .
  233. sprintf(
  234. $locale->_('%s : %s'),
  235. $titleColorizer->colorize($locale->_('Code coverage value')),
  236. $coverageColorizer->colorize(sprintf('%3.2f%%', $scoreCoverage->getValue() * 100.0))
  237. ) .
  238. PHP_EOL .
  239. $classPrompt .
  240. sprintf(
  241. $locale->_('%s : %s'),
  242. $titleColorizer->colorize(sprintf($locale->_('Class %s'), $className)),
  243. $coverageColorizer->colorize(sprintf('%3.2f%%', $scoreCoverage->getValueForClass($className) * 100.0))
  244. ) .
  245. PHP_EOL .
  246. $methodPrompt .
  247. sprintf(
  248. $locale->_('%s : %s'),
  249. $titleColorizer->colorize(sprintf($locale->_(' ::%s()'), $methodName)),
  250. $coverageColorizer->colorize(sprintf('%3.2f%%', $scoreCoverage->getValueForClass($className, $methodName) * 100.0))
  251. ) .
  252. PHP_EOL
  253. )
  254. ;
  255. }
  256. }