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 112 113 114 115 116 117 118 119 120 121 122 123 124 125
|
#!/usr/bin/python -i
from types import TracebackType
import pytest
from circuits import Component, Event, handler
class hello(Event):
"""Hello Event"""
class test(Event):
"""test Event"""
class foo(Event):
"""foo Event"""
class values(Event):
"""values Event"""
complete = True
class App(Component):
def hello(self):
return 'Hello World!'
def test(self):
return self.fire(hello())
def foo(self):
raise Exception('ERROR')
@handler('hello_value_changed')
def _on_hello_value_changed(self, value):
self.value = value
@handler('test_value_changed')
def _on_test_value_changed(self, value):
self.value = value
@handler('values', priority=2.0)
def _value1(self):
return 'foo'
@handler('values', priority=1.0)
def _value2(self):
return 'bar'
@handler('values', priority=0.0)
def _value3(self):
return self.fire(hello())
@pytest.fixture()
def app(request, simple_manager):
return App().register(simple_manager)
def test_value(app, simple_manager):
x = app.fire(hello())
simple_manager.run()
assert 'Hello World!' in x
assert x.value == 'Hello World!'
def test_nested_value(app, simple_manager):
x = app.fire(test())
simple_manager.run()
assert x.value == 'Hello World!'
assert str(x) == 'Hello World!'
def test_value_notify(app, simple_manager):
ev = hello()
ev.notify = True
x = app.fire(ev)
simple_manager.run()
assert 'Hello World!' in x
assert x.value == 'Hello World!'
assert app.value is x
def test_nested_value_notify(app, simple_manager):
ev = test()
ev.notify = True
x = app.fire(ev)
simple_manager.run()
assert x.value == 'Hello World!'
assert str(x) == 'Hello World!'
assert app.value is x
def test_error_value(app, simple_manager):
x = app.fire(foo())
simple_manager.run()
etype, evalue, etraceback = x
assert etype is Exception
assert str(evalue) == 'ERROR'
assert isinstance(etraceback, TracebackType)
def test_multiple_values(app, simple_manager):
v = app.fire(values())
simple_manager.run()
assert isinstance(v.value, list)
x = list(v)
assert 'foo' in v
assert x == ['foo', 'bar', 'Hello World!']
assert x[0] == 'foo'
assert x[1] == 'bar'
assert x[2] == 'Hello World!'
|