PageRenderTime 55ms CodeModel.GetById 20ms RepoModel.GetById 1ms app.codeStats 0ms

/cake/tests/cases/libs/inflector.test.php

https://github.com/hardsshah/bookmarks
PHP | 259 lines | 152 code | 10 blank | 97 comment | 0 complexity | fb8cd027bdb079b4fc4368c7041f3494 MD5 | raw file
  1. <?php
  2. /* SVN FILE: $Id$ */
  3. /**
  4. * InflectorTest file
  5. *
  6. * Long description for file
  7. *
  8. * PHP versions 4 and 5
  9. *
  10. * CakePHP(tm) Tests <https://trac.cakephp.org/wiki/Developement/TestSuite>
  11. * Copyright 2005-2008, Cake Software Foundation, Inc. (http://www.cakefoundation.org)
  12. *
  13. * Licensed under The Open Group Test Suite License
  14. * Redistributions of files must retain the above copyright notice.
  15. *
  16. * @filesource
  17. * @copyright Copyright 2005-2008, Cake Software Foundation, Inc. (http://www.cakefoundation.org)
  18. * @link https://trac.cakephp.org/wiki/Developement/TestSuite CakePHP(tm) Tests
  19. * @package cake
  20. * @subpackage cake.tests.cases.libs
  21. * @since CakePHP(tm) v 1.2.0.4206
  22. * @version $Revision$
  23. * @modifiedby $LastChangedBy$
  24. * @lastmodified $Date$
  25. * @license http://www.opensource.org/licenses/opengroup.php The Open Group Test Suite License
  26. */
  27. App::import('Core', 'Inflector');
  28. /**
  29. * InflectorTest class
  30. *
  31. * @package cake
  32. * @subpackage cake.tests.cases.libs
  33. */
  34. class InflectorTest extends CakeTestCase {
  35. /**
  36. * Inflector property
  37. *
  38. * @var mixed null
  39. * @access public
  40. */
  41. var $Inflector = null;
  42. /**
  43. * setUp method
  44. *
  45. * @access public
  46. * @return void
  47. */
  48. function setUp() {
  49. $this->Inflector = Inflector::getInstance();
  50. }
  51. /**
  52. * tearDown method
  53. *
  54. * @access public
  55. * @return void
  56. */
  57. function tearDown() {
  58. unset($this->Inflector);
  59. }
  60. /**
  61. * testInstantiation method
  62. *
  63. * @access public
  64. * @return void
  65. */
  66. function testInstantiation() {
  67. $this->assertEqual(new Inflector(), $this->Inflector);
  68. }
  69. /**
  70. * testInflectingSingulars method
  71. *
  72. * @access public
  73. * @return void
  74. */
  75. function testInflectingSingulars() {
  76. $this->assertEqual(Inflector::singularize('categorias'), 'categoria');
  77. $this->assertEqual(Inflector::singularize('menus'), 'menu');
  78. $this->assertEqual(Inflector::singularize('news'), 'news');
  79. $this->assertEqual(Inflector::singularize('food_menus'), 'food_menu');
  80. $this->assertEqual(Inflector::singularize('Menus'), 'Menu');
  81. $this->assertEqual(Inflector::singularize('FoodMenus'), 'FoodMenu');
  82. $this->assertEqual(Inflector::singularize('houses'), 'house');
  83. $this->assertEqual(Inflector::singularize('powerhouses'), 'powerhouse');
  84. $this->assertEqual(Inflector::singularize('quizzes'), 'quiz');
  85. $this->assertEqual(Inflector::singularize('Buses'), 'Bus');
  86. $this->assertEqual(Inflector::singularize('buses'), 'bus');
  87. $this->assertEqual(Inflector::singularize('matrix_rows'), 'matrix_row');
  88. $this->assertEqual(Inflector::singularize('matrices'), 'matrix');
  89. $this->assertEqual(Inflector::singularize('vertices'), 'vertex');
  90. $this->assertEqual(Inflector::singularize('indices'), 'index');
  91. $this->assertEqual(Inflector::singularize('Aliases'), 'Alias');
  92. $this->assertEqual(Inflector::singularize('Alias'), 'Alias');
  93. $this->assertEqual(Inflector::singularize('Media'), 'Media');
  94. $this->assertEqual(Inflector::singularize('alumni'), 'alumnus');
  95. $this->assertEqual(Inflector::singularize('bacilli'), 'bacillus');
  96. $this->assertEqual(Inflector::singularize('cacti'), 'cactus');
  97. $this->assertEqual(Inflector::singularize('foci'), 'focus');
  98. $this->assertEqual(Inflector::singularize('fungi'), 'fungus');
  99. $this->assertEqual(Inflector::singularize('nuclei'), 'nucleus');
  100. $this->assertEqual(Inflector::singularize('octopuses'), 'octopus');
  101. $this->assertEqual(Inflector::singularize('radii'), 'radius');
  102. $this->assertEqual(Inflector::singularize('stimuli'), 'stimulus');
  103. $this->assertEqual(Inflector::singularize('syllabi'), 'syllabus');
  104. $this->assertEqual(Inflector::singularize('termini'), 'terminus');
  105. $this->assertEqual(Inflector::singularize('viri'), 'virus');
  106. $this->assertEqual(Inflector::singularize('people'), 'person');
  107. $this->assertEqual(Inflector::singularize('gloves'), 'glove');
  108. $this->assertEqual(Inflector::singularize('doves'), 'dove');
  109. $this->assertEqual(Inflector::singularize('lives'), 'life');
  110. $this->assertEqual(Inflector::singularize('knives'), 'knife');
  111. $this->assertEqual(Inflector::singularize('wolves'), 'wolf');
  112. $this->assertEqual(Inflector::singularize('shelves'), 'shelf');
  113. $this->assertEqual(Inflector::singularize('taxis'), 'taxi');
  114. $this->assertEqual(Inflector::singularize('taxes'), 'tax');
  115. $this->assertEqual(Inflector::singularize('faxes'), 'fax');
  116. $this->assertEqual(Inflector::singularize('waxes'), 'wax');
  117. $this->assertEqual(Inflector::singularize(''), '');
  118. }
  119. /**
  120. * testInflectingPlurals method
  121. *
  122. * @access public
  123. * @return void
  124. */
  125. function testInflectingPlurals() {
  126. $this->assertEqual(Inflector::pluralize('categoria'), 'categorias');
  127. $this->assertEqual(Inflector::pluralize('house'), 'houses');
  128. $this->assertEqual(Inflector::pluralize('powerhouse'), 'powerhouses');
  129. $this->assertEqual(Inflector::pluralize('Bus'), 'Buses');
  130. $this->assertEqual(Inflector::pluralize('bus'), 'buses');
  131. $this->assertEqual(Inflector::pluralize('menu'), 'menus');
  132. $this->assertEqual(Inflector::pluralize('news'), 'news');
  133. $this->assertEqual(Inflector::pluralize('food_menu'), 'food_menus');
  134. $this->assertEqual(Inflector::pluralize('Menu'), 'Menus');
  135. $this->assertEqual(Inflector::pluralize('FoodMenu'), 'FoodMenus');
  136. $this->assertEqual(Inflector::pluralize('quiz'), 'quizzes');
  137. $this->assertEqual(Inflector::pluralize('matrix_row'), 'matrix_rows');
  138. $this->assertEqual(Inflector::pluralize('matrix'), 'matrices');
  139. $this->assertEqual(Inflector::pluralize('vertex'), 'vertices');
  140. $this->assertEqual(Inflector::pluralize('index'), 'indices');
  141. $this->assertEqual(Inflector::pluralize('Alias'), 'Aliases');
  142. $this->assertEqual(Inflector::pluralize('Aliases'), 'Aliases');
  143. $this->assertEqual(Inflector::pluralize('Media'), 'Media');
  144. $this->assertEqual(Inflector::pluralize('alumnus'), 'alumni');
  145. $this->assertEqual(Inflector::pluralize('bacillus'), 'bacilli');
  146. $this->assertEqual(Inflector::pluralize('cactus'), 'cacti');
  147. $this->assertEqual(Inflector::pluralize('focus'), 'foci');
  148. $this->assertEqual(Inflector::pluralize('fungus'), 'fungi');
  149. $this->assertEqual(Inflector::pluralize('nucleus'), 'nuclei');
  150. $this->assertEqual(Inflector::pluralize('octopus'), 'octopuses');
  151. $this->assertEqual(Inflector::pluralize('radius'), 'radii');
  152. $this->assertEqual(Inflector::pluralize('stimulus'), 'stimuli');
  153. $this->assertEqual(Inflector::pluralize('syllabus'), 'syllabi');
  154. $this->assertEqual(Inflector::pluralize('terminus'), 'termini');
  155. $this->assertEqual(Inflector::pluralize('virus'), 'viri');
  156. $this->assertEqual(Inflector::pluralize('person'), 'people');
  157. $this->assertEqual(Inflector::pluralize('people'), 'people');
  158. $this->assertEqual(Inflector::pluralize('glove'), 'gloves');
  159. $this->assertEqual(Inflector::pluralize('crisis'), 'crises');
  160. $this->assertEqual(Inflector::pluralize(''), '');
  161. }
  162. /**
  163. * testInflectorSlug method
  164. *
  165. * @access public
  166. * @return void
  167. */
  168. function testInflectorSlug() {
  169. $result = Inflector::slug('Foo Bar: Not just for breakfast any-more');
  170. $expected = 'Foo_Bar_Not_just_for_breakfast_any_more';
  171. $this->assertEqual($result, $expected);
  172. $result = Inflector::slug('this/is/a/path');
  173. $expected = 'this_is_a_path';
  174. $this->assertEqual($result, $expected);
  175. $result = Inflector::slug('Foo Bar: Not just for breakfast any-more', "-");
  176. $expected = 'Foo-Bar-Not-just-for-breakfast-any-more';
  177. $this->assertEqual($result, $expected);
  178. $result = Inflector::slug('Foo Bar: Not just for breakfast any-more', "+");
  179. $expected = 'Foo+Bar+Not+just+for+breakfast+any+more';
  180. $this->assertEqual($result, $expected);
  181. $result = Inflector::slug('Äpfel Über Öl grün ärgert groß öko', '-');
  182. $expected = 'Aepfel-Ueber-Oel-gruen-aergert-gross-oeko';
  183. $this->assertEqual($result, $expected);
  184. $result = Inflector::slug('The truth - and- more- news', '-');
  185. $expected = 'The-truth-and-more-news';
  186. $this->assertEqual($result, $expected);
  187. $result = Inflector::slug('The truth: and more news', '-');
  188. $expected = 'The-truth-and-more-news';
  189. $this->assertEqual($result, $expected);
  190. $result = Inflector::slug('La langue française est un attribut de souveraineté en France', '-');
  191. $expected = 'La-langue-francaise-est-un-attribut-de-souverainete-en-France';
  192. $this->assertEqual($result, $expected);
  193. $result = Inflector::slug('!@$#exciting stuff! - what !@-# was that?', '-');
  194. $expected = 'exciting-stuff-what-was-that';
  195. $this->assertEqual($result, $expected);
  196. $result = Inflector::slug('20% of profits went to me!', '-');
  197. $expected = '20-of-profits-went-to-me';
  198. $this->assertEqual($result, $expected);
  199. $result = Inflector::slug('#this melts your face1#2#3', '-');
  200. $expected = 'this-melts-your-face1-2-3';
  201. $this->assertEqual($result, $expected);
  202. }
  203. /**
  204. * testVariableNaming method
  205. *
  206. * @access public
  207. * @return void
  208. */
  209. function testVariableNaming() {
  210. $this->assertEqual(Inflector::variable('test_field'), 'testField');
  211. $this->assertEqual(Inflector::variable('test_fieLd'), 'testFieLd');
  212. $this->assertEqual(Inflector::variable('test field'), 'testField');
  213. $this->assertEqual(Inflector::variable('Test_field'), 'testField');
  214. }
  215. /**
  216. * testClassNaming method
  217. *
  218. * @access public
  219. * @return void
  220. */
  221. function testClassNaming() {
  222. $this->assertEqual(Inflector::classify('artists_genres'), 'ArtistsGenre');
  223. $this->assertEqual(Inflector::classify('file_systems'), 'FileSystem');
  224. $this->assertEqual(Inflector::classify('news'), 'News');
  225. }
  226. /**
  227. * testTableNaming method
  228. *
  229. * @access public
  230. * @return void
  231. */
  232. function testTableNaming() {
  233. $this->assertEqual(Inflector::tableize('ArtistsGenre'), 'artists_genres');
  234. $this->assertEqual(Inflector::tableize('FileSystem'), 'file_systems');
  235. $this->assertEqual(Inflector::tableize('News'), 'news');
  236. }
  237. /**
  238. * testHumanization method
  239. *
  240. * @access public
  241. * @return void
  242. */
  243. function testHumanization() {
  244. $this->assertEqual(Inflector::humanize('posts'), 'Posts');
  245. $this->assertEqual(Inflector::humanize('posts_tags'), 'Posts Tags');
  246. $this->assertEqual(Inflector::humanize('file_systems'), 'File Systems');
  247. }
  248. }
  249. ?>