~mathiaz/+junk/image-store-proxy-pkg-ubuntu

« back to all changes in this revision

Viewing changes to imagestore/lib/tests/test_event.py

  • Committer: Mathias Gug
  • Date: 2009-09-14 15:35:26 UTC
  • Revision ID: mathias.gug@canonical.com-20090914153526-9x42slhhw3ixcodu
Import initial upstream code.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import gc
 
2
 
 
3
from imagestore.lib.event import EventBus, Event
 
4
from imagestore.lib.tests import TestCase
 
5
 
 
6
 
 
7
class EventBusTest(TestCase):
 
8
 
 
9
    def setUp(self):
 
10
        self.bus = EventBus()
 
11
 
 
12
    def testRegisterHandlerAndFire(self):
 
13
        called = []
 
14
        def handler(event, a, b):
 
15
            called.append((event, a, b))
 
16
        class MyEvent(Event):
 
17
            pass
 
18
        self.bus.addHandler(MyEvent, handler, 1, b=2)
 
19
        event = MyEvent()
 
20
        self.bus.fire(event)
 
21
        self.assertEquals(called, [(event, 1, 2)])
 
22
 
 
23
    def testWhiteBoxWeakRefedHandlers(self):
 
24
        called = []
 
25
        def handler(event, a, b):
 
26
            called.append((event, a, b))
 
27
        class MyEvent(Event):
 
28
            pass
 
29
        self.bus.addHandler(MyEvent, handler, 1, b=2)
 
30
        self.assertEquals(len(self.bus._handlers[MyEvent]), 1)
 
31
        del handler
 
32
        gc.collect()
 
33
        event = MyEvent()
 
34
        self.bus.fire(event)
 
35
        self.assertEquals(called, [])
 
36
        self.assertEquals(len(self.bus._handlers[MyEvent]), 0)
 
37