/tests/units/classes/php/tokenizer/iterators/phpScript.php

https://github.com/tharkun/atoum · PHP · 370 lines · 285 code · 85 blank · 0 comment · 0 complexity · 4476567ba40583c6152eca6fd42b0ab4 MD5 · raw file

  1. <?php
  2. namespace mageekguy\atoum\tests\units\php\tokenizer\iterators;
  3. use
  4. mageekguy\atoum,
  5. mageekguy\atoum\php\tokenizer,
  6. mageekguy\atoum\php\tokenizer\iterators
  7. ;
  8. require_once __DIR__ . '/../../../../runner.php';
  9. class phpScript extends atoum\test
  10. {
  11. public function testClass()
  12. {
  13. $this->assert
  14. ->testedClass
  15. ->isSubClassOf('mageekguy\atoum\php\tokenizer\iterators\phpNamespace')
  16. ;
  17. }
  18. public function test__construct()
  19. {
  20. $iterator = new iterators\phpScript();
  21. $this->assert
  22. ->array($iterator->getConstants())->isEmpty()
  23. ->array($iterator->getClasses())->isEmpty()
  24. ->array($iterator->getNamespaces())->isEmpty()
  25. ->array($iterator->getImportations())->isEmpty()
  26. ;
  27. }
  28. public function testReset()
  29. {
  30. $iterator = new iterators\phpScript();
  31. $this->assert
  32. ->object($iterator->reset())->isIdenticalTo($iterator)
  33. ->array($iterator->getConstants())->isEmpty()
  34. ->array($iterator->getClasses())->isEmpty()
  35. ->array($iterator->getNamespaces())->isEmpty()
  36. ;
  37. $iterator->appendConstant(new iterators\phpConstant());
  38. $iterator->appendClass(new iterators\phpClass());
  39. $iterator->appendNamespace(new iterators\phpNamespace());
  40. $this->assert
  41. ->array($iterator->getConstants())->isNotEmpty()
  42. ->array($iterator->getClasses())->isNotEmpty()
  43. ->array($iterator->getNamespaces())->isNotEmpty()
  44. ->object($iterator->reset())->isIdenticalTo($iterator)
  45. ->array($iterator->getConstants())->isEmpty()
  46. ->array($iterator->getClasses())->isEmpty()
  47. ->array($iterator->getNamespaces())->isEmpty()
  48. ;
  49. }
  50. public function testAppendConstant()
  51. {
  52. $iterator = new iterators\phpScript();
  53. $constantIterator = new iterators\phpConstant();
  54. $constantIterator
  55. ->append($token1 = new tokenizer\token(uniqid()))
  56. ->append($token2 = new tokenizer\token(uniqid()))
  57. ;
  58. $this->assert
  59. ->object($iterator->appendConstant($constantIterator))->isIdenticalTo($iterator)
  60. ->array($iterator->getConstants())->isEqualTo(array($constantIterator))
  61. ->castToString($iterator)->isEqualTo($token1 . $token2)
  62. ;
  63. }
  64. public function testGetConstants()
  65. {
  66. $iterator = new iterators\phpScript();
  67. $this->assert
  68. ->array($iterator->getConstants())->isEmpty()
  69. ;
  70. $iterator->appendConstant($constantIterator = new iterators\phpConstant());
  71. $this->assert
  72. ->array($iterator->getConstants())->isEqualTo(array($constantIterator))
  73. ;
  74. $iterator->appendConstant($otherConstantIterator = new iterators\phpConstant());
  75. $this->assert
  76. ->array($iterator->getConstants())->isEqualTo(array($constantIterator, $otherConstantIterator))
  77. ;
  78. }
  79. public function testGetConstant()
  80. {
  81. $iterator = new iterators\phpScript();
  82. $this->assert
  83. ->variable($iterator->getConstant(rand(0, PHP_INT_MAX)))->isNull()
  84. ;
  85. $iterator->appendConstant($constantIterator = new iterators\phpConstant());
  86. $this->assert
  87. ->variable($iterator->getConstant(0))->isIdenticalTo($constantIterator)
  88. ->variable($iterator->getConstant(rand(1, PHP_INT_MAX)))->isNull()
  89. ;
  90. $iterator->appendConstant($otherConstantIterator = new iterators\phpConstant());
  91. $this->assert
  92. ->variable($iterator->getConstant(0))->isIdenticalTo($constantIterator)
  93. ->variable($iterator->getConstant(1))->isIdenticalTo($otherConstantIterator)
  94. ->variable($iterator->getConstant(rand(2, PHP_INT_MAX)))->isNull()
  95. ;
  96. }
  97. public function testAppendClass()
  98. {
  99. $iterator = new iterators\phpScript();
  100. $classIterator = new iterators\phpClass();
  101. $classIterator
  102. ->append($token1 = new tokenizer\token(uniqid()))
  103. ->append($token2 = new tokenizer\token(uniqid()))
  104. ;
  105. $this->assert
  106. ->object($iterator->appendClass($classIterator))->isIdenticalTo($iterator)
  107. ->array($iterator->getClasses())->isEqualTo(array($classIterator))
  108. ->castToString($iterator)->isEqualTo($token1 . $token2)
  109. ;
  110. }
  111. public function testGetClasses()
  112. {
  113. $iterator = new iterators\phpScript();
  114. $this->assert
  115. ->array($iterator->getClasses())->isEmpty()
  116. ;
  117. $iterator->appendClass($classIterator = new iterators\phpClass());
  118. $this->assert
  119. ->array($iterator->getClasses())->isEqualTo(array($classIterator))
  120. ;
  121. $iterator->appendClass($otherClassIterator = new iterators\phpClass());
  122. $this->assert
  123. ->array($iterator->getClasses())->isEqualTo(array($classIterator, $otherClassIterator))
  124. ;
  125. }
  126. public function testGetClass()
  127. {
  128. $iterator = new iterators\phpScript();
  129. $this->assert
  130. ->variable($iterator->getClass(rand(0, PHP_INT_MAX)))->isNull()
  131. ;
  132. $iterator->appendClass($classIterator = new iterators\phpClass());
  133. $this->assert
  134. ->variable($iterator->getClass(0))->isIdenticalTo($classIterator)
  135. ->variable($iterator->getClass(rand(1, PHP_INT_MAX)))->isNull()
  136. ;
  137. $iterator->appendClass($otherClassIterator = new iterators\phpClass());
  138. $this->assert
  139. ->variable($iterator->getClass(0))->isIdenticalTo($classIterator)
  140. ->variable($iterator->getClass(1))->isIdenticalTo($otherClassIterator)
  141. ->variable($iterator->getClass(rand(2, PHP_INT_MAX)))->isNull()
  142. ;
  143. }
  144. public function testAppendNamespace()
  145. {
  146. $iterator = new iterators\phpScript();
  147. $namespaceIterator = new iterators\phpNamespace();
  148. $namespaceIterator
  149. ->append($token1 = new tokenizer\token(uniqid()))
  150. ->append($token2 = new tokenizer\token(uniqid()))
  151. ;
  152. $this->assert
  153. ->object($iterator->appendNamespace($namespaceIterator))->isIdenticalTo($iterator)
  154. ->array($iterator->getNamespaces())->isEqualTo(array($namespaceIterator))
  155. ->castToString($iterator)->isEqualTo($token1 . $token2)
  156. ;
  157. }
  158. public function testGetNamespaces()
  159. {
  160. $iterator = new iterators\phpScript();
  161. $this->assert
  162. ->array($iterator->getNamespaces())->isEmpty()
  163. ;
  164. $iterator->appendNamespace($namespaceIterator = new iterators\phpNamespace());
  165. $this->assert
  166. ->array($iterator->getNamespaces())->isEqualTo(array($namespaceIterator))
  167. ;
  168. $iterator->appendNamespace($otherNamespaceIterator = new iterators\phpNamespace());
  169. $this->assert
  170. ->array($iterator->getNamespaces())->isEqualTo(array($namespaceIterator, $otherNamespaceIterator))
  171. ;
  172. }
  173. public function testGetNamespace()
  174. {
  175. $iterator = new iterators\phpScript();
  176. $this->assert
  177. ->variable($iterator->getNamespace(rand(0, PHP_INT_MAX)))->isNull()
  178. ;
  179. $iterator->appendNamespace($namespaceIterator = new iterators\phpNamespace());
  180. $this->assert
  181. ->variable($iterator->getNamespace(0))->isIdenticalTo($namespaceIterator)
  182. ->variable($iterator->getNamespace(rand(1, PHP_INT_MAX)))->isNull()
  183. ;
  184. $iterator->appendNamespace($otherNamespaceIterator = new iterators\phpNamespace());
  185. $this->assert
  186. ->variable($iterator->getNamespace(0))->isIdenticalTo($namespaceIterator)
  187. ->variable($iterator->getNamespace(1))->isIdenticalTo($otherNamespaceIterator)
  188. ->variable($iterator->getNamespace(rand(2, PHP_INT_MAX)))->isNull()
  189. ;
  190. }
  191. public function testAppendImportation()
  192. {
  193. $iterator = new iterators\phpScript();
  194. $importationIterator = new iterators\phpImportation();
  195. $importationIterator
  196. ->append($token1 = new tokenizer\token(uniqid()))
  197. ->append($token2 = new tokenizer\token(uniqid()))
  198. ;
  199. $this->assert
  200. ->object($iterator->appendImportation($importationIterator))->isIdenticalTo($iterator)
  201. ->array($iterator->getImportations())->isEqualTo(array($importationIterator))
  202. ->castToString($iterator)->isEqualTo($token1 . $token2)
  203. ;
  204. }
  205. public function testGetImportations()
  206. {
  207. $iterator = new iterators\phpScript();
  208. $this->assert
  209. ->array($iterator->getImportations())->isEmpty()
  210. ;
  211. $iterator->appendImportation($importationIterator = new iterators\phpImportation());
  212. $this->assert
  213. ->array($iterator->getImportations())->isEqualTo(array($importationIterator))
  214. ;
  215. $iterator->appendImportation($otherImportationIterator = new iterators\phpImportation());
  216. $this->assert
  217. ->array($iterator->getImportations())->isEqualTo(array($importationIterator, $otherImportationIterator))
  218. ;
  219. }
  220. public function testGetImportation()
  221. {
  222. $iterator = new iterators\phpScript();
  223. $this->assert
  224. ->variable($iterator->getImportation(rand(0, PHP_INT_MAX)))->isNull()
  225. ;
  226. $iterator->appendImportation($importationIterator = new iterators\phpImportation());
  227. $this->assert
  228. ->variable($iterator->getImportation(0))->isIdenticalTo($importationIterator)
  229. ->variable($iterator->getImportation(rand(1, PHP_INT_MAX)))->isNull()
  230. ;
  231. $iterator->appendImportation($otherImportationIterator = new iterators\phpImportation());
  232. $this->assert
  233. ->variable($iterator->getImportation(0))->isIdenticalTo($importationIterator)
  234. ->variable($iterator->getImportation(1))->isIdenticalTo($otherImportationIterator)
  235. ->variable($iterator->getImportation(rand(2, PHP_INT_MAX)))->isNull()
  236. ;
  237. }
  238. public function testAppendFunction()
  239. {
  240. $iterator = new iterators\phpScript();
  241. $functionIterator = new iterators\phpFunction();
  242. $functionIterator
  243. ->append($token1 = new tokenizer\token(uniqid()))
  244. ->append($token2 = new tokenizer\token(uniqid()))
  245. ;
  246. $this->assert
  247. ->object($iterator->appendFunction($functionIterator))->isIdenticalTo($iterator)
  248. ->array($iterator->getFunctions())->isEqualTo(array($functionIterator))
  249. ->castToString($iterator)->isEqualTo($token1 . $token2)
  250. ;
  251. }
  252. public function testGetFunctions()
  253. {
  254. $iterator = new iterators\phpScript();
  255. $this->assert
  256. ->array($iterator->getFunctions())->isEmpty()
  257. ;
  258. $iterator->appendFunction($functionIterator = new iterators\phpFunction());
  259. $this->assert
  260. ->array($iterator->getFunctions())->isEqualTo(array($functionIterator))
  261. ;
  262. $iterator->appendFunction($otherFunctionIterator = new iterators\phpFunction());
  263. $this->assert
  264. ->array($iterator->getFunctions())->isEqualTo(array($functionIterator, $otherFunctionIterator))
  265. ;
  266. }
  267. public function testGetFunction()
  268. {
  269. $iterator = new iterators\phpScript();
  270. $this->assert
  271. ->variable($iterator->getFunction(rand(0, PHP_INT_MAX)))->isNull()
  272. ;
  273. $iterator->appendFunction($functionIterator = new iterators\phpFunction());
  274. $this->assert
  275. ->variable($iterator->getFunction(0))->isIdenticalTo($functionIterator)
  276. ->variable($iterator->getFunction(rand(1, PHP_INT_MAX)))->isNull()
  277. ;
  278. $iterator->appendFunction($otherFunctionIterator = new iterators\phpFunction());
  279. $this->assert
  280. ->variable($iterator->getFunction(0))->isIdenticalTo($functionIterator)
  281. ->variable($iterator->getFunction(1))->isIdenticalTo($otherFunctionIterator)
  282. ->variable($iterator->getFunction(rand(2, PHP_INT_MAX)))->isNull()
  283. ;
  284. }
  285. }