'A', 'bar' => 'B'], ['x' => 1, 'y' => 2]), false, ); self::assertSame( [['A', 1], ['A', 2], ['B', 1], ['B', 2]], $result, ); } public function testTotalCountEqualsProductOfSetSizes(): void { $result = iterator_to_array(CartesianProduct::create([1, 2, 3], ['a', 'b'], [true, false]), false); self::assertCount(3 * 2 * 2, $result); } public function testSingleElementSets(): void { $result = iterator_to_array(CartesianProduct::create(['only'], [42]), false); self::assertSame([['only', 42]], $result); } public function testGeneratorAsInput(): void { $gen = (static function (): \Generator { yield 10; yield 20; })(); $result = iterator_to_array(CartesianProduct::create([1, 2], $gen), false); self::assertSame([[1, 10], [1, 20], [2, 10], [2, 20]], $result); } public function testReturnsGenerator(): void { $generator = CartesianProduct::create([1], [2]); self::assertInstanceOf(\Generator::class, $generator); } }