comparison vendor/symfony/event-dispatcher/Tests/Debug/TraceableEventDispatcherTest.php @ 17:129ea1e6d783

Update, including to Drupal core 8.6.10
author Chris Cannam
date Thu, 28 Feb 2019 13:21:36 +0000
parents 1fec387a4317
children
comparison
equal deleted inserted replaced
16:c2387f117808 17:129ea1e6d783
11 11
12 namespace Symfony\Component\EventDispatcher\Tests\Debug; 12 namespace Symfony\Component\EventDispatcher\Tests\Debug;
13 13
14 use PHPUnit\Framework\TestCase; 14 use PHPUnit\Framework\TestCase;
15 use Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher; 15 use Symfony\Component\EventDispatcher\Debug\TraceableEventDispatcher;
16 use Symfony\Component\EventDispatcher\Event;
17 use Symfony\Component\EventDispatcher\EventDispatcher;
16 use Symfony\Component\EventDispatcher\EventDispatcherInterface; 18 use Symfony\Component\EventDispatcher\EventDispatcherInterface;
17 use Symfony\Component\EventDispatcher\EventSubscriberInterface; 19 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
18 use Symfony\Component\EventDispatcher\EventDispatcher;
19 use Symfony\Component\EventDispatcher\Event;
20 use Symfony\Component\Stopwatch\Stopwatch; 20 use Symfony\Component\Stopwatch\Stopwatch;
21 21
22 class TraceableEventDispatcherTest extends TestCase 22 class TraceableEventDispatcherTest extends TestCase
23 { 23 {
24 public function testAddRemoveListener() 24 public function testAddRemoveListener()
96 $subscriber = new EventSubscriber(); 96 $subscriber = new EventSubscriber();
97 97
98 $tdispatcher->addSubscriber($subscriber); 98 $tdispatcher->addSubscriber($subscriber);
99 $listeners = $dispatcher->getListeners('foo'); 99 $listeners = $dispatcher->getListeners('foo');
100 $this->assertCount(1, $listeners); 100 $this->assertCount(1, $listeners);
101 $this->assertSame(array($subscriber, 'call'), $listeners[0]); 101 $this->assertSame([$subscriber, 'call'], $listeners[0]);
102 102
103 $tdispatcher->removeSubscriber($subscriber); 103 $tdispatcher->removeSubscriber($subscriber);
104 $this->assertCount(0, $dispatcher->getListeners('foo')); 104 $this->assertCount(0, $dispatcher->getListeners('foo'));
105 } 105 }
106 106
108 { 108 {
109 $tdispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch()); 109 $tdispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
110 $tdispatcher->addListener('foo', function () {}, 5); 110 $tdispatcher->addListener('foo', function () {}, 5);
111 111
112 $listeners = $tdispatcher->getNotCalledListeners(); 112 $listeners = $tdispatcher->getNotCalledListeners();
113 $this->assertArrayHasKey('stub', $listeners['foo.closure']); 113 $this->assertArrayHasKey('stub', $listeners[0]);
114 unset($listeners['foo.closure']['stub']); 114 unset($listeners[0]['stub']);
115 $this->assertEquals(array(), $tdispatcher->getCalledListeners()); 115 $this->assertEquals([], $tdispatcher->getCalledListeners());
116 $this->assertEquals(array('foo.closure' => array('event' => 'foo', 'pretty' => 'closure', 'priority' => 5)), $listeners); 116 $this->assertEquals([['event' => 'foo', 'pretty' => 'closure', 'priority' => 5]], $listeners);
117 117
118 $tdispatcher->dispatch('foo'); 118 $tdispatcher->dispatch('foo');
119 119
120 $listeners = $tdispatcher->getCalledListeners(); 120 $listeners = $tdispatcher->getCalledListeners();
121 $this->assertArrayHasKey('stub', $listeners['foo.closure']); 121 $this->assertArrayHasKey('stub', $listeners[0]);
122 unset($listeners['foo.closure']['stub']); 122 unset($listeners[0]['stub']);
123 $this->assertEquals(array('foo.closure' => array('event' => 'foo', 'pretty' => 'closure', 'priority' => 5)), $listeners); 123 $this->assertEquals([['event' => 'foo', 'pretty' => 'closure', 'priority' => 5]], $listeners);
124 $this->assertEquals(array(), $tdispatcher->getNotCalledListeners()); 124 $this->assertEquals([], $tdispatcher->getNotCalledListeners());
125 } 125 }
126 126
127 public function testClearCalledListeners() 127 public function testClearCalledListeners()
128 { 128 {
129 $tdispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch()); 129 $tdispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
131 131
132 $tdispatcher->dispatch('foo'); 132 $tdispatcher->dispatch('foo');
133 $tdispatcher->reset(); 133 $tdispatcher->reset();
134 134
135 $listeners = $tdispatcher->getNotCalledListeners(); 135 $listeners = $tdispatcher->getNotCalledListeners();
136 $this->assertArrayHasKey('stub', $listeners['foo.closure']); 136 $this->assertArrayHasKey('stub', $listeners[0]);
137 unset($listeners['foo.closure']['stub']); 137 unset($listeners[0]['stub']);
138 $this->assertEquals(array(), $tdispatcher->getCalledListeners()); 138 $this->assertEquals([], $tdispatcher->getCalledListeners());
139 $this->assertEquals(array('foo.closure' => array('event' => 'foo', 'pretty' => 'closure', 'priority' => 5)), $listeners); 139 $this->assertEquals([['event' => 'foo', 'pretty' => 'closure', 'priority' => 5]], $listeners);
140 }
141
142 public function testDispatchAfterReset()
143 {
144 $tdispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
145 $tdispatcher->addListener('foo', function () {}, 5);
146
147 $tdispatcher->reset();
148 $tdispatcher->dispatch('foo');
149
150 $listeners = $tdispatcher->getCalledListeners();
151 $this->assertArrayHasKey('stub', $listeners[0]);
140 } 152 }
141 153
142 public function testGetCalledListenersNested() 154 public function testGetCalledListenersNested()
143 { 155 {
144 $tdispatcher = null; 156 $tdispatcher = null;
160 $dispatcher = new EventDispatcher(); 172 $dispatcher = new EventDispatcher();
161 $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch(), $logger); 173 $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch(), $logger);
162 $tdispatcher->addListener('foo', $listener1 = function () {}); 174 $tdispatcher->addListener('foo', $listener1 = function () {});
163 $tdispatcher->addListener('foo', $listener2 = function () {}); 175 $tdispatcher->addListener('foo', $listener2 = function () {});
164 176
165 $logger->expects($this->at(0))->method('debug')->with('Notified event "{event}" to listener "{listener}".', array('event' => 'foo', 'listener' => 'closure')); 177 $logger->expects($this->at(0))->method('debug')->with('Notified event "{event}" to listener "{listener}".', ['event' => 'foo', 'listener' => 'closure']);
166 $logger->expects($this->at(1))->method('debug')->with('Notified event "{event}" to listener "{listener}".', array('event' => 'foo', 'listener' => 'closure')); 178 $logger->expects($this->at(1))->method('debug')->with('Notified event "{event}" to listener "{listener}".', ['event' => 'foo', 'listener' => 'closure']);
167 179
168 $tdispatcher->dispatch('foo'); 180 $tdispatcher->dispatch('foo');
169 } 181 }
170 182
171 public function testLoggerWithStoppedEvent() 183 public function testLoggerWithStoppedEvent()
175 $dispatcher = new EventDispatcher(); 187 $dispatcher = new EventDispatcher();
176 $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch(), $logger); 188 $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch(), $logger);
177 $tdispatcher->addListener('foo', $listener1 = function (Event $event) { $event->stopPropagation(); }); 189 $tdispatcher->addListener('foo', $listener1 = function (Event $event) { $event->stopPropagation(); });
178 $tdispatcher->addListener('foo', $listener2 = function () {}); 190 $tdispatcher->addListener('foo', $listener2 = function () {});
179 191
180 $logger->expects($this->at(0))->method('debug')->with('Notified event "{event}" to listener "{listener}".', array('event' => 'foo', 'listener' => 'closure')); 192 $logger->expects($this->at(0))->method('debug')->with('Notified event "{event}" to listener "{listener}".', ['event' => 'foo', 'listener' => 'closure']);
181 $logger->expects($this->at(1))->method('debug')->with('Listener "{listener}" stopped propagation of the event "{event}".', array('event' => 'foo', 'listener' => 'closure')); 193 $logger->expects($this->at(1))->method('debug')->with('Listener "{listener}" stopped propagation of the event "{event}".', ['event' => 'foo', 'listener' => 'closure']);
182 $logger->expects($this->at(2))->method('debug')->with('Listener "{listener}" was not called for event "{event}".', array('event' => 'foo', 'listener' => 'closure')); 194 $logger->expects($this->at(2))->method('debug')->with('Listener "{listener}" was not called for event "{event}".', ['event' => 'foo', 'listener' => 'closure']);
183 195
184 $tdispatcher->dispatch('foo'); 196 $tdispatcher->dispatch('foo');
185 } 197 }
186 198
187 public function testDispatchCallListeners() 199 public function testDispatchCallListeners()
188 { 200 {
189 $called = array(); 201 $called = [];
190 202
191 $dispatcher = new EventDispatcher(); 203 $dispatcher = new EventDispatcher();
192 $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch()); 204 $tdispatcher = new TraceableEventDispatcher($dispatcher, new Stopwatch());
193 $tdispatcher->addListener('foo', function () use (&$called) { $called[] = 'foo1'; }, 10); 205 $tdispatcher->addListener('foo', function () use (&$called) { $called[] = 'foo1'; }, 10);
194 $tdispatcher->addListener('foo', function () use (&$called) { $called[] = 'foo2'; }, 20); 206 $tdispatcher->addListener('foo', function () use (&$called) { $called[] = 'foo2'; }, 20);
195 207
196 $tdispatcher->dispatch('foo'); 208 $tdispatcher->dispatch('foo');
197 209
198 $this->assertSame(array('foo2', 'foo1'), $called); 210 $this->assertSame(['foo2', 'foo1'], $called);
199 } 211 }
200 212
201 public function testDispatchNested() 213 public function testDispatchNested()
202 { 214 {
203 $dispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch()); 215 $dispatcher = new TraceableEventDispatcher(new EventDispatcher(), new Stopwatch());
250 262
251 class EventSubscriber implements EventSubscriberInterface 263 class EventSubscriber implements EventSubscriberInterface
252 { 264 {
253 public static function getSubscribedEvents() 265 public static function getSubscribedEvents()
254 { 266 {
255 return array('foo' => 'call'); 267 return ['foo' => 'call'];
256 } 268 }
257 } 269 }