generators_from_v8_002.phpt 876 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. --TEST--
  2. Test V8::executeString() : Generators V8 -> PHP (direct)
  3. --SKIPIF--
  4. <?php require_once(dirname(__FILE__) . '/skipif.inc'); ?>
  5. --FILE--
  6. <?php
  7. $js = <<<EOJS
  8. function* TheGen() {
  9. for(var i = 0; i < 4; i ++) {
  10. yield i;
  11. }
  12. }
  13. TheGen();
  14. EOJS;
  15. $v8 = new V8Js();
  16. $gen = $v8->executeString($js);
  17. var_dump($gen->current());
  18. // JS generators don't have the key concept (-> just "false")
  19. var_dump($gen->key());
  20. // fetching multiple times shouldn't leak
  21. var_dump($gen->current());
  22. var_dump($gen->current());
  23. $gen->next(); // 1
  24. var_dump($gen->current());
  25. $gen->next(); // 2
  26. var_dump($gen->current());
  27. $gen->next(); // 3
  28. var_dump($gen->current());
  29. var_dump($gen->valid());
  30. $gen->next(); // undef
  31. var_dump($gen->current());
  32. var_dump($gen->valid());
  33. ?>
  34. ===EOF===
  35. --EXPECTF--
  36. int(0)
  37. bool(false)
  38. int(0)
  39. int(0)
  40. int(1)
  41. int(2)
  42. int(3)
  43. bool(true)
  44. NULL
  45. bool(false)
  46. ===EOF===