MCPcopy Index your code
hub / github.com/python/cpython / IntTester

Class IntTester

Lib/test/test_struct.py:188–331  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

186 import binascii
187
188 class IntTester(unittest.TestCase):
189 def __init__(self, format):
190 super(IntTester, self).__init__(methodName='test_one')
191 self.format = format
192 self.code = format[-1]
193 self.byteorder = format[:-1]
194 if not self.byteorder in byteorders:
195 raise ValueError("unrecognized packing byteorder: %s" %
196 self.byteorder)
197 self.bytesize = struct.calcsize(format)
198 self.bitsize = self.bytesize * 8
199 if self.code in tuple('bhilqn'):
200 self.signed = True
201 self.min_value = -(2**(self.bitsize-1))
202 self.max_value = 2**(self.bitsize-1) - 1
203 elif self.code in tuple('BHILQN'):
204 self.signed = False
205 self.min_value = 0
206 self.max_value = 2**self.bitsize - 1
207 else:
208 raise ValueError("unrecognized format code: %s" %
209 self.code)
210
211 def test_one(self, x, pack=struct.pack,
212 unpack=struct.unpack,
213 unhexlify=binascii.unhexlify):
214
215 format = self.format
216 if self.min_value <= x <= self.max_value:
217 expected = x
218 if self.signed and x < 0:
219 expected += 1 << self.bitsize
220 self.assertGreaterEqual(expected, 0)
221 expected = '%x' % expected
222 if len(expected) & 1:
223 expected = "0" + expected
224 expected = expected.encode('ascii')
225 expected = unhexlify(expected)
226 expected = (b"\x00" * (self.bytesize - len(expected)) +
227 expected)
228 if (self.byteorder == '<' or
229 self.byteorder in ('', '@', '=') and not ISBIGENDIAN):
230 expected = string_reverse(expected)
231 self.assertEqual(len(expected), self.bytesize)
232
233 # Pack work?
234 got = pack(format, x)
235 self.assertEqual(got, expected)
236
237 # Unpack work?
238 retrieved = unpack(format, got)[0]
239 self.assertEqual(x, retrieved)
240
241 # Adding any byte should cause a "too big" error.
242 self.assertRaises((struct.error, TypeError), unpack, format,
243 b'\x01' + got)
244 else:
245 # x is out of range -- verify pack realizes that.

Callers 1

test_integersMethod · 0.85

Calls

no outgoing calls

Tested by 1

test_integersMethod · 0.68

Used in the wild real call sites across dependent graphs

searching dependent graphs…