Ejemplo n.º 1
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)
Ejemplo n.º 2
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)
Ejemplo n.º 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
Ejemplo n.º 4
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
Ejemplo n.º 5
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)
Ejemplo n.º 6
0
 async def setUp(self):
     global called_times2
     global some_observable
     self.var1 = var()
     some_observable @= 3
     await wait_for_var()
     called_times2 = 0
Ejemplo n.º 7
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)
Ejemplo n.º 8
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)
Ejemplo n.º 9
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))
Ejemplo n.º 10
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)
Ejemplo n.º 11
0
    async def test_iterable(self):
        global called_times2
        called_times2 = 0
        a = var(55)
        res = inc_called_times2(a, ignored_arg=[self.observable1, self.observable2])
        await wait_for_var(res)
        self.assertEqual(55, res)
        self.assertEqual(1, called_times2)

        self.observable1.__notifier__.notify_observers()
        await wait_for_var(res)
        self.assertEqual(55, res)
        self.assertEqual(2, called_times2)

        self.observable2.__notifier__.notify_observers()
        await wait_for_var(res)
        self.assertEqual(55, res)
        self.assertEqual(3, called_times2)
Ejemplo n.º 12
0
def synced_vlines(axes: Union[str, Sequence[str]],
                  x_var=var(),
                  link_x_axes=True):
    def vline_and_click(axes):
        fig = unwrap(axes).figure

        def onclick(event):
            if event.dblclick:
                x_var.set(int(event.xdata))

        @reactive_finalizable
        def add_onclick():
            cid = fig.canvas.mpl_connect('button_press_event', onclick)
            yield
            fig.canvas.mpl_disconnect(cid)

        vline = volatile(axes.axvline(x_var, color="green"))
        onclick_holder = volatile(add_onclick())
        return vline, onclick_holder

    link_mpl_axes(axes, 'x')
    return [vline_and_click(vis.axes(a)) for a in axes]
Ejemplo n.º 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)")
Ejemplo n.º 14
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)
Ejemplo n.º 15
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)
Ejemplo n.º 16
0
 async def setUp(self):
     self.observable1 = var()
     self.observable2 = var()
Ejemplo n.º 17
0
#     async def test_vars(self):
#         a = var(None)
#         b = var(None)
#         res = none_proof_sum(a, b)
#         await wait_for_var(res)
#         self.assertIsNone(raw(res))
#         b.set(2)
#         await wait_for_var(res)
#         self.assertIsNone(raw(res))
#         a.set(3)
#         await wait_for_var(res)
#         self.assertEqual(raw(res), 5)


called_times = 0
some_observable = var()
some_observable2 = var()


@reactive(other_deps=[some_observable])
def inc_called_times(a):
    global called_times
    called_times += 1
    return a


class OtherDeps(asynctest.TestCase):
    async def test_vars(self):
        global called_times
        called_times = 0
        a = var(None)