~ubuntu-branches/debian/experimental/php-sabre-event/experimental

« back to all changes in this revision

Viewing changes to tests/Sabre/Event/EventEmitterTest.php

  • Committer: Package Import Robot
  • Author(s): David Prévot
  • Date: 2013-11-12 15:54:32 UTC
  • Revision ID: package-import@ubuntu.com-20131112155432-qe7mz2pjzi8kxkyx
Tags: upstream-1.0.0
Import upstream version 1.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?php
 
2
 
 
3
namespace Sabre\Event;
 
4
 
 
5
class EventEmitterTest extends \PHPUnit_Framework_TestCase {
 
6
 
 
7
    function testInit() {
 
8
 
 
9
        $ee = new EventEmitter();
 
10
        $this->assertInstanceOf('Sabre\\Event\\EventEmitter', $ee);
 
11
 
 
12
    }
 
13
 
 
14
    /**
 
15
     * @depends testInit
 
16
     */
 
17
    function testHandleEvent() {
 
18
 
 
19
        $argResult = null;
 
20
 
 
21
        $ee = new EventEmitter();
 
22
        $ee->on('foo', function($arg) use (&$argResult) {
 
23
 
 
24
            $argResult = $arg;
 
25
 
 
26
        });
 
27
 
 
28
        $this->assertTrue(
 
29
            $ee->emit('foo', ['bar'])
 
30
        );
 
31
 
 
32
        $this->assertEquals('bar', $argResult);
 
33
 
 
34
 
 
35
    }
 
36
 
 
37
    /**
 
38
     * @depends testHandleEvent
 
39
     */
 
40
    function testCancelEvent() {
 
41
 
 
42
        $argResult = 0;
 
43
 
 
44
        $ee = new EventEmitter();
 
45
        $ee->on('foo', function($arg) use (&$argResult) {
 
46
 
 
47
            $argResult = 1;
 
48
            return false;
 
49
 
 
50
        });
 
51
        $ee->on('foo', function($arg) use (&$argResult) {
 
52
 
 
53
            $argResult = 2;
 
54
 
 
55
        });
 
56
 
 
57
 
 
58
        $this->assertFalse(
 
59
            $ee->emit('foo', ['bar'])
 
60
        );
 
61
 
 
62
        $this->assertEquals(1, $argResult);
 
63
 
 
64
 
 
65
    }
 
66
 
 
67
    /**
 
68
     * @depends testCancelEvent
 
69
     */
 
70
    function testPriority() {
 
71
 
 
72
        $argResult = 0;
 
73
 
 
74
        $ee = new EventEmitter();
 
75
        $ee->on('foo', function($arg) use (&$argResult) {
 
76
 
 
77
            $argResult = 1;
 
78
            return false;
 
79
 
 
80
        });
 
81
        $ee->on('foo', function($arg) use (&$argResult) {
 
82
 
 
83
            $argResult = 2;
 
84
            return false;
 
85
 
 
86
        }, 1);
 
87
 
 
88
 
 
89
        $this->assertFalse(
 
90
            $ee->emit('foo', ['bar'])
 
91
        );
 
92
 
 
93
        $this->assertEquals(2, $argResult);
 
94
 
 
95
    }
 
96
 
 
97
    /**
 
98
     * @depends testPriority
 
99
     */
 
100
    function testPriority2() {
 
101
 
 
102
        $result = [];
 
103
        $ee = new EventEmitter();
 
104
 
 
105
        $ee->on('foo', function() use (&$result) {
 
106
 
 
107
            $result[] = 'a';
 
108
 
 
109
        }, 200);
 
110
        $ee->on('foo', function() use (&$result) {
 
111
 
 
112
            $result[] = 'b';
 
113
 
 
114
        }, 50);
 
115
        $ee->on('foo', function() use (&$result) {
 
116
 
 
117
            $result[] = 'c';
 
118
 
 
119
        }, 300);
 
120
        $ee->on('foo', function() use (&$result) {
 
121
 
 
122
            $result[] = 'd';
 
123
 
 
124
        });
 
125
 
 
126
        $ee->emit('foo');
 
127
        $this->assertEquals(['b','d','a','c'], $result);
 
128
 
 
129
    }
 
130
 
 
131
    function testRemoveListener() {
 
132
 
 
133
        $result = false;
 
134
 
 
135
        $callBack = function() use (&$result) {
 
136
 
 
137
            $result = true;
 
138
 
 
139
        };
 
140
 
 
141
 
 
142
        $ee = new EventEmitter();
 
143
 
 
144
        $ee->on('foo', $callBack);
 
145
 
 
146
        $ee->emit('foo');
 
147
        $this->assertTrue($result);
 
148
        $result = false;
 
149
 
 
150
        $ee->removeListener('foo', $callBack);
 
151
 
 
152
        $ee->emit('foo');
 
153
        $this->assertFalse($result);
 
154
 
 
155
    }
 
156
 
 
157
    function testRemoveAllListeners() {
 
158
 
 
159
        $result = false;
 
160
 
 
161
        $callBack = function() use (&$result) {
 
162
 
 
163
            $result = true;
 
164
 
 
165
        };
 
166
 
 
167
 
 
168
        $ee = new EventEmitter();
 
169
 
 
170
        $ee->on('foo', $callBack);
 
171
 
 
172
        $ee->emit('foo');
 
173
        $this->assertTrue($result);
 
174
        $result = false;
 
175
 
 
176
        $ee->removeAllListeners('foo');
 
177
 
 
178
        $ee->emit('foo');
 
179
        $this->assertFalse($result);
 
180
 
 
181
    }
 
182
 
 
183
    function testOnce() {
 
184
 
 
185
        $result = 0;
 
186
 
 
187
        $callBack = function() use (&$result) {
 
188
 
 
189
            $result++;
 
190
 
 
191
        };
 
192
 
 
193
        $ee = new EventEmitter();
 
194
        $ee->once('foo', $callBack);
 
195
 
 
196
        $ee->emit('foo');
 
197
        $ee->emit('foo');
 
198
 
 
199
        $this->assertEquals(1, $result);
 
200
 
 
201
    }
 
202
 
 
203
}