PageRenderTime 66ms CodeModel.GetById 19ms RepoModel.GetById 12ms app.codeStats 0ms

/vendor/danielstjules/stringy/tests/StaticStringyTest.php

https://gitlab.com/puntodos/ean-landings
PHP | 710 lines | 437 code | 71 blank | 202 comment | 1 complexity | e56968215a8b2585939dc23f3effb597 MD5 | raw file
  1. <?php
  2. require __DIR__ . '/../src/StaticStringy.php';
  3. use Stringy\StaticStringy as S;
  4. class StaticStringyTestCase extends CommonTest
  5. {
  6. /**
  7. * @dataProvider indexOfProvider()
  8. */
  9. public function testIndexOf($expected, $str, $subStr, $offset = 0, $encoding = null)
  10. {
  11. $result = S::indexOf($str, $subStr, $offset, $encoding);
  12. $this->assertEquals($expected, $result);
  13. }
  14. /**
  15. * @dataProvider indexOfLastProvider()
  16. */
  17. public function testIndexOfLast($expected, $str, $subStr, $offset = 0, $encoding = null)
  18. {
  19. $result = S::indexOfLast($str, $subStr, $offset, $encoding);
  20. $this->assertEquals($expected, $result);
  21. }
  22. /**
  23. * @dataProvider charsProvider()
  24. */
  25. public function testChars($expected, $str, $encoding = null)
  26. {
  27. $result = S::chars($str, $encoding);
  28. $this->assertInternalType('array', $result);
  29. foreach ($result as $char) {
  30. $this->assertInternalType('string', $char);
  31. }
  32. $this->assertEquals($expected, $result);
  33. }
  34. /**
  35. * @dataProvider upperCaseFirstProvider()
  36. */
  37. public function testUpperCaseFirst($expected, $str, $encoding = null)
  38. {
  39. $result = S::upperCaseFirst($str, $encoding);
  40. $this->assertInternalType('string', $result);
  41. $this->assertEquals($expected, $result);
  42. }
  43. /**
  44. * @dataProvider lowerCaseFirstProvider()
  45. */
  46. public function testLowerCaseFirst($expected, $str, $encoding = null)
  47. {
  48. $result = S::lowerCaseFirst($str, $encoding);
  49. $this->assertInternalType('string', $result);
  50. $this->assertEquals($expected, $result);
  51. }
  52. /**
  53. * @dataProvider camelizeProvider()
  54. */
  55. public function testCamelize($expected, $str, $encoding = null)
  56. {
  57. $result = S::camelize($str, $encoding);
  58. $this->assertInternalType('string', $result);
  59. $this->assertEquals($expected, $result);
  60. }
  61. /**
  62. * @dataProvider upperCamelizeProvider()
  63. */
  64. public function testUpperCamelize($expected, $str, $encoding = null)
  65. {
  66. $result = S::upperCamelize($str, $encoding);
  67. $this->assertInternalType('string', $result);
  68. $this->assertEquals($expected, $result);
  69. }
  70. /**
  71. * @dataProvider dasherizeProvider()
  72. */
  73. public function testDasherize($expected, $str, $encoding = null)
  74. {
  75. $result = S::dasherize($str, $encoding);
  76. $this->assertInternalType('string', $result);
  77. $this->assertEquals($expected, $result);
  78. }
  79. /**
  80. * @dataProvider underscoredProvider()
  81. */
  82. public function testUnderscored($expected, $str, $encoding = null)
  83. {
  84. $result = S::underscored($str, $encoding);
  85. $this->assertInternalType('string', $result);
  86. $this->assertEquals($expected, $result);
  87. }
  88. /**
  89. * @dataProvider swapCaseProvider()
  90. */
  91. public function testSwapCase($expected, $str, $encoding = null)
  92. {
  93. $result = S::swapCase($str, $encoding);
  94. $this->assertInternalType('string', $result);
  95. $this->assertEquals($expected, $result);
  96. }
  97. /**
  98. * @dataProvider titleizeProvider()
  99. */
  100. public function testTitleize($expected, $str, $ignore = null,
  101. $encoding = null)
  102. {
  103. $result = S::titleize($str, $ignore, $encoding);
  104. $this->assertInternalType('string', $result);
  105. $this->assertEquals($expected, $result);
  106. }
  107. /**
  108. * @dataProvider humanizeProvider()
  109. */
  110. public function testHumanize($expected, $str, $encoding = null)
  111. {
  112. $result = S::humanize($str, $encoding);
  113. $this->assertInternalType('string', $result);
  114. $this->assertEquals($expected, $result);
  115. }
  116. /**
  117. * @dataProvider tidyProvider()
  118. */
  119. public function testTidy($expected, $str)
  120. {
  121. $result = S::tidy($str);
  122. $this->assertInternalType('string', $result);
  123. $this->assertEquals($expected, $result);
  124. }
  125. /**
  126. * @dataProvider collapseWhitespaceProvider()
  127. */
  128. public function testCollapseWhitespace($expected, $str, $encoding = null)
  129. {
  130. $result = S::collapseWhitespace($str, $encoding);
  131. $this->assertInternalType('string', $result);
  132. $this->assertEquals($expected, $result);
  133. }
  134. /**
  135. * @dataProvider toAsciiProvider()
  136. */
  137. public function testToAscii($expected, $str, $removeUnsupported = true)
  138. {
  139. $result = S::toAscii($str, $removeUnsupported);
  140. $this->assertInternalType('string', $result);
  141. $this->assertEquals($expected, $result);
  142. }
  143. /**
  144. * @dataProvider padProvider()
  145. */
  146. public function testPad($expected, $str, $length, $padStr = ' ',
  147. $padType = 'right', $encoding = null)
  148. {
  149. $result = S::pad($str, $length, $padStr, $padType, $encoding);
  150. $this->assertInternalType('string', $result);
  151. $this->assertEquals($expected, $result);
  152. }
  153. /**
  154. * @expectedException \InvalidArgumentException
  155. */
  156. public function testPadException()
  157. {
  158. $result = S::pad('string', 5, 'foo', 'bar');
  159. }
  160. /**
  161. * @dataProvider padLeftProvider()
  162. */
  163. public function testPadLeft($expected, $str, $length, $padStr = ' ',
  164. $encoding = null)
  165. {
  166. $result = S::padLeft($str, $length, $padStr, $encoding);
  167. $this->assertInternalType('string', $result);
  168. $this->assertEquals($expected, $result);
  169. }
  170. /**
  171. * @dataProvider padRightProvider()
  172. */
  173. public function testPadRight($expected, $str, $length, $padStr = ' ',
  174. $encoding = null)
  175. {
  176. $result = S::padRight($str, $length, $padStr, $encoding);
  177. $this->assertInternalType('string', $result);
  178. $this->assertEquals($expected, $result);
  179. }
  180. /**
  181. * @dataProvider padBothProvider()
  182. */
  183. public function testPadBoth($expected, $str, $length, $padStr = ' ',
  184. $encoding = null)
  185. {
  186. $result = S::padBoth($str, $length, $padStr, $encoding);
  187. $this->assertInternalType('string', $result);
  188. $this->assertEquals($expected, $result);
  189. }
  190. /**
  191. * @dataProvider startsWithProvider()
  192. */
  193. public function testStartsWith($expected, $str, $substring,
  194. $caseSensitive = true, $encoding = null)
  195. {
  196. $result = S::startsWith($str, $substring, $caseSensitive, $encoding);
  197. $this->assertInternalType('boolean', $result);
  198. $this->assertEquals($expected, $result);
  199. }
  200. /**
  201. * @dataProvider endsWithProvider()
  202. */
  203. public function testEndsWith($expected, $str, $substring,
  204. $caseSensitive = true, $encoding = null)
  205. {
  206. $result = S::endsWith($str, $substring, $caseSensitive, $encoding);
  207. $this->assertInternalType('boolean', $result);
  208. $this->assertEquals($expected, $result);
  209. }
  210. /**
  211. * @dataProvider toSpacesProvider()
  212. */
  213. public function testToSpaces($expected, $str, $tabLength = 4)
  214. {
  215. $result = S::toSpaces($str, $tabLength);
  216. $this->assertInternalType('string', $result);
  217. $this->assertEquals($expected, $result);
  218. }
  219. /**
  220. * @dataProvider toTabsProvider()
  221. */
  222. public function testToTabs($expected, $str, $tabLength = 4)
  223. {
  224. $result = S::toTabs($str, $tabLength);
  225. $this->assertInternalType('string', $result);
  226. $this->assertEquals($expected, $result);
  227. }
  228. /**
  229. * @dataProvider toLowerCaseProvider()
  230. */
  231. public function testToLowerCase($expected, $str, $encoding = null)
  232. {
  233. $result = S::toLowerCase($str, $encoding);
  234. $this->assertInternalType('string', $result);
  235. $this->assertEquals($expected, $result);
  236. }
  237. /**
  238. * @dataProvider toTitleCaseProvider()
  239. */
  240. public function testToTitleCase($expected, $str, $encoding = null)
  241. {
  242. $result = S::toTitleCase($str, $encoding);
  243. $this->assertInternalType('string', $result);
  244. $this->assertEquals($expected, $result);
  245. }
  246. /**
  247. * @dataProvider toUpperCaseProvider()
  248. */
  249. public function testToUpperCase($expected, $str, $encoding = null)
  250. {
  251. $result = S::toUpperCase($str, $encoding);
  252. $this->assertInternalType('string', $result);
  253. $this->assertEquals($expected, $result);
  254. }
  255. /**
  256. * @dataProvider slugifyProvider()
  257. */
  258. public function testSlugify($expected, $str, $replacement = '-')
  259. {
  260. $result = S::slugify($str, $replacement);
  261. $this->assertInternalType('string', $result);
  262. $this->assertEquals($expected, $result);
  263. }
  264. /**
  265. * @dataProvider containsProvider()
  266. */
  267. public function testContains($expected, $haystack, $needle,
  268. $caseSensitive = true, $encoding = null)
  269. {
  270. $result = S::contains($haystack, $needle, $caseSensitive, $encoding);
  271. $this->assertInternalType('boolean', $result);
  272. $this->assertEquals($expected, $result);
  273. }
  274. /**
  275. * @dataProvider containsAnyProvider()
  276. */
  277. public function testcontainsAny($expected, $haystack, $needles,
  278. $caseSensitive = true, $encoding = null)
  279. {
  280. $result = S::containsAny($haystack, $needles, $caseSensitive, $encoding);
  281. $this->assertInternalType('boolean', $result);
  282. $this->assertEquals($expected, $result);
  283. }
  284. /**
  285. * @dataProvider containsAllProvider()
  286. */
  287. public function testContainsAll($expected, $haystack, $needles,
  288. $caseSensitive = true, $encoding = null)
  289. {
  290. $result = S::containsAll($haystack, $needles, $caseSensitive, $encoding);
  291. $this->assertInternalType('boolean', $result);
  292. $this->assertEquals($expected, $result);
  293. }
  294. /**
  295. * @dataProvider surroundProvider()
  296. */
  297. public function testSurround($expected, $str, $substring)
  298. {
  299. $result = S::surround($str, $substring);
  300. $this->assertInternalType('string', $result);
  301. $this->assertEquals($expected, $result);
  302. }
  303. /**
  304. * @dataProvider insertProvider()
  305. */
  306. public function testInsert($expected, $str, $substring, $index,
  307. $encoding = null)
  308. {
  309. $result = S::insert($str, $substring, $index, $encoding);
  310. $this->assertInternalType('string', $result);
  311. $this->assertEquals($expected, $result);
  312. }
  313. /**
  314. * @dataProvider truncateProvider()
  315. */
  316. public function testTruncate($expected, $str, $length, $substring = '',
  317. $encoding = null)
  318. {
  319. $result = S::truncate($str, $length, $substring, $encoding);
  320. $this->assertInternalType('string', $result);
  321. $this->assertEquals($expected, $result);
  322. }
  323. /**
  324. * @dataProvider safeTruncateProvider()
  325. */
  326. public function testSafeTruncate($expected, $str, $length, $substring = '',
  327. $encoding = null)
  328. {
  329. $result = S::safeTruncate($str, $length, $substring, $encoding);
  330. $this->assertInternalType('string', $result);
  331. $this->assertEquals($expected, $result);
  332. }
  333. /**
  334. * @dataProvider reverseProvider()
  335. */
  336. public function testReverse($expected, $str, $encoding = null)
  337. {
  338. $result = S::reverse($str, $encoding);
  339. $this->assertInternalType('string', $result);
  340. $this->assertEquals($expected, $result);
  341. }
  342. /**
  343. * @dataProvider shuffleProvider()
  344. */
  345. public function testShuffle($str, $encoding = null)
  346. {
  347. $result = S::shuffle($str, $encoding);
  348. $encoding = $encoding ?: mb_internal_encoding();
  349. $this->assertInternalType('string', $result);
  350. $this->assertEquals(mb_strlen($str, $encoding),
  351. mb_strlen($result, $encoding));
  352. // We'll make sure that the chars are present after shuffle
  353. for ($i = 0; $i < mb_strlen($str, $encoding); $i++) {
  354. $char = mb_substr($str, $i, 1, $encoding);
  355. $countBefore = mb_substr_count($str, $char, $encoding);
  356. $countAfter = mb_substr_count($result, $char, $encoding);
  357. $this->assertEquals($countBefore, $countAfter);
  358. }
  359. }
  360. /**
  361. * @dataProvider trimProvider()
  362. */
  363. public function testTrim($expected, $str, $chars = null, $encoding = null)
  364. {
  365. $result = S::trim($str, $chars, $encoding);
  366. $this->assertInternalType('string', $result);
  367. $this->assertEquals($expected, $result);
  368. }
  369. /**
  370. * @dataProvider trimLeftProvider()
  371. */
  372. public function testTrimLeft($expected, $str, $chars = null,
  373. $encoding = null)
  374. {
  375. $result = S::trimLeft($str, $chars, $encoding);
  376. $this->assertInternalType('string', $result);
  377. $this->assertEquals($expected, $result);
  378. }
  379. /**
  380. * @dataProvider trimRightProvider()
  381. */
  382. public function testTrimRight($expected, $str, $chars = null,
  383. $encoding = null)
  384. {
  385. $result = S::trimRight($str, $chars, $encoding);
  386. $this->assertInternalType('string', $result);
  387. $this->assertEquals($expected, $result);
  388. }
  389. /**
  390. * @dataProvider longestCommonPrefixProvider()
  391. */
  392. public function testLongestCommonPrefix($expected, $str, $otherStr,
  393. $encoding = null)
  394. {
  395. $result = S::longestCommonPrefix($str, $otherStr, $encoding);
  396. $this->assertInternalType('string', $result);
  397. $this->assertEquals($expected, $result);
  398. }
  399. /**
  400. * @dataProvider longestCommonSuffixProvider()
  401. */
  402. public function testLongestCommonSuffix($expected, $str, $otherStr,
  403. $encoding = null)
  404. {
  405. $result = S::longestCommonSuffix($str, $otherStr, $encoding);
  406. $this->assertInternalType('string', $result);
  407. $this->assertEquals($expected, $result);
  408. }
  409. /**
  410. * @dataProvider longestCommonSubstringProvider()
  411. */
  412. public function testLongestCommonSubstring($expected, $str, $otherStr,
  413. $encoding = null)
  414. {
  415. $result = S::longestCommonSubstring($str, $otherStr, $encoding);
  416. $this->assertInternalType('string', $result);
  417. $this->assertEquals($expected, $result);
  418. }
  419. /**
  420. * @dataProvider lengthProvider()
  421. */
  422. public function testLength($expected, $str, $encoding = null)
  423. {
  424. $result = S::length($str, $encoding);
  425. $this->assertEquals($expected, $result);
  426. $this->assertInternalType('int', $result);
  427. }
  428. /**
  429. * @dataProvider substrProvider()
  430. */
  431. public function testSubstr($expected, $str, $start, $length = null,
  432. $encoding = null)
  433. {
  434. $result = S::substr($str, $start, $length, $encoding);
  435. $this->assertInternalType('string', $result);
  436. $this->assertEquals($expected, $result);
  437. }
  438. /**
  439. * @dataProvider atProvider()
  440. */
  441. public function testAt($expected, $str, $index, $encoding = null)
  442. {
  443. $result = S::at($str, $index, $encoding);
  444. $this->assertInternalType('string', $result);
  445. $this->assertEquals($expected, $result);
  446. }
  447. /**
  448. * @dataProvider firstProvider()
  449. */
  450. public function testFirst($expected, $str, $n, $encoding = null)
  451. {
  452. $result = S::first($str, $n, $encoding);
  453. $this->assertInternalType('string', $result);
  454. $this->assertEquals($expected, $result);
  455. }
  456. /**
  457. * @dataProvider lastProvider()
  458. */
  459. public function testLast($expected, $str, $n, $encoding = null)
  460. {
  461. $result = S::last($str, $n, $encoding);
  462. $this->assertInternalType('string', $result);
  463. $this->assertEquals($expected, $result);
  464. }
  465. /**
  466. * @dataProvider ensureLeftProvider()
  467. */
  468. public function testEnsureLeft($expected, $str, $substring, $encoding = null)
  469. {
  470. $result = S::ensureLeft($str, $substring, $encoding);
  471. $this->assertInternalType('string', $result);
  472. $this->assertEquals($expected, $result);
  473. }
  474. /**
  475. * @dataProvider ensureRightProvider()
  476. */
  477. public function testEnsureRight($expected, $str, $substring, $encoding = null)
  478. {
  479. $result = S::ensureRight($str, $substring, $encoding);
  480. $this->assertInternalType('string', $result);
  481. $this->assertEquals($expected, $result);
  482. }
  483. /**
  484. * @dataProvider removeLeftProvider()
  485. */
  486. public function testRemoveLeft($expected, $str, $substring, $encoding = null)
  487. {
  488. $result = S::removeLeft($str, $substring, $encoding);
  489. $this->assertInternalType('string', $result);
  490. $this->assertEquals($expected, $result);
  491. }
  492. /**
  493. * @dataProvider removeRightProvider()
  494. */
  495. public function testRemoveRight($expected, $str, $substring, $encoding = null)
  496. {
  497. $result = S::removeRight($str, $substring, $encoding);
  498. $this->assertInternalType('string', $result);
  499. $this->assertEquals($expected, $result);
  500. }
  501. /**
  502. * @dataProvider isAlphaProvider()
  503. */
  504. public function testIsAlpha($expected, $str, $encoding = null)
  505. {
  506. $result = S::isAlpha($str, $encoding);
  507. $this->assertInternalType('boolean', $result);
  508. $this->assertEquals($expected, $result);
  509. }
  510. /**
  511. * @dataProvider isAlphanumericProvider()
  512. */
  513. public function testIsAlphanumeric($expected, $str, $encoding = null)
  514. {
  515. $result = S::isAlphanumeric($str, $encoding);
  516. $this->assertInternalType('boolean', $result);
  517. $this->assertEquals($expected, $result);
  518. }
  519. /**
  520. * @dataProvider isBlankProvider()
  521. */
  522. public function testIsBlank($expected, $str, $encoding = null)
  523. {
  524. $result = S::isBlank($str, $encoding);
  525. $this->assertInternalType('boolean', $result);
  526. $this->assertEquals($expected, $result);
  527. }
  528. /**
  529. * @dataProvider isJsonProvider()
  530. */
  531. public function testIsJson($expected, $str, $encoding = null)
  532. {
  533. $result = S::isJson($str, $encoding);
  534. $this->assertInternalType('boolean', $result);
  535. $this->assertEquals($expected, $result);
  536. }
  537. /**
  538. * @dataProvider isLowerCaseProvider()
  539. */
  540. public function testIsLowerCase($expected, $str, $encoding = null)
  541. {
  542. $result = S::isLowerCase($str, $encoding);
  543. $this->assertInternalType('boolean', $result);
  544. $this->assertEquals($expected, $result);
  545. }
  546. /**
  547. * @dataProvider hasLowerCaseProvider()
  548. */
  549. public function testHasLowerCase($expected, $str, $encoding = null)
  550. {
  551. $result = S::hasLowerCase($str, $encoding);
  552. $this->assertInternalType('boolean', $result);
  553. $this->assertEquals($expected, $result);
  554. }
  555. /**
  556. * @dataProvider isSerializedProvider()
  557. */
  558. public function testIsSerialized($expected, $str, $encoding = null)
  559. {
  560. $result = S::isSerialized($str, $encoding);
  561. $this->assertInternalType('boolean', $result);
  562. $this->assertEquals($expected, $result);
  563. }
  564. /**
  565. * @dataProvider isUpperCaseProvider()
  566. */
  567. public function testIsUpperCase($expected, $str, $encoding = null)
  568. {
  569. $result = S::isUpperCase($str, $encoding);
  570. $this->assertInternalType('boolean', $result);
  571. $this->assertEquals($expected, $result);
  572. }
  573. /**
  574. * @dataProvider hasUpperCaseProvider()
  575. */
  576. public function testHasUpperCase($expected, $str, $encoding = null)
  577. {
  578. $result = S::hasUpperCase($str, $encoding);
  579. $this->assertInternalType('boolean', $result);
  580. $this->assertEquals($expected, $result);
  581. }
  582. /**
  583. * @dataProvider isHexadecimalProvider()
  584. */
  585. public function testIsHexadecimal($expected, $str, $encoding = null)
  586. {
  587. $result = S::isHexadecimal($str, $encoding);
  588. $this->assertInternalType('boolean', $result);
  589. $this->assertEquals($expected, $result);
  590. }
  591. /**
  592. * @dataProvider countSubstrProvider()
  593. */
  594. public function testCountSubstr($expected, $str, $substring,
  595. $caseSensitive = true, $encoding = null)
  596. {
  597. $result = S::countSubstr($str, $substring, $caseSensitive, $encoding);
  598. $this->assertInternalType('int', $result);
  599. $this->assertEquals($expected, $result);
  600. }
  601. /**
  602. * @dataProvider replaceProvider()
  603. */
  604. public function testReplace($expected, $str, $search, $replacement,
  605. $encoding = null)
  606. {
  607. $result = S::replace($str, $search, $replacement, $encoding);
  608. $this->assertInternalType('string', $result);
  609. $this->assertEquals($expected, $result);
  610. }
  611. /**
  612. * @dataProvider regexReplaceProvider()
  613. */
  614. public function testRegexReplace($expected, $str, $pattern, $replacement,
  615. $options = 'msr', $encoding = null)
  616. {
  617. $result = S::regexReplace($str, $pattern, $replacement, $options, $encoding);
  618. $this->assertInternalType('string', $result);
  619. $this->assertEquals($expected, $result);
  620. }
  621. /**
  622. * @dataProvider htmlEncodeProvider()
  623. */
  624. public function testHtmlEncode($expected, $str, $flags = ENT_COMPAT, $encoding = null)
  625. {
  626. $result = S::htmlEncode($str, $flags, $encoding);
  627. $this->assertInternalType('string', $result);
  628. $this->assertEquals($expected, $result);
  629. }
  630. /**
  631. * @dataProvider htmlDecodeProvider()
  632. */
  633. public function testHtmlDecode($expected, $str, $flags = ENT_COMPAT, $encoding = null)
  634. {
  635. $result = S::htmlDecode($str, $flags, $encoding);
  636. $this->assertInternalType('string', $result);
  637. $this->assertEquals($expected, $result);
  638. }
  639. }