scratch – Blame information for rev 115

Subversion Repositories:
Rev:
Rev Author Line No. Line
115 office 1 <?php
2  
3 namespace Alchemy\Tests\BinaryDriver\Listeners;
4  
5 use Alchemy\BinaryDriver\Listeners\Listeners;
6 use Evenement\EventEmitter;
7 use Alchemy\BinaryDriver\Listeners\ListenerInterface;
8  
9 class ListenersTest extends \PHPUnit_Framework_TestCase
10 {
11 public function testRegister()
12 {
13 $listener = new MockListener();
14  
15 $listeners = new Listeners();
16 $listeners->register($listener);
17  
18 $n = 0;
19 $listener->on('received', function ($type, $data) use (&$n, &$capturedType, &$capturedData) {
20 $n++;
21 $capturedData = $data;
22 $capturedType = $type;
23 });
24  
25 $type = 'type';
26 $data = 'data';
27  
28 $listener->handle($type, $data);
29 $listener->handle($type, $data);
30  
31 $listeners->unregister($listener);
32  
33 $listener->handle($type, $data);
34  
35 $this->assertEquals(3, $n);
36 $this->assertEquals($type, $capturedType);
37 $this->assertEquals($data, $capturedData);
38 }
39  
40 public function testRegisterAndForwardThenUnregister()
41 {
42 $listener = new MockListener();
43 $target = new EventEmitter();
44  
45 $n = 0;
46 $target->on('received', function ($type, $data) use (&$n, &$capturedType, &$capturedData) {
47 $n++;
48 $capturedData = $data;
49 $capturedType = $type;
50 });
51  
52 $m = 0;
53 $listener->on('received', function ($type, $data) use (&$m, &$capturedType2, &$capturedData2) {
54 $m++;
55 $capturedData2 = $data;
56 $capturedType2 = $type;
57 });
58  
59 $listeners = new Listeners();
60 $listeners->register($listener, $target);
61  
62 $type = 'type';
63 $data = 'data';
64  
65 $listener->handle($type, $data);
66 $listener->handle($type, $data);
67  
68 $listeners->unregister($listener, $target);
69  
70 $listener->handle($type, $data);
71  
72 $this->assertEquals(2, $n);
73 $this->assertEquals(3, $m);
74 $this->assertEquals($type, $capturedType);
75 $this->assertEquals($data, $capturedData);
76 $this->assertEquals($type, $capturedType2);
77 $this->assertEquals($data, $capturedData2);
78 }
79 }
80  
81 class MockListener extends EventEmitter implements ListenerInterface
82 {
83 public function handle($type, $data)
84 {
85 $this->emit('received', array($type, $data));
86 }
87  
88 public function forwardedEvents()
89 {
90 return array('received');
91 }
92 }