IterZipGeneratorTest.php 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. namespace MathPHP\Tests\Util;
  3. use MathPHP\Util\Iter;
  4. class IterZipGeneratorTest extends \PHPUnit\Framework\TestCase
  5. {
  6. /**
  7. * @test zip with two generators of the same size
  8. * @dataProvider dataProviderForZipTwoGeneratorsSameSize
  9. * @param \Generator $generator1
  10. * @param \Generator $generator2
  11. * @param array $expected
  12. */
  13. public function testZipTwoGeneratorsSameSize(\Generator $generator1, \Generator $generator2, array $expected)
  14. {
  15. // Given
  16. $result = [];
  17. // When
  18. foreach (Iter::zip($generator1, $generator2) as [$value1, $value2]) {
  19. $result[] = [$value1, $value2];
  20. }
  21. // Then
  22. $this->assertEquals($expected, $result);
  23. }
  24. /**
  25. * @return array
  26. */
  27. public function dataProviderForZipTwoGeneratorsSameSize(): array
  28. {
  29. return [
  30. [
  31. GeneratorFixture::getGenerator([]),
  32. GeneratorFixture::getGenerator([]),
  33. [],
  34. ],
  35. [
  36. GeneratorFixture::getGenerator([1]),
  37. GeneratorFixture::getGenerator([2]),
  38. [[1, 2]],
  39. ],
  40. [
  41. GeneratorFixture::getGenerator([1, 2]),
  42. GeneratorFixture::getGenerator([4, 5]),
  43. [[1, 4], [2, 5]],
  44. ],
  45. [
  46. GeneratorFixture::getGenerator([1, 2, 3]),
  47. GeneratorFixture::getGenerator([4, 5, 6]),
  48. [[1, 4], [2, 5], [3, 6]],
  49. ],
  50. [
  51. GeneratorFixture::getGenerator([1, 2, 3, 4, 5, 6, 7, 8, 9]),
  52. GeneratorFixture::getGenerator([4, 5, 6, 7, 8, 9, 1, 2, 3]),
  53. [[1, 4], [2, 5], [3, 6], [4, 7], [5, 8], [6, 9], [7, 1], [8, 2], [9, 3]],
  54. ],
  55. ];
  56. }
  57. }