/tests/suite/joomla/string/JStringTest.php

https://github.com/katalystsol/joomla-platform · PHP · 613 lines · 280 code · 52 blank · 281 comment · 15 complexity · 768e4d0650e31f14d2cabda4452ade19 MD5 · raw file

  1. <?php
  2. /**
  3. * @package Joomla.UnitTest
  4. * @subpackage Utilities
  5. *
  6. * @copyright Copyright (C) 2005 - 2011 Open Source Matters, Inc. All rights reserved.
  7. * @license GNU General Public License version 2 or later; see LICENSE
  8. */
  9. require_once JPATH_PLATFORM . '/joomla/string/string.php';
  10. require_once 'TestHelpers/JString-helper-dataset.php';
  11. /**
  12. * Test class for JString.
  13. * Generated by PHPUnit on 2009-10-26 at 22:29:34.
  14. */
  15. class JStringTest extends PHPUnit_Framework_TestCase
  16. {
  17. /**
  18. * @var JString
  19. * @since 11.2
  20. */
  21. protected $object;
  22. /**
  23. * @return array
  24. *
  25. * @since 11.2
  26. */
  27. public function getIncrementData()
  28. {
  29. return JStringTest_DataSet::$increment;
  30. }
  31. /**
  32. * @return array
  33. *
  34. * @since 11.2
  35. */
  36. public function getStrposData()
  37. {
  38. return JStringTest_DataSet::$strposTests;
  39. }
  40. /**
  41. * @return array
  42. *
  43. * @since 11.2
  44. */
  45. public function getStrrposData()
  46. {
  47. return JStringTest_DataSet::$strrposTests;
  48. }
  49. /**
  50. * @return array
  51. *
  52. * @since 11.2
  53. */
  54. public function getSubstrData()
  55. {
  56. return JStringTest_DataSet::$substrTests;
  57. }
  58. /**
  59. * @return array
  60. *
  61. * @since 11.2
  62. */
  63. public function getStrtolowerData()
  64. {
  65. return JStringTest_DataSet::$strtolowerTests;
  66. }
  67. /**
  68. * @return array
  69. *
  70. * @since 11.2
  71. */
  72. public function getStrtoupperData()
  73. {
  74. return JStringTest_DataSet::$strtoupperTests;
  75. }
  76. /**
  77. * @return array
  78. *
  79. * @since 11.2
  80. */
  81. public function getStrlenData()
  82. {
  83. return JStringTest_DataSet::$strlenTests;
  84. }
  85. /**
  86. * @return array
  87. *
  88. * @since 11.2
  89. */
  90. public function getStr_ireplaceData()
  91. {
  92. return JStringTest_DataSet::$str_ireplaceTests;
  93. }
  94. /**
  95. * @return array
  96. *
  97. * @since 11.2
  98. */
  99. public function getStr_splitData()
  100. {
  101. return JStringTest_DataSet::$str_splitTests;
  102. }
  103. /**
  104. * @return array
  105. *
  106. * @since 11.2
  107. */
  108. public function getStrcasecmpData()
  109. {
  110. return JStringTest_DataSet::$strcasecmpTests;
  111. }
  112. /**
  113. * @return array
  114. *
  115. * @since 11.2
  116. */
  117. public function getStrcmpData()
  118. {
  119. return JStringTest_DataSet::$strcmpTests;
  120. }
  121. /**
  122. * @return array
  123. *
  124. * @since 11.2
  125. */
  126. public function getStrcspnData()
  127. {
  128. return JStringTest_DataSet::$strcspnTests;
  129. }
  130. /**
  131. * @return array
  132. *
  133. * @since 11.2
  134. */
  135. public function getStristrData()
  136. {
  137. return JStringTest_DataSet::$stristrTests;
  138. }
  139. /**
  140. * @return array
  141. *
  142. * @since 11.2
  143. */
  144. public function getStrrevData()
  145. {
  146. return JStringTest_DataSet::$strrevTests;
  147. }
  148. /**
  149. * @return array
  150. *
  151. * @since 11.2
  152. */
  153. public function getStrspnData()
  154. {
  155. return JStringTest_DataSet::$strspnTests;
  156. }
  157. /**
  158. * @return array
  159. *
  160. * @since 11.2
  161. */
  162. public function getSubstr_replaceData()
  163. {
  164. return JStringTest_DataSet::$substr_replaceTests;
  165. }
  166. /**
  167. * @return array
  168. *
  169. * @since 11.2
  170. */
  171. public function getLtrimData()
  172. {
  173. return JStringTest_DataSet::$ltrimTests;
  174. }
  175. /**
  176. * @return array
  177. *
  178. * @since 11.2
  179. */
  180. public function getRtrimData()
  181. {
  182. return JStringTest_DataSet::$rtrimTests;
  183. }
  184. /**
  185. * @return array
  186. *
  187. * @since 11.2
  188. */
  189. public function getTrimData()
  190. {
  191. return JStringTest_DataSet::$trimTests;
  192. }
  193. /**
  194. * @return array
  195. *
  196. * @since 11.2
  197. */
  198. public function getUcfirstData()
  199. {
  200. return JStringTest_DataSet::$ucfirstTests;
  201. }
  202. /**
  203. * @return array
  204. *
  205. * @since 11.2
  206. */
  207. public function getUcwordsData()
  208. {
  209. return JStringTest_DataSet::$ucwordsTests;
  210. }
  211. /**
  212. * @return array
  213. *
  214. * @since 11.2
  215. */
  216. public function getTranscodeData()
  217. {
  218. return JStringTest_DataSet::$transcodeTests;
  219. }
  220. /**
  221. * @return array
  222. *
  223. * @since 11.2
  224. */
  225. public function getValidData()
  226. {
  227. return JStringTest_DataSet::$validTests;
  228. }
  229. /**
  230. * @return void
  231. *
  232. * @dataProvider getIncrementData
  233. * @since 11.2
  234. */
  235. public function testIncrement($string, $style, $number, $expected)
  236. {
  237. $this->assertThat(
  238. JString::increment($string, $style, $number),
  239. $this->equalTo($expected)
  240. );
  241. }
  242. /**
  243. * @return void
  244. *
  245. * @dataProvider getStrposData
  246. * @since 11.2
  247. */
  248. public function testStrpos($haystack, $needle, $offset = 0, $expect)
  249. {
  250. $actual = JString::strpos($haystack, $needle, $offset);
  251. $this->assertEquals($expect, $actual);
  252. }
  253. /**
  254. * @return array
  255. *
  256. * @dataProvider getStrrposData
  257. * @since 11.2
  258. */
  259. public function testStrrpos($haystack, $needle, $offset = 0, $expect)
  260. {
  261. $actual = JString::strrpos($haystack, $needle, $offset);
  262. $this->assertEquals($expect, $actual);
  263. }
  264. /**
  265. * @return array
  266. *
  267. * @dataProvider getSubstrData
  268. * @since 11.2
  269. */
  270. public function testSubstr($string, $start, $length = false, $expect)
  271. {
  272. $actual = JString::substr($string, $start, $length);
  273. $this->assertEquals($expect, $actual);
  274. }
  275. /**
  276. * @return array
  277. *
  278. * @dataProvider getStrtolowerData
  279. * @since 11.2
  280. */
  281. public function testStrtolower($string, $expect)
  282. {
  283. $actual = JString::strtolower($string);
  284. $this->assertEquals($expect, $actual);
  285. }
  286. /**
  287. * @return array
  288. *
  289. * @dataProvider getStrtoupperData
  290. * @since 11.2
  291. */
  292. public function testStrtoupper($string, $expect)
  293. {
  294. $actual = JString::strtoupper($string);
  295. $this->assertEquals($expect, $actual);
  296. }
  297. /**
  298. * @return array
  299. *
  300. * @dataProvider getStrlenData
  301. * @since 11.2
  302. */
  303. public function testStrlen($string, $expect)
  304. {
  305. $actual = JString::strlen($string);
  306. $this->assertEquals($expect, $actual);
  307. }
  308. /**
  309. * @return array
  310. *
  311. * @dataProvider getStr_ireplaceData
  312. * @since 11.2
  313. */
  314. public function testStr_ireplace($search, $replace, $subject, $count, $expect)
  315. {
  316. $actual = JString::str_ireplace($search, $replace, $subject, $count);
  317. $this->assertEquals($expect, $actual);
  318. }
  319. /**
  320. * @return array
  321. *
  322. * @dataProvider getStr_splitData
  323. * @since 11.2
  324. */
  325. public function testStr_split($string, $split_length, $expect)
  326. {
  327. $actual = JString::str_split($string, $split_length);
  328. $this->assertEquals($expect, $actual);
  329. }
  330. /**
  331. * @return array
  332. *
  333. * @dataProvider getStrcasecmpData
  334. * @since 11.2
  335. */
  336. public function testStrcasecmp($string1, $string2, $locale, $expect)
  337. {
  338. if (substr(php_uname(), 0, 6) == 'Darwin' && $locale != false)
  339. {
  340. $this->markTestSkipped('Darwin bug prevents foreign conversion from working properly');
  341. }
  342. else
  343. {
  344. $actual = JString::strcasecmp($string1, $string2, $locale);
  345. if ($actual != 0)
  346. {
  347. $actual = $actual / abs($actual);
  348. }
  349. $this->assertEquals($expect, $actual);
  350. }
  351. }
  352. /**
  353. * @return array
  354. *
  355. * @dataProvider getStrcmpData
  356. * @since 11.2
  357. */
  358. public function testStrcmp($string1, $string2, $locale, $expect)
  359. {
  360. if (substr(php_uname(), 0, 6) == 'Darwin' && $locale != false)
  361. {
  362. $this->markTestSkipped('Darwin bug prevents foreign conversion from working properly');
  363. }
  364. else
  365. {
  366. $actual = JString::strcmp($string1, $string2, $locale);
  367. if ($actual != 0)
  368. {
  369. $actual = $actual / abs($actual);
  370. }
  371. $this->assertEquals($expect, $actual);
  372. }
  373. }
  374. /**
  375. * @return array
  376. *
  377. * @dataProvider getStrcspnData
  378. * @since 11.2
  379. */
  380. public function testStrcspn($haystack, $needles, $start, $len, $expect)
  381. {
  382. $actual = JString::strcspn($haystack, $needles, $start, $len);
  383. $this->assertEquals($expect, $actual);
  384. }
  385. /**
  386. * @return array
  387. *
  388. * @dataProvider getStristrData
  389. * @since 11.2
  390. */
  391. public function testStristr($haystack, $needle, $expect)
  392. {
  393. $actual = JString::stristr($haystack, $needle);
  394. $this->assertEquals($expect, $actual);
  395. }
  396. /**
  397. * @return array
  398. *
  399. * @dataProvider getStrrevData
  400. * @since 11.2
  401. */
  402. public function testStrrev($string, $expect)
  403. {
  404. $actual = JString::strrev($string);
  405. $this->assertEquals($expect, $actual);
  406. }
  407. /**
  408. * @return array
  409. *
  410. * @dataProvider getStrspnData
  411. * @since 11.2
  412. */
  413. public function testStrspn($subject, $mask, $start, $length, $expect)
  414. {
  415. $actual = JString::strspn($subject, $mask, $start, $length);
  416. $this->assertEquals($expect, $actual);
  417. }
  418. /**
  419. * @return array
  420. *
  421. * @dataProvider getSubstr_replaceData
  422. * @since 11.2
  423. */
  424. public function testSubstr_replace($string, $replacement, $start, $length, $expect)
  425. {
  426. $actual = JString::substr_replace($string, $replacement, $start, $length);
  427. $this->assertEquals($expect, $actual);
  428. }
  429. /**
  430. * @return array
  431. *
  432. * @dataProvider getLtrimData
  433. * @since 11.2
  434. */
  435. public function testLtrim($string, $charlist, $expect)
  436. {
  437. if ($charlist === null)
  438. {
  439. $actual = JString::ltrim($string);
  440. }
  441. else
  442. {
  443. $actual = JString::ltrim($string, $charlist);
  444. }
  445. $this->assertEquals($expect, $actual);
  446. }
  447. /**
  448. * @return array
  449. *
  450. * @dataProvider getRtrimData
  451. * @since 11.2
  452. */
  453. public function testRtrim($string, $charlist, $expect)
  454. {
  455. if ($charlist === null)
  456. {
  457. $actual = JString::rtrim($string);
  458. }
  459. else
  460. {
  461. $actual = JString::rtrim($string, $charlist);
  462. }
  463. $this->assertEquals($expect, $actual);
  464. }
  465. /**
  466. * @return array
  467. *
  468. * @dataProvider getTrimData
  469. * @since 11.2
  470. */
  471. public function testTrim($string, $charlist, $expect)
  472. {
  473. if ($charlist === null)
  474. {
  475. $actual = JString::trim($string);
  476. }
  477. else
  478. {
  479. $actual = JString::trim($string, $charlist);
  480. }
  481. $this->assertEquals($expect, $actual);
  482. }
  483. /**
  484. * @return array
  485. *
  486. * @dataProvider getUcfirstData
  487. * @since 11.2
  488. */
  489. public function testUcfirst($string, $expect)
  490. {
  491. $actual = JString::ucfirst($string);
  492. $this->assertEquals($expect, $actual);
  493. }
  494. /**
  495. * @return array
  496. *
  497. * @dataProvider getUcwordsData
  498. * @since 11.2
  499. */
  500. public function testUcwords($string, $expect)
  501. {
  502. $actual = JString::ucwords($string);
  503. $this->assertEquals($expect, $actual);
  504. }
  505. /**
  506. * @return array
  507. *
  508. * @dataProvider getTranscodeData
  509. * @since 11.2
  510. */
  511. public function testTranscode($source, $from_encoding, $to_encoding, $expect)
  512. {
  513. $actual = JString::transcode($source, $from_encoding, $to_encoding);
  514. $this->assertEquals($expect, $actual);
  515. }
  516. /**
  517. * @return array
  518. *
  519. * @dataProvider getValidData
  520. * @since 11.2
  521. */
  522. public function testValid($string, $expect)
  523. {
  524. $actual = JString::valid($string);
  525. $this->assertEquals($expect, $actual);
  526. }
  527. /**
  528. * @return array
  529. *
  530. * @dataProvider getValidData
  531. * @since 11.2
  532. */
  533. public function testCompliant($string, $expect)
  534. {
  535. $actual = JString::compliant($string);
  536. $this->assertEquals($expect, $actual);
  537. }
  538. /**
  539. * @return array
  540. *
  541. * @since 11.2
  542. */
  543. public function testParse_Url()
  544. {
  545. $url = 'http://localhost/joomla_development/j16_trunk/administrator/index.php?option=com_contact&view=contact&layout=edit&id=5';
  546. $expected = parse_url($url);
  547. $actual = JString::parse_url($url);
  548. $this->assertEquals($expected, $actual, 'Line: ' . __LINE__ . ' Results should be equal');
  549. $url = 'http://joomla.org/mytestpath/È';
  550. $expected = parse_url($url);
  551. // Fix up path for UTF-8 characters
  552. $expected['path'] = '/mytestpath/È';
  553. $actual = JString::parse_url($url);
  554. $this->assertEquals($expected, $actual, 'Line: ' . __LINE__ . ' Results should be equal');
  555. // Test special characters in URL
  556. $url = 'http://mydomain.com/!*\'();:@&=+$,/?%#[]';
  557. $expected = parse_url($url);
  558. $actual = JString::parse_url($url);
  559. $this->assertEquals($expected, $actual, 'Line: ' . __LINE__ . ' Results should be equal');
  560. }
  561. }