SlugifyIconvTest.php 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. /**
  3. * The MIT License (MIT)
  4. * Copyright (c) 2012 Florian Eckerstorfer
  5. *
  6. * Permission is hereby granted, free of charge, to any person obtaining a copy
  7. * of this software and associated documentation files (the "Software"), to
  8. * deal in the Software without restriction, including without limitation the
  9. * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
  10. * sell copies of the Software, and to permit persons to whom the Software is
  11. * furnished to do so, subject to the following conditions:
  12. *
  13. * The above copyright notice and this permission notice shall be included in
  14. * all copies or substantial portions of the Software.
  15. *
  16. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  17. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  18. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  19. * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  20. * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  21. * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
  22. * IN THE SOFTWARE.
  23. *
  24. * @package org.cocur.slugify
  25. * @category tests
  26. */
  27. namespace Cocur\Tests\Slugify;
  28. use Cocur\Slugify\Slugify;
  29. /**
  30. * @package org.cocur.slugify
  31. * @category tests
  32. * @author Ivo Bathke <ivo.bathke@gmail.com>
  33. * @author Florian Eckerstorfer <florian@theroadtojoy.at>
  34. * @copyright 2012 Florian Eckerstorfer
  35. * @license http://www.opensource.org/licenses/MIT The MIT License
  36. */
  37. class SlugifyIconvTest extends \PHPUnit_Framework_TestCase
  38. {
  39. /**
  40. * @param string $string
  41. * @param string $slug
  42. *
  43. * @dataProvider provider
  44. */
  45. public function testSlugify($string, $slug)
  46. {
  47. if (!function_exists('iconv')) {
  48. $this->markTestSkipped('The "iconv" function is not available.');
  49. return;
  50. }
  51. //we assume german locale
  52. setlocale(LC_ALL, 'de_DE.utf8','de_DE');
  53. $slugify = new Slugify();
  54. $this->assertEquals($slug, $slugify->slugify($string), '->slugify() transforms the string in a correct slug.');
  55. }
  56. /**
  57. * @return array
  58. */
  59. public function provider()
  60. {
  61. return array(
  62. array('Hello', 'hello'),
  63. array('[0]', '0'),
  64. array('Hello World', 'hello-world'),
  65. array('Hello: World', 'hello-world'),
  66. // does not seem to work consistently
  67. #array('H+e#l1l--o/W§o r.l:d)', 'h-e-l1l-o-wsso-r-l-d'),
  68. array(': World', 'world'),
  69. array('Hello World!', 'hello-world'),
  70. array('Ä ä Ö ö Ü ü ß', 'a-a-o-o-u-u-ss'),
  71. array('Á À á à É È é è Ó Ò ó ò Ñ ñ Ú Ù ú ù', 'a-a-a-a-e-e-e-e-o-o-o-o-n-n-u-u-u-u'),
  72. array('Â â Ê ê Ô ô Û û', 'a-a-e-e-o-o-u-u'),
  73. array('Â â Ê ê Ô ô Û 1', 'a-a-e-e-o-o-u-1'),
  74. //this doesnt work with iconv
  75. #array('°¹²³@','0123at'),
  76. //german translit, ø doesnt work: iconv bug
  77. #array('Mórë thån wørds', 'more-thaan-words')
  78. );
  79. }
  80. }