Home | History | Annotate | Download | only in test_asyncio
      1 import asyncio
      2 import decimal
      3 import unittest
      4 
      5 
      6 class DecimalContextTest(unittest.TestCase):
      7 
      8     def test_asyncio_task_decimal_context(self):
      9         async def fractions(t, precision, x, y):
     10             with decimal.localcontext() as ctx:
     11                 ctx.prec = precision
     12                 a = decimal.Decimal(x) / decimal.Decimal(y)
     13                 await asyncio.sleep(t)
     14                 b = decimal.Decimal(x) / decimal.Decimal(y ** 2)
     15                 return a, b
     16 
     17         async def main():
     18             r1, r2 = await asyncio.gather(
     19                 fractions(0.1, 3, 1, 3), fractions(0.2, 6, 1, 3))
     20 
     21             return r1, r2
     22 
     23         r1, r2 = asyncio.run(main())
     24 
     25         self.assertEqual(str(r1[0]), '0.333')
     26         self.assertEqual(str(r1[1]), '0.111')
     27 
     28         self.assertEqual(str(r2[0]), '0.333333')
     29         self.assertEqual(str(r2[1]), '0.111111')
     30