Skip to content

Commit

Permalink
add count_listeners() method
Browse files Browse the repository at this point in the history
  • Loading branch information
rossengeorgiev committed Jun 2, 2019
1 parent 776ddbf commit 25730d3
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 1 deletion.
17 changes: 16 additions & 1 deletion eventemitter/__init__.py
@@ -1,4 +1,4 @@
__version__ = "2.0"
__version__ = "2.1"
__author__ = "Rossen Georgiev"

from collections import defaultdict, OrderedDict
Expand Down Expand Up @@ -155,4 +155,19 @@ def remove_all_listeners(self, event=None):
if event in self.__callbacks:
del self.__callbacks[event]

def count_listeners(self, event):
"""
Returns a count of how many listeners are
registered registed for a specific event
:param event: event identifier
:returns: number of listeners
:rtype: int
"""
if hasattr(self, '_EventEmitter__callbacks'):
if event in self.__callbacks:
return len(self.__callbacks[event])

return 0


22 changes: 22 additions & 0 deletions tests/test_eventemitter.py
Expand Up @@ -202,3 +202,25 @@ def aaa():

self.idle()
self.assertEqual(result, [3, 2, 1])

def test_count_listeners(self):
@self.dummy.on('event')
def func_one():
self.calls += 1

self.assertEqual(self.dummy.count_listeners('event'), 1)

self.dummy.once('event', func_one)

self.assertEqual(self.dummy.count_listeners('event'), 1)

self.dummy.remove_all_listeners('event')

self.assertEqual(self.dummy.count_listeners('event'), 0)

def test_count_listeners_with_no_listeners(self):
self.assertEqual(self.dummy.count_listeners(None), 0)
self.assertEqual(self.dummy.count_listeners('event'), 0)
self.assertEqual(self.dummy.count_listeners(''), 0)
self.assertEqual(self.dummy.count_listeners(1), 0)
self.assertEqual(self.dummy.count_listeners(0), 0)

0 comments on commit 25730d3

Please sign in to comment.