def test_ModificationListener(self): postdb = self._postdb p = self.p def my_cmd(fun): hkshell.event(type='before') fun() hkshell.event(type='after') # Adding the listener mod_listener = hkshell.ModificationListener(postdb) self.assertEqual(postdb.listeners, [mod_listener]) hkshell.append_listener(mod_listener) # Using the listener self.assertTrue(mod_listener.touched_posts().is_set([])) my_cmd(lambda: None) self.assertTrue(mod_listener.touched_posts().is_set([])) my_cmd(lambda: p(0).set_subject("other")) self.assertTrue(mod_listener.touched_posts().is_set([p(0)])) my_cmd(lambda: p(1).set_subject("other")) my_cmd(lambda: p(2).set_subject("other")) self.assertTrue(mod_listener.touched_posts().is_set([p(2)])) def f(): p(0).set_subject("other2") p(1).set_subject("other2") my_cmd(f) self.assertTrue(mod_listener.touched_posts().is_set([p(0), p(1)])) # Removing the listener hkshell.remove_listener(mod_listener) mod_listener.close() self.assertEqual(postdb.listeners, [])
def test__listeners(self): def listener(e): event_list.append(e.type) ## Testing the `listener` list and the `event` function event_list = [] hkshell.event(0) hkshell.listeners.append(listener) hkshell.event(1) hkshell.listeners.append(listener) # The following event will be received by the `listener` function twice hkshell.event(2) hkshell.listeners.remove(listener) hkshell.event(3) hkshell.listeners.remove(listener) hkshell.event(4) self.assertEqual(event_list, [1, 2, 2, 3]) ## Testing the `append_listener` and `remove_listener` functions event_list = [] hkshell.event(0) hkshell.append_listener(listener) # a listener cannot be appended if it's in the list self.assertRaises( hkutils.HkException, lambda: hkshell.append_listener(listener)) hkshell.event(1) hkshell.remove_listener(listener) # a listener cannot be removed if it's not in the list self.assertRaises( hkutils.HkException, lambda: hkshell.remove_listener(listener)) hkshell.event(2) self.assertEqual(event_list, [1]) ## Testing instance variables of Event def listener2(e): event_list.append(e) event_list = [] hkshell.append_listener(listener2) hkshell.event(type='mytype') hkshell.event(type='mytype', command='mycommand') hkshell.remove_listener(listener2) self.assertEqual(event_list[0].type, 'mytype') self.assertEqual(event_list[0].command, None) self.assertEqual(event_list[1].type, 'mytype') self.assertEqual(event_list[1].command, 'mycommand')
def test_ModificationListener(self): postdb = self._postdb def my_cmd(fun): hkshell.event(type='before') fun() hkshell.event(type='after') # Adding the listener mod_listener = hkshell.ModificationListener(postdb) self.assertEquals(postdb.listeners, [mod_listener]) hkshell.append_listener(mod_listener) # Using the listener self.assert_(mod_listener.touched_posts().is_set([])) my_cmd(lambda: None) self.assert_(mod_listener.touched_posts().is_set([])) my_cmd(lambda: self._posts[0].set_subject("other")) self.assert_(mod_listener.touched_posts().is_set([self._posts[0]])) my_cmd(lambda: self._posts[1].set_subject("other")) my_cmd(lambda: self._posts[2].set_subject("other")) self.assert_(mod_listener.touched_posts().is_set([self._posts[2]])) def f(): self._posts[0].set_subject("other2") self._posts[1].set_subject("other2") my_cmd(f) self.assert_( mod_listener.touched_posts().is_set( [self._posts[0], self._posts[1]])) # Removing the listener hkshell.remove_listener(mod_listener) mod_listener.close() self.assertEquals(postdb.listeners, [])
def test_TouchedPostPrinterListener(self): self._test_TouchedPostPrinter( on=lambda: hkshell.append_listener( hkshell.touched_post_printer_listener), off=lambda: hkshell.remove_listener( hkshell.touched_post_printer_listener))
def test_save_listener__1(self): self._test_save( on=lambda: hkshell.append_listener(hkshell.save_listener), off=lambda: hkshell.remove_listener(hkshell.save_listener))
def test_gen_indices_listener(self): self._test_gen_indices( on=lambda: hkshell.append_listener(hkshell.gen_indices_listener), off=lambda: hkshell.remove_listener(hkshell.gen_indices_listener))