File tree Expand file tree Collapse file tree 1 file changed +28
-0
lines changed
Expand file tree Collapse file tree 1 file changed +28
-0
lines changed Original file line number Diff line number Diff line change @@ -49,4 +49,32 @@ public function testIdleConnectionsRemovedAfterTimeout()
4949
5050 $ this ->assertTrue ($ invoked ); // No next result set, so release callback invoked.
5151 }
52+
53+ public function testIteratorRetainsReference (): void
54+ {
55+ $ expectedRow = ['column ' => 'value ' ];
56+ $ expectedRows = [$ expectedRow , $ expectedRow , $ expectedRow ];
57+ $ stubResult = new StubSqlResult ([$ expectedRow , $ expectedRow , $ expectedRow ]);
58+
59+ $ invoked = false ;
60+ $ release = function () use (&$ invoked ) {
61+ $ invoked = true ;
62+ };
63+
64+ $ iterationCount = 0 ;
65+ foreach ((new StubSqlPooledResult ($ stubResult , $ release )) as $ row ) {
66+ ++$ iterationCount ;
67+
68+ delay (0 ); // Tick event loop to allow entry into disposal function if queued in event loop.
69+
70+ self ::assertSame ($ expectedRow , $ row );
71+ self ::assertFalse ($ invoked );
72+ }
73+
74+ self ::assertSame (count ($ expectedRows ), $ iterationCount );
75+
76+ delay (0 ); // Tick event loop to dispose of result set.
77+
78+ $ this ->assertTrue ($ invoked );
79+ }
5280}
You can’t perform that action at this time.
0 commit comments