Strings.split().phpt 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. <?php
  2. /**
  3. * Test: Nette\Utils\Strings::split()
  4. */
  5. declare(strict_types=1);
  6. use Nette\Utils\Strings;
  7. use Tester\Assert;
  8. require __DIR__ . '/../bootstrap.php';
  9. Assert::same([
  10. 'a',
  11. ',',
  12. 'b',
  13. ',',
  14. 'c',
  15. ], Strings::split('a, b, c', '#(,)\s*#'));
  16. Assert::same([
  17. 'a',
  18. ',',
  19. 'b',
  20. ',',
  21. 'c',
  22. ], Strings::split('a, b, c', '#(,)\s*#', PREG_SPLIT_NO_EMPTY));
  23. Assert::same([
  24. 'a',
  25. ',',
  26. 'b',
  27. ',',
  28. 'c',
  29. ], Strings::split('a, b, c', '#(,)\s*#', skipEmpty: true));
  30. Assert::same([
  31. ['a', 0],
  32. [',', 1],
  33. ['b', 3],
  34. [',', 4],
  35. ['c', 6],
  36. ], Strings::split('a, b, c', '#(,)\s*#', PREG_SPLIT_OFFSET_CAPTURE));
  37. Assert::same([
  38. ['ž', 0],
  39. ['lu', 2],
  40. ['ť', 4],
  41. ['ou', 6],
  42. ['č', 8],
  43. ['k', 10],
  44. ['ý ', 11],
  45. ['k', 14],
  46. ['ůň', 15],
  47. ], Strings::split('žluťoučký kůň', '#([a-z]+)\s*#u', captureOffset: true));
  48. Assert::same([
  49. ['ž', 0],
  50. ['lu', 1],
  51. ['ť', 3],
  52. ['ou', 4],
  53. ['č', 6],
  54. ['k', 7],
  55. ['ý ', 8],
  56. ['k', 10],
  57. ['ůň', 11],
  58. ], Strings::split('žluťoučký kůň', '#([a-z]+)\s*#u', captureOffset: true, utf8: true));
  59. Assert::same(['', ' ', ''], Strings::split('žluťoučký kůň', '#\w+#', utf8: true)); // without modifier
  60. Assert::same(['a', ',', 'b, c'], Strings::split('a, b, c', '#(,)\s*#', limit: 2));