コード例 #1
0
ファイル: test_hkshell.py プロジェクト: attish/heapkeeper-old
    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, [])
コード例 #2
0
ファイル: test_hkshell.py プロジェクト: attish/heapkeeper-old
    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')
コード例 #3
0
ファイル: test_hkshell.py プロジェクト: attish/heapkeeper_
    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, [])
コード例 #4
0
ファイル: test_hkshell.py プロジェクト: attish/heapkeeper-old
 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))
コード例 #5
0
ファイル: test_hkshell.py プロジェクト: attish/heapkeeper-old
 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))
コード例 #6
0
ファイル: test_hkshell.py プロジェクト: attish/heapkeeper-old
 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))