Forking what is left of ZeroNet and hopefully adding an AT Proto Frontend/Proxy
1import util
2
3
4class ExampleClass(object):
5 def __init__(self):
6 self.called = []
7 self.onChanged = util.Event()
8
9 def increment(self, title):
10 self.called.append(title)
11
12
13class TestEvent:
14 def testEvent(self):
15 test_obj = ExampleClass()
16 test_obj.onChanged.append(lambda: test_obj.increment("Called #1"))
17 test_obj.onChanged.append(lambda: test_obj.increment("Called #2"))
18 test_obj.onChanged.once(lambda: test_obj.increment("Once"))
19
20 assert test_obj.called == []
21 test_obj.onChanged()
22 assert test_obj.called == ["Called #1", "Called #2", "Once"]
23 test_obj.onChanged()
24 test_obj.onChanged()
25 assert test_obj.called == ["Called #1", "Called #2", "Once", "Called #1", "Called #2", "Called #1", "Called #2"]
26
27 def testOnce(self):
28 test_obj = ExampleClass()
29 test_obj.onChanged.once(lambda: test_obj.increment("Once test #1"))
30
31 # It should be called only once
32 assert test_obj.called == []
33 test_obj.onChanged()
34 assert test_obj.called == ["Once test #1"]
35 test_obj.onChanged()
36 test_obj.onChanged()
37 assert test_obj.called == ["Once test #1"]
38
39 def testOnceMultiple(self):
40 test_obj = ExampleClass()
41 # Allow queue more than once
42 test_obj.onChanged.once(lambda: test_obj.increment("Once test #1"))
43 test_obj.onChanged.once(lambda: test_obj.increment("Once test #2"))
44 test_obj.onChanged.once(lambda: test_obj.increment("Once test #3"))
45
46 assert test_obj.called == []
47 test_obj.onChanged()
48 assert test_obj.called == ["Once test #1", "Once test #2", "Once test #3"]
49 test_obj.onChanged()
50 test_obj.onChanged()
51 assert test_obj.called == ["Once test #1", "Once test #2", "Once test #3"]
52
53 def testOnceNamed(self):
54 test_obj = ExampleClass()
55 # Dont store more that one from same type
56 test_obj.onChanged.once(lambda: test_obj.increment("Once test #1/1"), "type 1")
57 test_obj.onChanged.once(lambda: test_obj.increment("Once test #1/2"), "type 1")
58 test_obj.onChanged.once(lambda: test_obj.increment("Once test #2"), "type 2")
59
60 assert test_obj.called == []
61 test_obj.onChanged()
62 assert test_obj.called == ["Once test #1/1", "Once test #2"]
63 test_obj.onChanged()
64 test_obj.onChanged()
65 assert test_obj.called == ["Once test #1/1", "Once test #2"]