1--TEST--
2Observer: Nested fibers
3--EXTENSIONS--
4zend_test
5--INI--
6zend_test.observer.enabled=1
7zend_test.observer.fiber_switch=1
8--FILE--
9<?php
10
11$fiber = new Fiber(function (): void {
12    Fiber::suspend();
13    var_dump(1);
14
15    $fiber = new Fiber(function (): void {
16        Fiber::suspend();
17        var_dump(3);
18        Fiber::suspend();
19        var_dump(5);
20    });
21
22    $fiber->start();
23
24    Fiber::suspend();
25    var_dump(2);
26
27    $fiber->resume();
28
29    Fiber::suspend();
30    var_dump(4);
31
32    $fiber->resume();
33});
34
35$fiber->start();
36$fiber->resume();
37$fiber->resume();
38$fiber->resume();
39
40?>
41--EXPECTF--
42<!-- init '%sobserver_fiber_03.php' -->
43<!-- switching from fiber %s to %s -->
44<init '%s'>
45<!-- init {closure}() -->
46<!-- switching from fiber %s to %s -->
47<suspend '%s'>
48<!-- switching from fiber %s to %s -->
49<resume '%s'>
50int(1)
51<!-- switching from fiber %s to %s -->
52<init '%s'>
53<!-- init {closure}() -->
54<!-- switching from fiber %s to %s -->
55<suspend '%s'>
56<!-- switching from fiber %s to %s -->
57<suspend '%s'>
58<!-- switching from fiber %s to %s -->
59<resume '%s'>
60int(2)
61<!-- switching from fiber %s to %s -->
62<resume '%s'>
63int(3)
64<!-- switching from fiber %s to %s -->
65<suspend '%s'>
66<!-- switching from fiber %s to %s -->
67<suspend '%s'>
68<!-- switching from fiber %s to %s -->
69<resume '%s'>
70int(4)
71<!-- switching from fiber %s to %s -->
72<resume '%s'>
73int(5)
74<!-- switching from fiber %s to %s -->
75<returned '%s'>
76<!-- switching from fiber %s to %s -->
77<returned '%s'>
78