123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 |
- <?php
- namespace MathPHP\Tests\Util;
- use MathPHP\Util\Iter;
- class IterZipArrayTest extends \PHPUnit\Framework\TestCase
- {
- /**
- * @test zip with two arrays of the same size
- * @dataProvider dataProviderForZipTwoArraysSameSize
- * @param array $array1
- * @param array $array2
- * @param array $expected
- */
- public function testZipTwoArraysSameSize(array $array1, array $array2, array $expected)
- {
- // Given
- $result = [];
- // When
- foreach (Iter::zip($array1, $array2) as [$value1, $value2]) {
- $result[] = [$value1, $value2];
- }
- // Then
- $this->assertEquals($expected, $result);
- }
- /**
- * @return array
- */
- public function dataProviderForZipTwoArraysSameSize(): array
- {
- return [
- [
- [],
- [],
- [],
- ],
- [
- [1],
- [2],
- [[1, 2]],
- ],
- [
- [1, 2],
- [4, 5],
- [[1, 4], [2, 5]],
- ],
- [
- [1, 2, 3],
- [4, 5, 6],
- [[1, 4], [2, 5], [3, 6]],
- ],
- [
- [1, 2, 3, 4, 5, 6, 7, 8, 9],
- [4, 5, 6, 7, 8, 9, 1, 2, 3],
- [[1, 4], [2, 5], [3, 6], [4, 7], [5, 8], [6, 9], [7, 1], [8, 2], [9, 3]],
- ],
- ];
- }
- /**
- * @test zip with two arrays of the different sizes
- * @dataProvider dataProviderForZipTwoArraysDifferentSize
- * @param array $array1
- * @param array $array2
- * @param array $expected
- */
- public function testZipTwoArraysDifferentSize(array $array1, array $array2, array $expected)
- {
- // Given
- $result = [];
- foreach (Iter::zip($array1, $array2) as [$value1, $value2]) {
- $result[] = [$value1, $value2];
- }
- // Then
- $this->assertEquals($expected, $result);
- }
- /**
- * @return array
- */
- public function dataProviderForZipTwoArraysDifferentSize(): array
- {
- return [
- [
- [1],
- [],
- [],
- ],
- [
- [],
- [2],
- [],
- ],
- [
- [1, 2],
- [4],
- [[1, 4]],
- ],
- [
- [1],
- [4, 5],
- [[1, 4]],
- ],
- [
- [1, 2, 3],
- [4, 5],
- [[1, 4], [2, 5]],
- ],
- [
- [1, 2],
- [4, 5, 6],
- [[1, 4], [2, 5]],
- ],
- [
- [1, 2, 3],
- [4],
- [[1, 4]],
- ],
- [
- [1],
- [4, 5, 6],
- [[1, 4]],
- ],
- ];
- }
- /**
- * @test zip with three arrays of the same size
- * @dataProvider dataProviderForZipThreeArraysSameSize
- * @param array $array1
- * @param array $array2
- * @param array $array3
- * @param array $expected
- */
- public function testZipThreeArraysSameSize(array $array1, array $array2, array $array3, array $expected)
- {
- // Given
- $result = [];
- // When
- foreach (Iter::zip($array1, $array2, $array3) as [$value1, $value2, $value3]) {
- $result[] = [$value1, $value2, $value3];
- }
- // Then
- $this->assertEquals($expected, $result);
- }
- /**
- * @test zip with three arrays of the same size - unpacking
- * @dataProvider dataProviderForZipThreeArraysSameSize
- * @param array $array1
- * @param array $array2
- * @param array $array3
- * @param array $expected
- */
- public function testZipThreeArraysSameSizeUsingUnpacking(array $array1, array $array2, array $array3, array $expected)
- {
- // Given
- $result = [];
- // When
- foreach (Iter::zip(...[$array1, $array2, $array3]) as [$value1, $value2, $value3]) {
- $result[] = [$value1, $value2, $value3];
- }
- // Then
- $this->assertEquals($expected, $result);
- }
- /**
- * @return array
- */
- public function dataProviderForZipThreeArraysSameSize(): array
- {
- return [
- [
- [],
- [],
- [],
- [],
- ],
- [
- [1],
- [2],
- [3],
- [[1, 2, 3]],
- ],
- [
- [1, 2],
- [4, 5],
- [7, 8],
- [[1, 4, 7], [2, 5, 8]],
- ],
- [
- [1, 2, 3],
- [4, 5, 6],
- [7, 8, 9],
- [[1, 4, 7], [2, 5, 8], [3, 6, 9]],
- ],
- [
- [1, 2, 3, 4, 5, 6, 7, 8, 9],
- [4, 5, 6, 7, 8, 9, 1, 2, 3],
- [7, 8, 9, 1, 2, 3, 4, 5, 6],
- [[1, 4, 7], [2, 5, 8], [3, 6, 9], [4, 7, 1], [5, 8, 2], [6, 9, 3], [7, 1, 4], [8, 2, 5], [9, 3, 6]],
- ],
- ];
- }
- /**
- * @test zip with three arrays of different size
- * @dataProvider dataProviderForZipThreeArraysDifferentSize
- * @param array $array1
- * @param array $array2
- * @param array $array3
- * @param array $expected
- */
- public function testZipThreeArraysDifferentSize(array $array1, array $array2, array $array3, array $expected)
- {
- // Given
- $result = [];
- // When
- foreach (Iter::zip($array1, $array2, $array3) as [$value1, $value2, $value3]) {
- $result[] = [$value1, $value2, $value3];
- }
- // Then
- $this->assertEquals($expected, $result);
- }
- /**
- * @return array
- */
- public function dataProviderForZipThreeArraysDifferentSize(): array
- {
- return [
- [
- [],
- [1],
- [2, 3],
- [],
- ],
- [
- [1],
- [2, 3],
- [4, 5, 6],
- [[1, 2, 4]],
- ],
- [
- [1, 2],
- [4, 5, 7, 8],
- [9, 1, 2, 3, 4, 5, 6],
- [[1, 4, 9], [2, 5, 1]],
- ],
- [
- [1, 2, 3, 4],
- [4, 5, 6],
- [7, 8, 9, 0],
- [[1, 4, 7], [2, 5, 8], [3, 6, 9]],
- ],
- ];
- }
- }
|