diff options
author | Victor Stinner <vstinner@python.org> | 2023-06-14 02:47:01 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-14 02:47:01 (GMT) |
commit | 381a1dc26162e9fcbec48ac2eee5ac8adb806b07 (patch) | |
tree | 147d42e74501497041536b991fd444bde114e6b9 | |
parent | ac7b551bde7a362bc77d2cb84accf755ac30eb09 (diff) | |
download | cpython-381a1dc26162e9fcbec48ac2eee5ac8adb806b07.zip cpython-381a1dc26162e9fcbec48ac2eee5ac8adb806b07.tar.gz cpython-381a1dc26162e9fcbec48ac2eee5ac8adb806b07.tar.bz2 |
gh-105751: test_ctypes.test_numbers uses top level imports (#105762)
Moroever, c_ulonglong and c_bool are always available.
-rw-r--r-- | Lib/test/test_ctypes/test_numbers.py | 40 |
1 files changed, 8 insertions, 32 deletions
diff --git a/Lib/test/test_ctypes/test_numbers.py b/Lib/test/test_ctypes/test_numbers.py index db500e8..aad6af4 100644 --- a/Lib/test/test_ctypes/test_numbers.py +++ b/Lib/test/test_ctypes/test_numbers.py @@ -1,6 +1,10 @@ -from ctypes import * -import unittest import struct +import sys +import unittest +from array import array +from operator import truth +from ctypes import * +from ctypes import _SimpleCData def valid_ranges(*types): # given a sequence of numeric types, collect their _type_ @@ -21,29 +25,11 @@ def valid_ranges(*types): ArgType = type(byref(c_int(0))) -unsigned_types = [c_ubyte, c_ushort, c_uint, c_ulong] +unsigned_types = [c_ubyte, c_ushort, c_uint, c_ulong, c_ulonglong] signed_types = [c_byte, c_short, c_int, c_long, c_longlong] - -bool_types = [] - +bool_types = [c_bool] float_types = [c_double, c_float] -try: - c_ulonglong - c_longlong -except NameError: - pass -else: - unsigned_types.append(c_ulonglong) - signed_types.append(c_longlong) - -try: - c_bool -except NameError: - pass -else: - bool_types.append(c_bool) - unsigned_ranges = valid_ranges(*unsigned_types) signed_ranges = valid_ranges(*signed_types) bool_values = [True, False, 0, 1, -1, 5000, 'test', [], [1]] @@ -71,7 +57,6 @@ class NumberTestCase(unittest.TestCase): self.assertEqual(t(h).value, h) def test_bool_values(self): - from operator import truth for t, v in zip(bool_types, bool_values): self.assertEqual(t(v).value, truth(v)) @@ -161,7 +146,6 @@ class NumberTestCase(unittest.TestCase): (code, align)) def test_int_from_address(self): - from array import array for t in signed_types + unsigned_types: # the array module doesn't support all format codes # (no 'q' or 'Q') @@ -182,7 +166,6 @@ class NumberTestCase(unittest.TestCase): def test_float_from_address(self): - from array import array for t in float_types: a = array(t._type_, [3.14]) v = t.from_address(a.buffer_info()[0]) @@ -193,9 +176,6 @@ class NumberTestCase(unittest.TestCase): self.assertIs(type(v), t) def test_char_from_address(self): - from ctypes import c_char - from array import array - a = array('b', [0]) a[0] = ord('x') v = c_char.from_address(a.buffer_info()[0]) @@ -208,8 +188,6 @@ class NumberTestCase(unittest.TestCase): # array does not support c_bool / 't' @unittest.skip('test disabled') def test_bool_from_address(self): - from ctypes import c_bool - from array import array a = array(c_bool._type_, [True]) v = t.from_address(a.buffer_info()[0]) self.assertEqual(v.value, a[0]) @@ -225,7 +203,6 @@ class NumberTestCase(unittest.TestCase): self.assertRaises(TypeError, c_int, c_long(42)) def test_float_overflow(self): - import sys big_int = int(sys.float_info.max) * 2 for t in float_types + [c_longdouble]: self.assertRaises(OverflowError, t, big_int) @@ -238,7 +215,6 @@ class NumberTestCase(unittest.TestCase): def test_perf(self): check_perf() -from ctypes import _SimpleCData class c_int_S(_SimpleCData): _type_ = "i" __slots__ = [] |