From 45bf9e8650177e8293f49ab91827282dd181021c Mon Sep 17 00:00:00 2001 From: Alex Manase Date: Sat, 29 Oct 2022 18:19:43 +0300 Subject: [PATCH 1/2] ignore the keys returned by the datasets Generator for storing them into an array --- src/Datasets.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Datasets.php b/src/Datasets.php index 89725107..19ed1359 100644 --- a/src/Datasets.php +++ b/src/Datasets.php @@ -122,7 +122,7 @@ final class Datasets } if ($datasets[$index] instanceof Traversable) { - $datasets[$index] = iterator_to_array($datasets[$index]); + $datasets[$index] = iterator_to_array($datasets[$index], false); } foreach ($datasets[$index] as $key => $values) { From 47cc88a6ab699b8c5d4e42e55cd242ead2a286ba Mon Sep 17 00:00:00 2001 From: Alex Manase Date: Sun, 30 Oct 2022 01:35:46 +0300 Subject: [PATCH 2/2] add tests for eager registered wrapped datasets with Generator functions --- tests/.snapshots/success.txt | 7 ++++++- tests/Datasets/Numbers.php | 17 +++++++++++++++++ tests/Features/Datasets.php | 23 ++++++++++++++++++++++- 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/tests/.snapshots/success.txt b/tests/.snapshots/success.txt index 26f896f5..c1095e96 100644 --- a/tests/.snapshots/success.txt +++ b/tests/.snapshots/success.txt @@ -96,6 +96,11 @@ ✓ more than two datasets with (2) / (4) / (5) ✓ more than two datasets with (2) / (4) / (6) ✓ more than two datasets did the job right + ✓ eager registered wrapped datasets with Generator functions with (1) + ✓ eager registered wrapped datasets with Generator functions with (2) + ✓ eager registered wrapped datasets with Generator functions with (3) + ✓ eager registered wrapped datasets with Generator functions with (4) + ✓ eager registered wrapped datasets with Generator functions did the job right ✓ it can resolve a dataset after the test case is available with (Closure Object (...)) ✓ it can resolve a dataset after the test case is available with shared yield sets with (Closure Object (...)) #1 ✓ it can resolve a dataset after the test case is available with shared yield sets with (Closure Object (...)) #2 @@ -722,5 +727,5 @@ ✓ it is a test ✓ it uses correct parent class - Tests: 4 incompleted, 9 skipped, 480 passed + Tests: 4 incompleted, 9 skipped, 485 passed \ No newline at end of file diff --git a/tests/Datasets/Numbers.php b/tests/Datasets/Numbers.php index 2b718699..76af6995 100644 --- a/tests/Datasets/Numbers.php +++ b/tests/Datasets/Numbers.php @@ -13,3 +13,20 @@ dataset('numbers.closure.wrapped', function () { dataset('numbers.array', [[1], [2]]); dataset('numbers.array.wrapped', [1, 2]); + +dataset('numbers.generators.wrapped', function () { + yield from firstSetOfNumber(); + yield from secondSetOfNumbers(); +}); + +function firstSetOfNumber(): Generator +{ + yield 1; + yield 2; +} + +function secondSetOfNumbers(): Generator +{ + yield 3; + yield 4; +} diff --git a/tests/Features/Datasets.php b/tests/Features/Datasets.php index be94e596..83b47277 100644 --- a/tests/Features/Datasets.php +++ b/tests/Features/Datasets.php @@ -228,10 +228,31 @@ test('more than two datasets did the job right', function () use ($state) { expect($state->text)->toBe('121212121212131423241314232411122122111221221112212213142324135136145146235236245246'); }); +$wrapped_generator_state = new stdClass(); +$wrapped_generator_state->text = ''; +$wrapped_generator_function_datasets = [1, 2, 3, 4]; + +test( + 'eager registered wrapped datasets with Generator functions', + function (int $text) use ( + $wrapped_generator_state, + $wrapped_generator_function_datasets + ) { + $wrapped_generator_state->text .= $text; + expect(in_array($text, $wrapped_generator_function_datasets))->toBe(true); + } +)->with('numbers.generators.wrapped'); + +test('eager registered wrapped datasets with Generator functions did the job right', function () use ($wrapped_generator_state) { + expect($wrapped_generator_state->text)->toBe('1234'); +}); + it('can resolve a dataset after the test case is available', function ($result) { expect($result)->toBe('bar'); })->with([ - function () { return $this->foo; }, + function () { + return $this->foo; + }, ]); it('can resolve a dataset after the test case is available with shared yield sets', function ($result) {