/tests/units/classes/test/adapter.php

https://github.com/cebe/atoum · PHP · 348 lines · 290 code · 58 blank · 0 comment · 0 complexity · c28d04fff8c5e3433b9d20e52ba588cc MD5 · raw file

  1. <?php
  2. namespace mageekguy\atoum\tests\units\test;
  3. use
  4. mageekguy\atoum
  5. ;
  6. require_once(__DIR__ . '/../../runner.php');
  7. class adapter extends atoum\test
  8. {
  9. public function test__construct()
  10. {
  11. $adapter = new atoum\test\adapter();
  12. $this->assert
  13. ->array($adapter->getCallables())->isEmpty()
  14. ->array($adapter->getCalls())->isEmpty()
  15. ;
  16. }
  17. public function test__set()
  18. {
  19. $adapter = new atoum\test\adapter();
  20. $closure = function() {};
  21. $this->assert
  22. ->when(function() use ($adapter, & $closure) { $adapter->md5 = $closure = function() {}; })
  23. ->object($adapter->md5->getClosure())->isIdenticalTo($closure)
  24. ;
  25. $adapter->md5 = $return = uniqid();
  26. $this->assert
  27. ->object($adapter->md5)->isInstanceOf('mageekguy\atoum\test\adapter\callable')
  28. ->object($adapter->MD5)->isInstanceOf('mageekguy\atoum\test\adapter\callable')
  29. ->string($adapter->invoke('md5'))->isEqualTo($return)
  30. ->string($adapter->invoke('MD5'))->isEqualTo($return)
  31. ;
  32. $adapter->MD5 = $return = uniqid();
  33. $this->assert
  34. ->object($adapter->md5)->isInstanceOf('mageekguy\atoum\test\adapter\callable')
  35. ->object($adapter->MD5)->isInstanceOf('mageekguy\atoum\test\adapter\callable')
  36. ->string($adapter->invoke('md5'))->isEqualTo($return)
  37. ->string($adapter->invoke('MD5'))->isEqualTo($return)
  38. ;
  39. }
  40. public function test__get()
  41. {
  42. $adapter = new atoum\test\adapter();
  43. $adapter->md5 = $closure = function() {};
  44. $this->assert
  45. ->object($adapter->md5->getClosure())->isIdenticalTo($closure)
  46. ->object($adapter->MD5->getClosure())->isIdenticalTo($closure)
  47. ;
  48. $adapter->md5 = uniqid();
  49. $this->assert
  50. ->object($adapter->md5->getClosure())->isInstanceOf('closure')
  51. ->object($adapter->MD5->getClosure())->isInstanceOf('closure')
  52. ;
  53. }
  54. public function test__isset()
  55. {
  56. $adapter = new atoum\test\adapter();
  57. $this->assert
  58. ->boolean(isset($adapter->md5))->isFalse()
  59. ;
  60. $adapter->{$function = strtolower(uniqid())} = function() {};
  61. $this->assert
  62. ->boolean(isset($adapter->{$function}))->isTrue()
  63. ->boolean(isset($adapter->{strtoupper($function)}))->isTrue()
  64. ;
  65. $adapter->{$function = strtoupper(uniqid())} = function() {};
  66. $this->assert
  67. ->boolean(isset($adapter->{$function}))->isTrue()
  68. ->boolean(isset($adapter->{strtolower($function)}))->isTrue()
  69. ;
  70. $adapter->{$function = strtolower(uniqid())} = uniqid();
  71. $this->assert
  72. ->boolean(isset($adapter->{$function}))->isTrue()
  73. ->boolean(isset($adapter->{strtoupper($function)}))->isTrue()
  74. ;
  75. $adapter->{$function = strtoupper(uniqid())} = uniqid();
  76. $this->assert
  77. ->boolean(isset($adapter->{$function}))->isTrue()
  78. ->boolean(isset($adapter->{strtolower($function)}))->isTrue()
  79. ;
  80. }
  81. public function test__unset()
  82. {
  83. $this->assert
  84. ->when(function() use (& $adapter) { $adapter = new atoum\test\adapter(); })
  85. ->array($adapter->getCallables())->isEmpty()
  86. ->array($adapter->getCalls())->isEmpty()
  87. ->when(function() use ($adapter) { unset($adapter->md5); })
  88. ->array($adapter->getCallables())->isEmpty()
  89. ->array($adapter->getCalls())->isEmpty()
  90. ->when(function() use ($adapter) { unset($adapter->MD5); })
  91. ->array($adapter->getCallables())->isEmpty()
  92. ->array($adapter->getCalls())->isEmpty()
  93. ->when(function() use ($adapter) { $adapter->md5 = uniqid(); $adapter->md5(uniqid()); })
  94. ->array($adapter->getCallables())->isNotEmpty()
  95. ->array($adapter->getCalls())->isNotEmpty()
  96. ->when(function() use ($adapter) { unset($adapter->{uniqid()}); })
  97. ->array($adapter->getCallables())->isNotEmpty()
  98. ->array($adapter->getCalls())->isNotEmpty()
  99. ->when(function() use ($adapter) { unset($adapter->md5); })
  100. ->array($adapter->getCallables())->isEmpty()
  101. ->array($adapter->getCalls())->isEmpty()
  102. ->when(function() use ($adapter) { $adapter->MD5 = uniqid(); $adapter->MD5(uniqid()); })
  103. ->array($adapter->getCallables())->isNotEmpty()
  104. ->array($adapter->getCalls())->isNotEmpty()
  105. ->when(function() use ($adapter) { unset($adapter->{uniqid()}); })
  106. ->array($adapter->getCallables())->isNotEmpty()
  107. ->array($adapter->getCalls())->isNotEmpty()
  108. ->when(function() use ($adapter) { unset($adapter->MD5); })
  109. ->array($adapter->getCallables())->isEmpty()
  110. ->array($adapter->getCalls())->isEmpty()
  111. ;
  112. }
  113. public function test__call()
  114. {
  115. $adapter = new atoum\test\adapter();
  116. $this->assert
  117. ->string($adapter->md5($hash = uniqid()))->isEqualTo(md5($hash))
  118. ->string($adapter->MD5($hash = uniqid()))->isEqualTo(md5($hash))
  119. ;
  120. $adapter->md5 = $md5 = uniqid();
  121. $this->assert
  122. ->string($adapter->md5($hash))->isEqualTo($md5)
  123. ->string($adapter->MD5($hash))->isEqualTo($md5)
  124. ;
  125. $adapter->md5 = $md5 = uniqid();
  126. $this->assert
  127. ->string($adapter->md5($hash))->isEqualTo($md5)
  128. ->string($adapter->MD5($hash))->isEqualTo($md5)
  129. ;
  130. $this->assert
  131. ->exception(function() use ($adapter) {
  132. $adapter->require(uniqid());
  133. }
  134. )
  135. ->isInstanceOf('mageekguy\atoum\exceptions\logic\invalidArgument')
  136. ->hasMessage('Function \'require()\' is not callable by an adapter')
  137. ->exception(function() use ($adapter) {
  138. $adapter->REQUIRE(uNiqid());
  139. }
  140. )
  141. ->isInstanceOf('mageekguy\atoum\exceptions\logic\invalidArgument')
  142. ->hasMessage('Function \'REQUIRE()\' is not callable by an adapter')
  143. ;
  144. $adapter->md5 = 0;
  145. $adapter->md5[1] = 1;
  146. $adapter->md5[2] = 2;
  147. $this->assert
  148. ->integer($adapter->md5())->isEqualTo(1)
  149. ->integer($adapter->md5())->isEqualTo(2)
  150. ->integer($adapter->md5())->isEqualTo(0)
  151. ;
  152. $this->assert
  153. ->integer($adapter->MD5())->isEqualTo(1)
  154. ->integer($adapter->MD5())->isEqualTo(2)
  155. ->integer($adapter->MD5())->isEqualTo(0)
  156. ;
  157. $adapter->MD5 = 0;
  158. $adapter->MD5[1] = 1;
  159. $adapter->MD5[2] = 2;
  160. $this->assert
  161. ->integer($adapter->md5())->isEqualTo(1)
  162. ->integer($adapter->md5())->isEqualTo(2)
  163. ->integer($adapter->md5())->isEqualTo(0)
  164. ;
  165. $this->assert
  166. ->integer($adapter->MD5())->isEqualTo(1)
  167. ->integer($adapter->MD5())->isEqualTo(2)
  168. ->integer($adapter->MD5())->isEqualTo(0)
  169. ;
  170. }
  171. public function testGetCallsNumber()
  172. {
  173. $this->assert
  174. ->integer(atoum\test\adapter::getCallsNumber())->isZero()
  175. ;
  176. $adapter = new atoum\test\adapter();
  177. $adapter->md5(uniqid());
  178. $this->assert
  179. ->integer(atoum\test\adapter::getCallsNumber())->isEqualTo(1)
  180. ;
  181. $adapter->md5(uniqid());
  182. $this->assert
  183. ->integer(atoum\test\adapter::getCallsNumber())->isEqualTo(2)
  184. ;
  185. $otherAdapter = new atoum\test\adapter();
  186. $otherAdapter->sha1(uniqid());
  187. $this->assert
  188. ->integer(atoum\test\adapter::getCallsNumber())->isEqualTo(3)
  189. ;
  190. }
  191. public function testGetCalls()
  192. {
  193. $adapter = new atoum\test\adapter();
  194. $this->assert
  195. ->array($adapter->getCalls())->isEmpty()
  196. ->when(function() use ($adapter, & $firstHash) { $adapter->md5($firstHash = uniqid()); })
  197. ->array($adapter->getCalls())->isEqualTo(array('md5' => array(1 => array($firstHash))))
  198. ->array($adapter->getCalls('md5'))->isEqualTo(array(1 => array($firstHash)))
  199. ->array($adapter->getCalls('MD5'))->isEqualTo(array(1 => array($firstHash)))
  200. ->when(function() use ($adapter, & $secondHash) { $adapter->md5($secondHash = uniqid()); })
  201. ->array($adapter->getCalls())->isEqualTo(array('md5' => array(1 => array($firstHash), 2 => array($secondHash))))
  202. ->array($adapter->getCalls('md5'))->isEqualTo(array(1 => array($firstHash), 2 => array($secondHash)))
  203. ->array($adapter->getCalls('MD5'))->isEqualTo(array(1 => array($firstHash), 2 => array($secondHash)))
  204. ->when(function() use ($adapter, & $thirdHash) {
  205. $adapter->md5 = function() {};
  206. $adapter->md5($thirdHash = uniqid());
  207. }
  208. )
  209. ->array($adapter->getCalls())->isEqualTo(array('md5' => array(1 => array($firstHash), 2 => array($secondHash), 3 => array($thirdHash))))
  210. ->array($adapter->getCalls('md5'))->isEqualTo(array(1 => array($firstHash), 2 => array($secondHash), 3 => array($thirdHash)))
  211. ->array($adapter->getCalls('MD5'))->isEqualTo(array(1 => array($firstHash), 2 => array($secondHash), 3 => array($thirdHash)))
  212. ->when(function() use ($adapter, & $haystack, & $needle, & $offset) {
  213. $haystack = uniqid();
  214. $needle = uniqid();
  215. $offset = rand(0, 12);
  216. $adapter->strpos($haystack, $needle, $offset);
  217. }
  218. )
  219. ->array($adapter->getCalls())->isEqualTo(array(
  220. 'md5' => array(
  221. 1 => array($firstHash),
  222. 2 => array($secondHash),
  223. 3 => array($thirdHash)
  224. ),
  225. 'strpos' => array(
  226. 4 => array($haystack, $needle, $offset)
  227. )
  228. )
  229. )
  230. ->array($adapter->getCalls('md5'))->isEqualTo(array(1 => array($firstHash), 2 => array($secondHash), 3 => array($thirdHash)))
  231. ->array($adapter->getCalls('MD5'))->isEqualTo(array(1 => array($firstHash), 2 => array($secondHash), 3 => array($thirdHash)))
  232. ->array($adapter->getCalls('strpos'))->isEqualTo(array(4 => array($haystack, $needle, $offset)))
  233. ->array($adapter->getCalls('STRPOS'))->isEqualTo(array(4 => array($haystack, $needle, $offset)))
  234. ;
  235. }
  236. public function testResetCalls()
  237. {
  238. $adapter = new atoum\test\adapter();
  239. $this->assert
  240. ->when(function() use ($adapter) { $adapter->md5(uniqid()); })
  241. ->array($adapter->getCalls())->isNotEmpty()
  242. ->object($adapter->resetCalls())->isIdenticalTo($adapter)
  243. ->array($adapter->getCalls())->isEmpty()
  244. ;
  245. }
  246. public function testReset()
  247. {
  248. $adapter = new atoum\test\adapter();
  249. $this->assert
  250. ->array($adapter->getCallables())->isEmpty()
  251. ->array($adapter->getCalls())->isEmpty()
  252. ->object($adapter->reset())->isIdenticalTo($adapter)
  253. ->array($adapter->getCallables())->isEmpty()
  254. ->array($adapter->getCalls())->isEmpty()
  255. ->when(function() use ($adapter) { $adapter->md5(uniqid()); })
  256. ->array($adapter->getCallables())->isEmpty()
  257. ->array($adapter->getCalls())->isNotEmpty()
  258. ->object($adapter->reset())->isIdenticalTo($adapter)
  259. ->array($adapter->getCallables())->isEmpty()
  260. ->array($adapter->getCalls())->isEmpty()
  261. ->when(function() use ($adapter) { $adapter->md5 = uniqid(); })
  262. ->array($adapter->getCallables())->isNotEmpty()
  263. ->array($adapter->getCalls())->isEmpty()
  264. ->object($adapter->reset())->isIdenticalTo($adapter)
  265. ->array($adapter->getCallables())->isEmpty()
  266. ->array($adapter->getCalls())->isEmpty()
  267. ->when(function() use ($adapter) {
  268. $adapter->md5 = uniqid();
  269. $adapter->md5(uniqid());
  270. }
  271. )
  272. ->array($adapter->getCallables())->isNotEmpty()
  273. ->array($adapter->getCalls())->isNotEmpty()
  274. ->object($adapter->reset())->isIdenticalTo($adapter)
  275. ->array($adapter->getCallables())->isEmpty()
  276. ->array($adapter->getCalls())->isEmpty()
  277. ;
  278. }
  279. public function testAddCall()
  280. {
  281. $adapter = new atoum\test\adapter();
  282. $this->assert
  283. ->array($adapter->getCalls())->isEmpty()
  284. ->object($adapter->addCall($method = uniqid(), $args = array(uniqid())))->isIdenticalTo($adapter)
  285. ->array($adapter->getCalls($method))->isEqualTo(array(1 => $args))
  286. ->array($adapter->getCalls(strtoupper($method)))->isEqualTo(array(1 => $args))
  287. ;
  288. }
  289. }
  290. ?>