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

Method test_memoryview_struct_module

Lib/test/test_buffer.py:2536–2590  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

2534 check(memoryview(a), vsize(base_struct + 3 * per_dim))
2535
2536 def test_memoryview_struct_module(self):
2537
2538 class INT(object):
2539 def __init__(self, val):
2540 self.val = val
2541 def __int__(self):
2542 return self.val
2543
2544 class IDX(object):
2545 def __init__(self, val):
2546 self.val = val
2547 def __index__(self):
2548 return self.val
2549
2550 def f(): return 7
2551
2552 values = [INT(9), IDX(9),
2553 2.2+3j, Decimal("-21.1"), 12.2, Fraction(5, 2),
2554 [1,2,3], {4,5,6}, {7:8}, (), (9,),
2555 True, False, None, Ellipsis,
2556 b'a', b'abc', bytearray(b'a'), bytearray(b'abc'),
2557 'a', 'abc', r'a', r'abc',
2558 f, lambda x: x]
2559
2560 for fmt, items, item in iter_format(10, 'memoryview'):
2561 ex = ndarray(items, shape=[10], format=fmt, flags=ND_WRITABLE)
2562 nd = ndarray(items, shape=[10], format=fmt, flags=ND_WRITABLE)
2563 m = memoryview(ex)
2564
2565 struct.pack_into(fmt, nd, 0, item)
2566 m[0] = item
2567 self.assertEqual(m[0], nd[0])
2568
2569 itemsize = struct.calcsize(fmt)
2570 if 'P' in fmt:
2571 continue
2572
2573 for v in values:
2574 struct_err = None
2575 try:
2576 struct.pack_into(fmt, nd, itemsize, v)
2577 except struct.error:
2578 struct_err = struct.error
2579
2580 mv_err = None
2581 try:
2582 m[1] = v
2583 except (TypeError, ValueError) as e:
2584 mv_err = e.__class__
2585
2586 if struct_err or mv_err:
2587 self.assertIsNot(struct_err, None)
2588 self.assertIsNot(mv_err, None)
2589 else:
2590 self.assertEqual(m[1], nd[1])
2591
2592 def test_memoryview_cast_zero_strides(self):
2593 # Casts are undefined if strides contains zeros. These arrays are

Callers

nothing calls this directly

Calls 7

DecimalClass · 0.90
FractionClass · 0.90
INTClass · 0.85
iter_formatFunction · 0.85
assertIsNotMethod · 0.80
IDXClass · 0.70
assertEqualMethod · 0.45

Tested by

no test coverage detected