Forking what is left of ZeroNet and hopefully adding an AT Proto Frontend/Proxy
at main 65 lines 2.5 kB view raw
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"]