1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
describe 'Epoch.Events', ->
eventsObject = null
before (done) ->
eventsObject = new Epoch.Events()
done()
it 'should execute callbacks when events are triggered', (done) ->
errorCallback = ->
assert false, 'Event callback never executed'
done()
timeout = setTimeout errorCallback, 1000
eventsObject.on 'event', ->
clearTimeout(timeout)
done()
eventsObject.trigger 'event'
it 'should not execute callbacks that have been removed', (done) ->
errorCallback = ->
assert false, 'Event callback still executed'
done()
eventsObject.on 'example', errorCallback
eventsObject.off 'example', errorCallback
eventsObject.trigger 'example'
done()
it 'should execute all callbacks associated with an event name', (done) ->
total = 4
errorCallback = ->
assert false, 'Not all callbacks were executed'
done()
timeout = setTimeout errorCallback, 1000
makeCallback = -> ->
total--
if total == 0
clearTimeout(timeout)
done()
eventsObject.on('multi', makeCallback()) for i in [0...total]
eventsObject.trigger 'multi'
it 'should remove all callbacks when using .off([String])', (done) ->
makeCallback = -> ->
assert false, "A callback was still executed"
done()
eventsObject.on('multi2', makeCallback()) for i in [0...4]
eventsObject.off('multi2')
eventsObject.trigger('multi2')
setTimeout (-> done()), 200
it 'should execute methods on the object when using .on([String], [String])', (done) ->
errorCallback = ->
assert false, 'Trigger did not call the appropriate method.'
done()
timeout = setTimeout(errorCallback, 1000)
eventsObject.method = ->
clearTimeout(timeout)
done()
eventsObject.on 'method-event', 'method'
eventsObject.trigger 'method-event'
it 'should register all events when executing .onAll([Object])', (done) ->
errorCallback = ->
assert false, 'Not all events were triggered.'
done()
timeout = setTimeout(errorCallback, 1000)
eventNames = ['multi:a', 'multi:b', 'multi:c', 'multi:d']
total = 0
eventCallback = ->
total += 1
if total == eventNames.length
clearTimeout(timeout)
done()
eventMap = {}
eventMap[name] = eventCallback for name in eventNames
eventsObject.onAll(eventMap)
eventsObject.trigger(name) for name in eventNames
it 'should remove all events when executing .offAll([Array])', ->
eventCallback = ->
assert false, 'A removed callback was still triggered.'
eventNames = ['multi-off:a', 'multi-off:b', 'multi-off:c', 'multi-off:d']
eventMap = {}
eventMap[name] = eventCallback for name in eventNames
eventsObject.onAll(eventMap)
eventsObject.offAll(eventNames)
eventsObject.trigger(name) for name in eventNames
it 'should remove specific event callbacks when executing .offAll([Object])', (done) ->
makeEventCallback = -> ->
assert false, 'A removed callback was still triggered.'
eventNames = ['multi-off:a', 'multi-off:b', 'multi-off:c', 'multi-off:d']
eventMap = {}
eventMap[name] = makeEventCallback() for name in eventNames
eventsObject.onAll(eventMap)
eventsObject.offAll(eventMap)
eventsObject.trigger(name) for name in eventNames
setTimeout (-> done()), 200
|