Exemplo n.º 1
0
 def setUp(self):
     self.cbRunner = CallbackRunner()
Exemplo n.º 2
0
 def setUp(self):
     self.cbRunner = CallbackRunner()
Exemplo n.º 3
0
class TestCallbackRunner(unittest.TestCase):
    def setUp(self):
        self.cbRunner = CallbackRunner()
        
    def test_addingCallback(self):
        """
        Add a callback and trigger it
        """
        callback = LogingCallback()
        self.cbRunner.add_callback(callback)
        self.cbRunner._run_callbacks()
        self.assertEqual([(tuple() , { })], callback.log)

    def test_callbackArgs(self):
        """
        Add a callback, with some args, and trigger it
        """
        callback = LogingCallback()
        self.cbRunner.add_callback(callback, 'foo', 'bar')
        self.cbRunner._run_callbacks()
        self.assertEqual([(('foo', 'bar') , { })], callback.log)

    def test_callbackKWArgs(self):
        """
        Add a callback, with some KWArgs, and trigger it
        """
        callback = LogingCallback()
        self.cbRunner.add_callback(callback, foo='bar')
        self.cbRunner._run_callbacks()
        self.assertEqual([(tuple() , {'foo' : 'bar'})], callback.log)
        
    def test_callbackArgsAndKWargs(self):
        """
        Add a callback, with both Args and KWArgs, and trigger it.
        """
        callback = LogingCallback()
        self.cbRunner.add_callback(callback, 'empathy', foo='bar')
        self.cbRunner._run_callbacks()
        self.assertEqual([(('empathy', ) , {'foo' : 'bar'})], callback.log)
        
    def test_multipleCallbacks(self):
        """
        Add two callbacks.  Each should be run with its specified arguments
        """
        cb1 = LogingCallback()
        cb2 = LogingCallback()
        self.cbRunner.add_callback(cb1, 'cb1 called')
        self.cbRunner.add_callback(cb2, 'cb2 called')
        self.cbRunner._run_callbacks()
        self.assertEqual([(('cb1 called',), {})], cb1.log)
        self.assertEqual([(('cb2 called',), {})], cb2.log)

    def test_registerCallbackMultipleTimes(self):
        """
        Registering a callback twice should update the args and kwargs, but
        NOT cause it to be called twice
        """
        callback = LogingCallback()
        self.cbRunner.add_callback(callback, 'foo')
        self.cbRunner.add_callback(callback, 'bar')
        self.cbRunner._run_callbacks()
        self.assertEqual([(('bar', ) , {})], callback.log)

    def test_callbackOnlyRunOnce(self):
        """
        Callbacks should be removed after they are run.  Each call to
        add_callback should trigger at most one callback
        """
        callback = LogingCallback()
        self.cbRunner.add_callback(callback, 'foo')
        self.cbRunner._run_callbacks()
        self.cbRunner._run_callbacks()
        self.assertEqual([(('foo', ) , {})], callback.log)
Exemplo n.º 4
0
class TestCallbackRunner(unittest.TestCase):
    def setUp(self):
        self.cbRunner = CallbackRunner()

    def test_addingCallback(self):
        """
        Add a callback and trigger it
        """
        callback = LogingCallback()
        self.cbRunner.add_callback(callback)
        self.cbRunner._run_callbacks()
        self.assertEqual([(tuple(), {})], callback.log)

    def test_callbackArgs(self):
        """
        Add a callback, with some args, and trigger it
        """
        callback = LogingCallback()
        self.cbRunner.add_callback(callback, 'foo', 'bar')
        self.cbRunner._run_callbacks()
        self.assertEqual([(('foo', 'bar'), {})], callback.log)

    def test_callbackKWArgs(self):
        """
        Add a callback, with some KWArgs, and trigger it
        """
        callback = LogingCallback()
        self.cbRunner.add_callback(callback, foo='bar')
        self.cbRunner._run_callbacks()
        self.assertEqual([(tuple(), {'foo': 'bar'})], callback.log)

    def test_callbackArgsAndKWargs(self):
        """
        Add a callback, with both Args and KWArgs, and trigger it.
        """
        callback = LogingCallback()
        self.cbRunner.add_callback(callback, 'empathy', foo='bar')
        self.cbRunner._run_callbacks()
        self.assertEqual([(('empathy', ), {'foo': 'bar'})], callback.log)

    def test_multipleCallbacks(self):
        """
        Add two callbacks.  Each should be run with its specified arguments
        """
        cb1 = LogingCallback()
        cb2 = LogingCallback()
        self.cbRunner.add_callback(cb1, 'cb1 called')
        self.cbRunner.add_callback(cb2, 'cb2 called')
        self.cbRunner._run_callbacks()
        self.assertEqual([(('cb1 called', ), {})], cb1.log)
        self.assertEqual([(('cb2 called', ), {})], cb2.log)

    def test_registerCallbackMultipleTimes(self):
        """
        Registering a callback twice should update the args and kwargs, but
        NOT cause it to be called twice
        """
        callback = LogingCallback()
        self.cbRunner.add_callback(callback, 'foo')
        self.cbRunner.add_callback(callback, 'bar')
        self.cbRunner._run_callbacks()
        self.assertEqual([(('bar', ), {})], callback.log)

    def test_callbackOnlyRunOnce(self):
        """
        Callbacks should be removed after they are run.  Each call to
        add_callback should trigger at most one callback
        """
        callback = LogingCallback()
        self.cbRunner.add_callback(callback, 'foo')
        self.cbRunner._run_callbacks()
        self.cbRunner._run_callbacks()
        self.assertEqual([(('foo', ), {})], callback.log)