Exemple #1
0
 async def test_exception_propagation(self):
     a = var(None)
     b = var()
     res = my_sum(a=a, b=b)
     await wait_for_var(res)
     self.assertIsNotNone(unwrap_exception(res))
     with self.assertRaisesRegex(Exception, r'.*b.*'):
         unwrap(res)
Exemple #2
0
 async def test_var_changes(self):
     a = var(2)
     b = var(5)
     res = my_sum(a=a, b=b)
     a @= 6
     await wait_for_var(res)
     self.assertEqual(unwrap(res), 11)  # 6+5
     b @= 3
     await wait_for_var(res)
     self.assertEqual(unwrap(res), 9)  # 6+3
Exemple #3
0
 async def test_var_changes(self):
     a = var(2)
     b = var(5)
     res = await async_sum(a=a, b=b)
     a.set(6)
     await wait_for_var(res)
     self.assertEqual(11, unwrap(res))  # 6+5
     b.set(3)
     await wait_for_var(res)
     self.assertEqual(9, unwrap(res))  # 6+3
Exemple #4
0
    async def test_exception_propagation(self):
        b = var()
        res = await async_sum_with_yield(2, b=b)  # type: Wrapped
        await wait_for_var(res)
        self.assertEqual(inside, 0)
        self.assertIsNotNone(unwrap_exception(res))
        with self.assertRaisesRegex(Exception, r'.*b.*'):
            unwrap(res)

        b @= 5
        await wait_for_var(res)
Exemple #5
0
 async def test_with_const_arg(self):
     global some_observable
     res = func_with_default(5)
     self.assertTrue(isinstance(res, Wrapped))
     await wait_for_var(res)
     self.assertEqual(1, called_times2)
     self.assertEqual(8, unwrap(res))
     some_observable @= 100
     await wait_for_var(res)
     unwrap(res)
     self.assertEqual(2, called_times2)
     self.assertEqual(105, unwrap(res))
Exemple #6
0
 async def test_a(self):
     b = var(5)
     res = await async_sum_with_yield(2, b=b)
     self.assertIsInstance(res, Wrapped)
     self.assertEqual(unwrap(res), 7)
     self.assertEqual(inside, 1)
     b @= 1
     await wait_for_var(res)
     self.assertEqual(unwrap(res), 3)
     self.assertEqual(inside, 1)
     del res
     await asyncio.sleep((0.1))
Exemple #7
0
    async def test_vars(self):
        global called_times
        called_times = 0
        a = var(None)
        res = inc_called_times(a)
        await wait_for_var(res)
        unwrap(res)
        self.assertEqual(1, called_times)

        a @= 55
        await wait_for_var(res)
        await asyncio.sleep(0.1)
        unwrap(res)
        self.assertEqual(2, called_times)

        some_observable.__notifier__.notify_observers()
        await wait_for_var(res)
        await asyncio.sleep(1)
        unwrap(res)
        self.assertEqual(3, called_times)

        some_observable.__notifier__.notify_observers()
        await wait_for_var(res)
        await asyncio.sleep(1)
        unwrap(res)
        self.assertEqual(4, called_times)
Exemple #8
0
 async def test_var_var(self):
     a = var(2)
     b = var(5)
     res = my_sum(a=a, b=b)
     await wait_for_var(res)
     self.assertIsInstance(res, Wrapped)
     self.assertEqual(unwrap(res), 7)
Exemple #9
0
    async def test_a(self):
        queue = asyncio.Queue()
        res = await var_from_gen(appender(queue))

        self.assertIsInstance(res, Wrapped)
        await asyncio.sleep(0)
        self.assertEqual(unwrap(res), [])
        await queue.put(5)
        await asyncio.sleep(0.1)
        self.assertEqual(unwrap(res), [5])
        await queue.put(1)
        await asyncio.sleep(0)
        self.assertEqual(unwrap(res), [5, 1])
        self.assertEqual(inside, 1)
        await res.dispose()
        del res
        self.assertEqual(inside, 0)
Exemple #10
0
 async def test_1(self):
     global some_observable
     a = var(5)
     b = var(3)
     res = pass_args(a, b)
     self.assertTrue(isinstance(res, Wrapped))
     await wait_for_var(res)
     self.assertEqual(8, unwrap(res))
     self.assertEqual(1, called_times2)
     a @= 10
     await wait_for_var(res)
     self.assertEqual(8, unwrap(res))
     self.assertEqual(1, called_times2)
     b @= 100
     await wait_for_var(res)
     self.assertEqual(110, unwrap(res))
     self.assertEqual(2, called_times2)
Exemple #11
0
 async def test_exception_propagation(self):
     b = var()
     res = sum_with_yield(2, b=b)
     self.assertIsInstance(res, Wrapped)
     await wait_for_var(res)
     gc.collect()
     self.assertIsNotNone(unwrap_exception(res))
     self.assertEqual(0, inside)
     with self.assertRaisesRegex(Exception, r'.*b.*'):
         unwrap(res)
     b.set(5)
     await wait_for_var(res)
     await asyncio.sleep(0.1)
     gc.collect()
     self.assertIsNone(unwrap_exception(res))
     self.assertEqual(7, unwrap(res))
     self.assertEqual(1, inside)
Exemple #12
0
 async def test_with_raw(self):
     res = sum_with_yield(2, 5)
     # in this case we must return something that finalizes the function when destroyed
     self.assertIsInstance(res, Wrapped)
     self.assertEqual(unwrap(res), 7)
     self.assertEqual(inside, 1)
     await wait_for_var(res)
     del res
     await wait_for_var()
     await asyncio.sleep(0.5)
     gc.collect()
     self.assertEqual(inside, 0)
Exemple #13
0
 async def test_a(self):
     b = var(5)
     res = sum_with_yield(2, b=b)
     self.assertIsInstance(res, Wrapped)
     self.assertEqual(unwrap(res), 7)
     gc.collect()
     self.assertEqual(inside, 1)
     b.set(1)
     print("w1")
     await wait_for_var(res)
     self.assertEqual(unwrap(res), 3)
     self.assertEqual(inside, 1)
     # await res.dispose()
     del b
     gc.collect()
     # weak_res = weakref.ref(res)
     # print(gc.get_referrers(res))
     del res
     gc.collect()
     await wait_for_var()
     await asyncio.sleep(0.5)
     self.assertEqual(inside, 0)
     print("finished)")
Exemple #14
0
 async def test_var_val_positional(self):
     a = var(2)
     res = my_sum(a, 5)
     await wait_for_var(res)
     self.assertIsInstance(res, Wrapped)
     self.assertEqual(unwrap(res), 7)
Exemple #15
0
 async def test_var_val_keyword(self):
     a = var(2)
     res = await async_sum(a=a, b=5)
     self.assertIsInstance(res, Wrapped)
     self.assertEqual(unwrap(res), 7)
Exemple #16
0
 def dump_state(self):
     return dict(
         #            min=self._min,
         #            max=self._max,
         #            step=self._step,
         value=unwrap(self._var))
Exemple #17
0
 def wrapped(self, *args, **kwargs):
     res = unbound_method(unwrap(self), *args, **kwargs)
     for observable in notified:
         get_subnotifier(self, observable).notify_observers()
     return res