File: test_newmemoryview.py

package info (click to toggle)
pypy3 7.3.19%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 212,236 kB
  • sloc: python: 2,098,316; ansic: 540,565; sh: 21,462; asm: 14,419; cpp: 4,451; makefile: 4,209; objc: 761; xml: 530; exp: 499; javascript: 314; pascal: 244; lisp: 45; csh: 12; awk: 4
file content (68 lines) | stat: -rw-r--r-- 2,429 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68


class AppTestMinimal:
    spaceconfig = dict(usemodules=['__pypy__'])

    def test_newmemoryview(self):
        from __pypy__ import newmemoryview
        b = bytearray(12)
        # The format can be anything, we only verify shape, strides, and itemsize
        m = newmemoryview(memoryview(b), itemsize=2, format='T{<h:a}', shape=(2, 3))
        assert m.strides == (6, 2)
        m = newmemoryview(memoryview(b), 2, 'T{<h:a}', shape=(2, 3),
                          strides=(6, 2))
        assert m.strides == (6, 2)
        assert m.format == 'T{<h:a}'
        assert m.itemsize == 2

    def test_empty(self):
        from __pypy__ import newmemoryview
        b = bytearray(0)
        m = newmemoryview(memoryview(b), 0, 'B', (42,))
        assert m.tobytes() == b''
        assert m.shape == (42,)
        assert m.strides == (0,)
        with raises(ValueError):
            newmemoryview(memoryview(b), 0, 'B')

    def test_strided1d(self):
        from __pypy__ import newmemoryview
        b = bytearray(b'abcdefghijkl')
        m = newmemoryview(memoryview(b), itemsize=1, format='B', shape=[6], strides=[2])
        assert m.strides == (2,)
        assert m.shape == (6,)
        assert m.tobytes() == b'acegik'
        assert m.tolist() == [ord('a'), ord('c'), ord('e'),
                              ord('g'), ord('i'), ord('k')]

    def test_strided2d(self):
        from __pypy__ import newmemoryview
        b = bytearray(b'abcdefghijkl' * 2)
        m = newmemoryview(memoryview(b), itemsize=1, format='B', shape=[6, 2], strides=[4, 2])
        assert m.strides == (4, 2)
        assert m.shape == (6, 2)
        assert m.tobytes() == b'acegik' * 2
        assert m.tolist() == [[ord('a'), ord('c')], [ord('e'),
                              ord('g')], [ord('i'), ord('k')]] * 2

    def test_bufferable(self):
        from __pypy__ import bufferable, newmemoryview
        class B(bufferable.bufferable):
            def __init__(self):
                self.data = bytearray(b'abc')

            def __buffer__(self, flags):
                return newmemoryview(memoryview(self.data), 1, 'B')


        obj = B()
        buf = memoryview(obj)
        v = obj.data[2]
        assert buf[2] == v

    def test_nbytes(self):
        from __pypy__ import newmemoryview
        b = bytearray(b'abcdefgh')
        m = newmemoryview(memoryview(b), 8, '<d')
        print(m.nbytes)
        assert m.nbytes == 8