示例#1
0
    def test_when(self):
        result = []

        def on_done(value):
            result.append(value)

        def on_all(*args):
            result.extend(args)
            return(sum(args))

        d1 = Deferred()
        d2 = Deferred()
        d3 = When(d1, d2)

        d1.then(on_done)
        d2.then(on_done)
        d3.then(on_all)\
            .then(on_done)

        self.assertEqual(result, [])

        d2.resolve(2)
        self.assertEqual(result, [2])

        d1.resolve(1)
        self.assertEqual(result, [2, 1, 2, 3, 1])
示例#2
0
    def test_when(self):
        result = []

        def on_done(value):
            result.append(value)

        def on_all(*args):
            result.extend(args)
            return (sum(args))

        d1 = Deferred()
        d2 = Deferred()
        d3 = When(d1, d2)

        d1.then(on_done)
        d2.then(on_done)
        d3.then(on_all)\
            .then(on_done)

        self.assertEqual(result, [])

        d2.resolve(2)
        self.assertEqual(result, [2])

        d1.resolve(1)
        self.assertEqual(result, [2, 1, 2, 3, 1])
示例#3
0
class AsyncObject(object):
    def __init__(self):
        self.d = Deferred()

    def start(self):
        return self.d

    def close(self, value):
        self.d.resolve(value)
示例#4
0
class TestDeferred(unittest.TestCase):
    def setUp(self):
        def on_resolve(*args, **kwargs):
            self.resolve_ran = True
            self.assertEqual(args, ['resolve'])
            self.assertEqual(kwargs, {'finish_type': 'resolve'})
            return 'ran_resolved'

        def on_error(*args, **kwargs):
            self.error_ran = True
            self.assertEqual(args, ['error'])
            self.assertEqual(kwargs, {'finish_type': 'error'})
            return 'ran_error'

        def on_always(*args, **kwargs):
            self.always_ran = True
            self.assertEqual(len(args), 1)
            self.assertIn(args[0], ('resolve', 'error'))
            self.assertEqual(len(kwargs), 1)
            self.assertIn(kwargs['finish_type'], ('resolve', 'error'))
            return 'ran_always'

        def on_after(*args, **kwargs):
            self.after_ran = True
            self.assertEqual(len(args), 1)
            self.assertEqual(len(kwargs), 0)
            self.assertIn(args[0], ('ran_resolved', 'ran_error'))

        self.d = Deferred()
        self.d\
            .then(on_resolve, error=on_error, always=on_always)\
            .then(on_after)
        self.resolve_ran = False
        self.error_ran = False
        self.always_ran = False
        self.after_ran = False

    def test_create(self):
        self.assertIsNotNone(self.d)

    def test_resolve(self):
        self.d.resolve('resolve', finish_type='resolve')
        self.assertTrue(self.d.finished)
        self.assertTrue(self.d.is_resolved)
        self.assertTrue(self.resolve_ran)
        self.assertFalse(self.error_ran)
        self.assertTrue(self.always_ran)
        self.assertTrue(self.after_ran)

    def test_error(self):
        self.d.reject('error', finish_type='error')
        self.assertTrue(self.d.finished)
        self.assertFalse(self.d.is_resolved)
        self.assertFalse(self.resolve_ran)
        self.assertTrue(self.error_ran)
        self.assertTrue(self.always_ran)
        self.assertTrue(self.after_ran)
示例#5
0
class AsyncObject(object):
    def __init__(self):
        self.d = Deferred()

    def start(self):
        return self.d

    def close(self, value):
        self.d.resolve(value)
示例#6
0
class TestDeferred(unittest.TestCase):
    def setUp(self):
        def on_resolve(*args, **kwargs):
            self.resolve_ran = True
            self.assertEqual(args, ['resolve'])
            self.assertEqual(kwargs, {'finish_type': 'resolve'})
            return 'ran_resolved'

        def on_error(*args, **kwargs):
            self.error_ran = True
            self.assertEqual(args, ['error'])
            self.assertEqual(kwargs, {'finish_type': 'error'})
            return 'ran_error'

        def on_always(*args, **kwargs):
            self.always_ran = True
            self.assertEqual(len(args), 1)
            self.assertIn(args[0], ('resolve', 'error'))
            self.assertEqual(len(kwargs), 1)
            self.assertIn(kwargs['finish_type'], ('resolve', 'error'))
            return 'ran_always'

        def on_after(*args, **kwargs):
            self.after_ran = True
            self.assertEqual(len(args), 1)
            self.assertEqual(len(kwargs), 0)
            self.assertIn(args[0], ('ran_resolved', 'ran_error'))

        self.d = Deferred()
        self.d\
            .then(on_resolve, error=on_error, always=on_always)\
            .then(on_after)
        self.resolve_ran = False
        self.error_ran = False
        self.always_ran = False
        self.after_ran = False

    def test_create(self):
        self.assertIsNotNone(self.d)

    def test_resolve(self):
        self.d.resolve('resolve', finish_type='resolve')
        self.assertTrue(self.d.finished)
        self.assertTrue(self.d.is_resolved)
        self.assertTrue(self.resolve_ran)
        self.assertFalse(self.error_ran)
        self.assertTrue(self.always_ran)
        self.assertTrue(self.after_ran)

    def test_error(self):
        self.d.reject('error', finish_type='error')
        self.assertTrue(self.d.finished)
        self.assertFalse(self.d.is_resolved)
        self.assertFalse(self.resolve_ran)
        self.assertTrue(self.error_ran)
        self.assertTrue(self.always_ran)
        self.assertTrue(self.after_ran)
示例#7
0
    def test_plus(self):
        result = []

        def get_value():
            return 42

        def got_value(value):
            self.assertEqual(value, 42)
            return value * 2

        def got_value2(value):
            self.assertEqual(value, 84)
            result.append(value)

        d = Deferred()
        d.then(get_value)\
            .then(got_value)\
            .then(got_value2)

        self.assertEqual(result, [])
        d.resolve()
        self.assertEqual(result, [84])
示例#8
0
    def test_plus(self):
        result = []

        def get_value():
            return 42

        def got_value(value):
            self.assertEqual(value, 42)
            return value * 2

        def got_value2(value):
            self.assertEqual(value, 84)
            result.append(value)

        d = Deferred()
        d.then(get_value)\
            .then(got_value)\
            .then(got_value2)

        self.assertEqual(result, [])
        d.resolve()
        self.assertEqual(result, [84])