StrTest.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. <?php
  2. /**
  3. * TLDSupport: Support package for TLDDatabase and TLDExtract.
  4. *
  5. * @link https://github.com/layershifter/TLDSupport
  6. *
  7. * @copyright Copyright (c) 2016, Alexander Fedyashov
  8. * @license https://raw.githubusercontent.com/layershifter/TLDSupport/master/LICENSE Apache 2.0 License
  9. */
  10. namespace LayerShifter\TLDSupport\Tests\Helpers;
  11. use LayerShifter\TLDSupport\Helpers\Str;
  12. /**
  13. * Test cases for Helpers\Str class.
  14. */
  15. class StrTest extends \PHPUnit_Framework_TestCase
  16. {
  17. /**
  18. * Test for endsWith() method.
  19. *
  20. * @return void
  21. */
  22. public function testEndsWith()
  23. {
  24. self::assertTrue(Str::endsWith('jason', 'on'));
  25. self::assertTrue(Str::endsWith('jason', 'jason'));
  26. self::assertTrue(Str::endsWith('jason', ['on']));
  27. self::assertTrue(Str::endsWith('jason', ['no', 'on']));
  28. self::assertFalse(Str::endsWith('jason', 'no'));
  29. self::assertFalse(Str::endsWith('jason', ['no']));
  30. self::assertFalse(Str::endsWith('jason', ''));
  31. self::assertFalse(Str::endsWith('7', ' 7'));
  32. }
  33. /**
  34. * Test for length() method.
  35. *
  36. * @return void
  37. */
  38. public function testLength()
  39. {
  40. self::assertEquals(11, Str::length('foo bar baz'));
  41. }
  42. /**
  43. * Test for lower() method.
  44. *
  45. * @return void
  46. */
  47. public function testLower()
  48. {
  49. self::assertEquals('foo bar baz', Str::lower('FOO BAR BAZ'));
  50. self::assertEquals('foo bar baz', Str::lower('fOo Bar bAz'));
  51. }
  52. /**
  53. * Test for substr() method.
  54. *
  55. * @return void
  56. */
  57. public function testSubstr()
  58. {
  59. self::assertEquals('Ё', Str::substr('БГДЖИЛЁ', -1));
  60. self::assertEquals('ЛЁ', Str::substr('БГДЖИЛЁ', -2));
  61. self::assertEquals('И', Str::substr('БГДЖИЛЁ', -3, 1));
  62. self::assertEquals('ДЖИЛ', Str::substr('БГДЖИЛЁ', 2, -1));
  63. self::assertEmpty(Str::substr('БГДЖИЛЁ', 4, -4));
  64. self::assertEquals('ИЛ', Str::substr('БГДЖИЛЁ', -3, -1));
  65. self::assertEquals('ГДЖИЛЁ', Str::substr('БГДЖИЛЁ', 1));
  66. self::assertEquals('ГДЖ', Str::substr('БГДЖИЛЁ', 1, 3));
  67. self::assertEquals('БГДЖ', Str::substr('БГДЖИЛЁ', 0, 4));
  68. self::assertEquals('Ё', Str::substr('БГДЖИЛЁ', -1, 1));
  69. self::assertEmpty(Str::substr('Б', 2));
  70. }
  71. /**
  72. * Test for startsWith() method.
  73. *
  74. * @return void
  75. */
  76. public function testStartsWith()
  77. {
  78. self::assertTrue(Str::startsWith('jason', 'jas'));
  79. self::assertTrue(Str::startsWith('jason', 'jason'));
  80. self::assertTrue(Str::startsWith('jason', ['jas']));
  81. self::assertTrue(Str::startsWith('jason', ['day', 'jas']));
  82. self::assertFalse(Str::startsWith('jason', 'day'));
  83. self::assertFalse(Str::startsWith('jason', ['day']));
  84. self::assertFalse(Str::startsWith('jason', ''));
  85. }
  86. /**
  87. * Test for strpos() method.
  88. *
  89. * @return void
  90. */
  91. public function testStrPos()
  92. {
  93. self::assertEquals(6, Str::strpos('БГДЖИЛЁ', 'Ё'));
  94. self::assertEquals(0, Str::strpos('БГДЖИЛЁ', 'Б'));
  95. self::assertEquals(0, Str::strpos('ЁБГДЖИЛЁ', 'Ё'));
  96. self::assertEquals(2, Str::strpos('БГДЖИЛЁД', 'Д'));
  97. self::assertFalse(Str::strpos('БГДЖИЛЁ', 'П'));
  98. }
  99. /**
  100. * Test for strrpos() method.
  101. *
  102. * @return void
  103. */
  104. public function testStrRPos()
  105. {
  106. self::assertEquals(6, Str::strrpos('БГДЖИЛЁ', 'Ё'));
  107. self::assertEquals(0, Str::strrpos('БГДЖИЛЁ', 'Б'));
  108. self::assertEquals(7, Str::strrpos('ЁБГДЖИЛЁ', 'Ё'));
  109. self::assertEquals(7, Str::strrpos('БГДЖИЛЁД', 'Д'));
  110. self::assertFalse(Str::strrpos('БГДЖИЛЁ', 'П'));
  111. }
  112. }