TestTask.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <?php declare(strict_types=1);
  2. use PHPUnit\Framework\TestCase;
  3. define('APP_ID', 'test');
  4. define('BASE_ROOT_PATH', str_replace('/test', '', dirname(__FILE__)));
  5. require_once(BASE_ROOT_PATH . '/global.php');
  6. require_once(BASE_CORE_PATH . '/lrlz.php');
  7. require_once(BASE_ROOT_PATH . '/fooder.php');
  8. class TestTask extends TestCase
  9. {
  10. public static function setUpBeforeClass() : void
  11. {
  12. Base::run_util();
  13. }
  14. public function testXRange()
  15. {
  16. $xrange = function ($start, $end, $step = 1) {
  17. for ($i = $start; $i <= $end; $i += $step) {
  18. yield $i;
  19. }
  20. };
  21. $ins = $xrange(1,100);
  22. var_dump($xrange);
  23. $type = $ins instanceof Iterator;
  24. foreach ($xrange(1, 1000000) as $num) {
  25. Log::record("num={$num}",Log::DEBUG);
  26. }
  27. }
  28. public function testLogger()
  29. {
  30. $log = function ($fileName) {
  31. $fileHandle = fopen($fileName, 'a');
  32. while (true) {
  33. fwrite($fileHandle, yield . "\n");
  34. }
  35. };
  36. $logger = $log(__DIR__ . '/log');
  37. $logger->send('Foo');
  38. $logger->send('Bar');
  39. }
  40. public function testGener()
  41. {
  42. $generator = function() {
  43. $ret = yield 'yield1';
  44. Log::record($ret,Log::DEBUG);
  45. $ret = yield 'yield2';
  46. Log::record($ret,Log::DEBUG);
  47. };
  48. $gen = $generator();
  49. Log::record($gen->current(),Log::DEBUG);
  50. $ret = $gen->send('ret1');
  51. Log::record($ret,Log::DEBUG);
  52. $ret = $gen->send('ret2');
  53. Log::record($ret,Log::DEBUG);
  54. //var_dump($gen->send('ret1')); // string(4) "ret1" (the first var_dump in gen)
  55. // string(6) "yield2" (the var_dump of the ->send() return value)
  56. // var_dump($gen->send('ret2')); // string(4) "ret2" (again from within gen)
  57. // NULL (the return value of ->send())
  58. }
  59. }