summaryrefslogtreecommitdiff
path: root/Lib/test/_test_multiprocessing.py
diff options
context:
space:
mode:
authorGareth Rees <gdr@garethrees.org>2017-07-21 11:35:33 +0100
committerAntoine Pitrou <pitrou@free.fr>2017-07-21 12:35:33 +0200
commit3913bad4957ac30e58a7ffe9279333ad176a8eea (patch)
tree2c6e360c1bf3571401f33232e85609e2316c44d4 /Lib/test/_test_multiprocessing.py
parent7c5798ebfa9b822d6cedf1fc8c034f6ea90644dc (diff)
downloadcpython-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.py17
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)
#
#