diff options
author | Gareth Rees <gdr@garethrees.org> | 2017-07-21 11:35:33 +0100 |
---|---|---|
committer | Antoine Pitrou <pitrou@free.fr> | 2017-07-21 12:35:33 +0200 |
commit | 3913bad4957ac30e58a7ffe9279333ad176a8eea (patch) | |
tree | 2c6e360c1bf3571401f33232e85609e2316c44d4 /Lib/test/_test_multiprocessing.py | |
parent | 7c5798ebfa9b822d6cedf1fc8c034f6ea90644dc (diff) | |
download | cpython-git-3913bad4957ac30e58a7ffe9279333ad176a8eea.tar.gz |
bpo-19896: Add typecodes 'q' and 'Q' to multiprocessing.sharedctypes (#2741)
* bpo-19896: Add typcodes 'q' and 'Q' to multiprocessing.sharedctypes. Patch by Antony Lee.
* Add NEWS entry.
* Slightly tweak NEWS entry
Make it clear this is more of a fix rather than a new feature.
Diffstat (limited to 'Lib/test/_test_multiprocessing.py')
-rw-r--r-- | Lib/test/_test_multiprocessing.py | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py index 0515730d14..9ef44a0e40 100644 --- a/Lib/test/_test_multiprocessing.py +++ b/Lib/test/_test_multiprocessing.py @@ -106,7 +106,7 @@ PRELOAD = ['__main__', 'test.test_multiprocessing_forkserver'] # try: - from ctypes import Structure, c_int, c_double + from ctypes import Structure, c_int, c_double, c_longlong except ImportError: Structure = object c_int = c_double = None @@ -1637,6 +1637,7 @@ class _TestValue(BaseTestCase): ('i', 4343, 24234), ('d', 3.625, -4.25), ('h', -232, 234), + ('q', 2 ** 33, 2 ** 34), ('c', latin('x'), latin('y')) ] @@ -3179,7 +3180,8 @@ class _TestHeap(BaseTestCase): class _Foo(Structure): _fields_ = [ ('x', c_int), - ('y', c_double) + ('y', c_double), + ('z', c_longlong,) ] class _TestSharedCTypes(BaseTestCase): @@ -3191,9 +3193,10 @@ class _TestSharedCTypes(BaseTestCase): self.skipTest("requires multiprocessing.sharedctypes") @classmethod - def _double(cls, x, y, foo, arr, string): + def _double(cls, x, y, z, foo, arr, string): x.value *= 2 y.value *= 2 + z.value *= 2 foo.x *= 2 foo.y *= 2 string.value *= 2 @@ -3203,18 +3206,20 @@ class _TestSharedCTypes(BaseTestCase): def test_sharedctypes(self, lock=False): x = Value('i', 7, lock=lock) y = Value(c_double, 1.0/3.0, lock=lock) + z = Value(c_longlong, 2 ** 33, lock=lock) foo = Value(_Foo, 3, 2, lock=lock) arr = self.Array('d', list(range(10)), lock=lock) string = self.Array('c', 20, lock=lock) string.value = latin('hello') - p = self.Process(target=self._double, args=(x, y, foo, arr, string)) + p = self.Process(target=self._double, args=(x, y, z, foo, arr, string)) p.daemon = True p.start() p.join() self.assertEqual(x.value, 14) self.assertAlmostEqual(y.value, 2.0/3.0) + self.assertEqual(z.value, 2 ** 34) self.assertEqual(foo.x, 6) self.assertAlmostEqual(foo.y, 4.0) for i in range(10): @@ -3225,12 +3230,14 @@ class _TestSharedCTypes(BaseTestCase): self.test_sharedctypes(lock=True) def test_copy(self): - foo = _Foo(2, 5.0) + foo = _Foo(2, 5.0, 2 ** 33) bar = copy(foo) foo.x = 0 foo.y = 0 + foo.z = 0 self.assertEqual(bar.x, 2) self.assertAlmostEqual(bar.y, 5.0) + self.assertEqual(bar.z, 2 ** 33) # # |