RewindableGeneratorTest.php 913 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. <?php
  2. namespace Illuminate\Tests\Container;
  3. use Illuminate\Container\RewindableGenerator;
  4. use PHPUnit\Framework\TestCase;
  5. class RewindableGeneratorTest extends TestCase
  6. {
  7. public function testCountUsesProvidedValue()
  8. {
  9. $generator = new RewindableGenerator(function () {
  10. yield 'foo';
  11. }, 999);
  12. $this->assertCount(999, $generator);
  13. }
  14. public function testCountUsesProvidedValueAsCallback()
  15. {
  16. $called = 0;
  17. $generator = new RewindableGenerator(function () {
  18. yield 'foo';
  19. }, function () use (&$called) {
  20. $called++;
  21. return 500;
  22. });
  23. // the count callback is called lazily
  24. $this->assertSame(0, $called);
  25. $this->assertCount(500, $generator);
  26. count($generator);
  27. // the count callback is called only once
  28. $this->assertSame(1, $called);
  29. }
  30. }