ru_php/ext/zend_test/tests/observer_fiber_03.phpt

84 lines
1.6 KiB
PHP

--TEST--
Observer: Nested fibers
--EXTENSIONS--
zend_test
--INI--
zend_test.observer.enabled=1
zend_test.observer.show_output=1
zend_test.observer.fiber_switch=1
--FILE--
<?php
$fiber = new Fiber(function (): void {
Fiber::suspend();
var_dump(1);
$fiber = new Fiber(function (): void {
Fiber::suspend();
var_dump(3);
Fiber::suspend();
var_dump(5);
});
$fiber->start();
Fiber::suspend();
var_dump(2);
$fiber->resume();
Fiber::suspend();
var_dump(4);
$fiber->resume();
});
$fiber->start();
$fiber->resume();
$fiber->resume();
$fiber->resume();
?>
--EXPECTF--
<!-- init '%s' -->
<!-- init Fiber::__construct() -->
<!-- init Fiber::start() -->
<!-- switching from fiber %s to %s -->
<init '%s'>
<!-- init {closure:%s:%d}() -->
<!-- init Fiber::suspend() -->
<!-- switching from fiber %s to %s -->
<suspend '%s'>
<!-- init Fiber::resume() -->
<!-- switching from fiber %s to %s -->
<resume '%s'>
<!-- init var_dump() -->
int(1)
<!-- switching from fiber %s to %s -->
<init '%s'>
<!-- init {closure:%s:%d}() -->
<!-- switching from fiber %s to %s -->
<suspend '%s'>
<!-- switching from fiber %s to %s -->
<suspend '%s'>
<!-- switching from fiber %s to %s -->
<resume '%s'>
int(2)
<!-- switching from fiber %s to %s -->
<resume '%s'>
int(3)
<!-- switching from fiber %s to %s -->
<suspend '%s'>
<!-- switching from fiber %s to %s -->
<suspend '%s'>
<!-- switching from fiber %s to %s -->
<resume '%s'>
int(4)
<!-- switching from fiber %s to %s -->
<resume '%s'>
int(5)
<!-- switching from fiber %s to %s -->
<returned '%s'>
<!-- switching from fiber %s to %s -->
<returned '%s'>