(self)
| 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 |
nothing calls this directly
no test coverage detected